示例#1
0
        public double[,] LeastSquares(double[] X, double[] Y, int w,int n)
        {
            A = new double[w + 1,1];
            S=new double[w+1,w+1];
            T=new double[w+1,1];
            double sumaS = 0;
            double sumaT = 0;
            for (int k = 0; k<=w; k++)//w - stopień wielomianu którym aproksymujemy
            {
                for (int i = 0; i <=w; i++)
                {
                    for (int j = 0; j <= n; j++)
                    {
                        sumaS += (Math.Pow(X[j], k+i));
                    }
                    S[i, k] = sumaS;
                }
            }
            for (int k = 0; k < w; k++)
            {
                for (int j = 0; j < n; j++)
                {
                    sumaT += (Math.Pow(X[j], k)*Y[j]);
                }
                T[k, 0] = sumaT;
            }
            Matrix inverseMatrix=new Matrix();
            double[,] sodwr = inverseMatrix.InverseMatrix(S, n, n);
            A = inverseMatrix.MultiplyMatrix(sodwr, T, n, n, n, n);

            return A;
        }