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; }
static void Main(string[] args) { Matrix matrix=new Matrix(); double[,] A = new double[,] { { 3, 0.6,7.5,-3 }, {0.4, 0.5, 4,-8.5}, {0.3,-1,1,5.2}, {1,0.5,-0.1,0.5} }; double [,] B=new double[,] { {2,2},{1,4}}; int m = 4; int n = 4; //double[,] D=matrix.TransposeMatrix(A, m, n); //double[,] C = matrix.MultiplyMatrix(A, B, 2, 2, 2, 2); double[,] U; double[,] L; //matrix.LuCompozition(A, n, m, out L, out U); //double det =matrix.DetCounter(A, m, n); // Console.WriteLine(det); double[,] C=matrix.InverseMatrix(A, m, n); Console.ReadKey(); }