コード例 #1
0
int main (int argc, char ** argv)
{
    while (true)
    {
        break;
        double **a = new double *[2];
        a[1] = new double [2];
        a[0] = new double [2];
        a[0][0] = a[0][1] = a[1][0] = a[1][1] = 1.5;
        Numeric *mat = new Matrix (2, 2, a);
        Expression *expr = new Expression ("a + 1");
        ExpressionParser *parser = new ExpressionParser (expr);
        parser->SetVariable("a", mat);
        CalculationResult res = parser->ParseExpression ();
        cout << res.statusInformation << endl;
        delete[] a[0];
        delete[] a[1];
        delete[] a;
        delete mat;
        delete expr;
        delete parser;
    }
    while (true)
    {
        break;
        Expression *equation = new Expression ("x - 5");
        ExpressionParser *parser = new ExpressionParser (equation);
        EquationSolver *solver = new EquationSolver (equation, parser, "x");
        Expression *dEquation = new Expression ("1");
        CalculationResult result = solver->SolveBySecant (0, 1);
        Double *re = static_cast <Double *> (result.numeric.get ());
        cout <<re->GetValue () << endl;
        delete equation;
        delete parser;
        delete solver;
        delete dEquation;
    }
    while (true)
    {
        break;
        double a[4][4] = { {1, -1, 2, -1}, {2, -2, 3, -3}, {1, 1, 1, 0}, {1, -1, 4, 3} };
        vector < double > *b = new vector < double > { -8, -20, -2, 4 };
        double **eles = new double *[4];
        for (int i = 0;i < 4;i++)
            eles[i] = new double [4];
        for (int i = 0;i < 4;i++)
            for (int j = 0;j < 4;j++)
                eles[i][j] = a[i][j];
        Matrix *mat = new Matrix (4, 4, eles);
        CalculationResult res = EquationSolver :: SolveByGauss (mat, b);
        Array < double > *ans = static_cast < Array < double > * > (res.numeric.get ());
        vector < double > anss = ans->GetCopy ();
        for (int i = 0;i < anss.size ();i++)
            cout << anss[i] << ' ';
        cout << endl;
        for (int i = 0;i < 4;i++)
            delete[] eles[i];
        delete[] eles;
        delete mat;
        delete b;
    }
    while (true)
    {
        double a[3][3] = { {25, 15, -5}, {15, 18, 0}, {-5, 0, 11} };
        vector < double > *b = new vector < double > { 35, 33, 6 };
        double **eles = new double *[3];
        for (int i = 0;i < 3;i++)
            eles[i] = new double [3];
        for (int i = 0;i < 3;i++)
            for (int j = 0;j < 3;j++)
                eles[i][j] = a[i][j];
        Matrix *mat = new Matrix (3, 3, eles);
        CalculationResult res = EquationSolver :: SolveByCholesky (mat, b);
        Array < double > *ans = static_cast < Array < double > * > (res.numeric.get ());
        vector < double > anss = ans->GetCopy ();
        for (int i = 0;i < anss.size ();i++)
            cout << anss[i] << ' ';
        cout << endl;
        for (int i = 0;i < 3;i++)
            delete[] eles[i];
        delete[] eles;
        delete mat;
        delete b;
    }
    return 0;
}