Exemple #1
0
//constructor
//note to self: apparetly you can save functions as a array...
    public olsf(vector x, vector y, vector dy, Func <double, double>[] f)
    {
        int    len = x.size;
        int    m   = f.Length;
        vector b   = new vector(len);
        matrix A   = new matrix(len, m);

        for (int n = 0; n < len; n++)
        {
            b[n] = y[n] / dy[n];
            for (int n1 = 0; n1 < m; n1++)
            {
                A[n, n1] = f[n1](x[n]) / dy[n];
            }    //end for
        }        //end for
        gram_s gr = new gram_s(A);

        c = gr.solve(b);

        //coverient matrix:
        gram_s gr1 = new gram_s(A.T * A);

        Sigma = gr1.inverse();
        vector dc1 = new vector(m);

        for (int n1 = 0; n1 < m; n1++)
        {
            dc1[n1] = Sqrt(Sigma[n1, n1]);
        } //end for
        dc = dc1;
    }     //end constructor...
Exemple #2
0
    static int Main()
    {
        //generating random matrix:
        matrix A = randmatrix(4, 4);

        //fortorize into QR:
        gram_s a1 = new gram_s(A);

        //calculate inverse:
        matrix B = a1.inverse();
        //AB:
        matrix ab = A * B;

        WriteLine("Part B");
        WriteLine("Random matrix A:");
        for (int i = 0; i < A.size1; i++)
        {
            Write("\n");
            for (int j = 0; j < A.size2; j++)
            {
                Write($"{A[i,j]}	");
            }
        }
        Write("\n \n");
        WriteLine("Factorize A into QR, give Q:");
        for (int i = 0; i < a1.Q.size1; i++)
        {
            Write("\n");
            for (int j = 0; j < a1.Q.size2; j++)
            {
                Write($"{a1.Q[i,j]}	");
            }
        }
        Write("\n \n");
        WriteLine("and R:");
        for (int i = 0; i < a1.R.size1; i++)
        {
            Write("\n");
            for (int j = 0; j < a1.R.size2; j++)
            {
                Write($"{a1.R[i,j]}	");
            }
        }
        Write("\n \n");
        WriteLine("The inverse B:");
        for (int i = 0; i < B.size1; i++)
        {
            Write("\n");
            for (int j = 0; j < B.size2; j++)
            {
                Write($"{B[i,j]}	");
            }
        }
        Write("\n \n");
        WriteLine("AB:");
        for (int i = 0; i < ab.size1; i++)
        {
            Write("\n");
            for (int j = 0; j < ab.size2; j++)
            {
                Write($"{ab[i,j]}	");
            }
        }
        Write("\n \n");



        return(0);
    }