Exemplo n.º 1
0
void check_LU_res(const M1 & m, const M2& lu)
{
    GeneralMatrix l(m.M(), m.N());
    GeneralMatrix u(m.M(), m.N());
    for(int i = 0; i < lu.M(); i++)
    {
        for(int j = 0; j< lu.N(); j++)
        {
            if(i>j)
            {
                l(i, j) = lu(i, j);
                u(i, j) = 0;
            }
            else if(i == j)
            {
                l(i, j) = 1;
                u(i, j) = lu(i, j);
            }
            else
            {
                l(i, j) = 0;
                u(i, j) = lu(i, j);
            }
        }
    }

    bool equal = true;
    GeneralMatrix m1(m.M(), m.N());
    mul(l, u, m1);
    for(int i = 0; i<m.M(); i++)
        for(int j = 0; j< m.N(); j++)
        {
            if(std::abs(m1(i, j) - m(i, j) ) / m(i, j) > 0.1)
            {
                equal = false;
            }
        }
    if(!check_Matrix(m1,m))
    {
        std::cout<<"wrong answer!"<<std::endl;
    }
    else
    {
        std::cout<<"right answer, wahahahaha!"<<std::endl;
    }
}
Exemplo n.º 2
0
bool check_Matrix(const M1 & m1, const M2& m2) {
    bool equal = true;
    for(int i = 0; i<m1.M(); i++)
        for(int j = 0; j< m1.N(); j++)
        {
            if(std::abs(m1(i, j) - m2(i, j) ) / std::abs(m2(i, j)) > 0.1)
            {
                equal = false;
            }
        }
    return equal;
}