Пример #1
0
 public MATM3(MATM3 m1)
 {
     n  = m1.dim();
     va = new VECM3[n];
     for (int i = 0; i < n; i++)
     {
         va[i] = new VECM3(m1[i]);
     }
 }
Пример #2
0
    public static MATM3 luFact(MATM3 m1)
    {
        int n = m1.dim();

        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                m1[j][i] /= m1[i][i];
            }
            for (int j = i + 1; j < n; j++)
            {
                for (int k = i + 1; k < n; k++)
                {
                    m1[j][k] -= m1[j][i] * m1[i][k];
                }
            }
        }
        return(m1);
    }
Пример #3
0
    public static VECV3 LU_Solve(MATM3 A1, VECV3 b1)
    {
        MATM3 A = new MATM3(A1);

        VECV3 b = new VECV3(b1);
        int   n = A.dim();

        A = luFact(A);

        MATM3 L = new MATM3(n);
        MATM3 U = new MATM3(n);

        for (int i = 1; i < n; i++)
        {
            for (int j = 0; j < i; j++)
            {
                L[i][j] = A[i][j];
            }
        }
        for (int i = 0; i < n; i++)
        {
            L[i][i] = MAT.unit(3);
        }

        for (int i = 0; i < n; i++)
        {
            for (int j = i; j < n; j++)
            {
                U[i][j] = A[i][j];
            }
        }
        VECV3 y = fwdSubs(L, b);
        VECV3 x = bckSubs(U, y);

        return(x);
    }