public static double[] SolEcLin(double[,] matriz)
int n = matriz.GetLength(0);
int m = matriz.GetLength(1);
for (int paso = 0; paso < n; paso++)
double noCero = matriz[paso, paso];
for (int fila = paso; fila < n; fila++)
if (matriz[fila, paso] != 0)
noCero = matriz[fila, paso];
for (int col = paso; col < m; col++)
tmp = matriz[noCeroFila, col];
matriz[noCeroFila, col] = matriz[paso, col];
for (int col = paso; col < m; col++)
matriz[paso,col] /= noCero;
for (int fila = 0; fila < n; fila++)
double c = -matriz[fila, paso];
for (int col = paso; col < m; col++)
matriz[fila, col] += c * matriz[paso, col];
double[] solucion = new double[n];
for (int i = 0; i < n; i++)
solucion[i] = matriz[i, m-1];
static public double f(int i, double x)
static void Main(string[] args)
double[] X = {-5.94, -3.89, -3.56, -1.49, -2.01, -1.0, 1.07, 0.77, 2.86, 3.69, 3.81, 3.73, 6.12, 6.44, 6.61, 7.0, 8.2, 9.83, 11.33, 11.5, 11.49, 13.16, 14.44, 15.32, 16.67, 17.52, 16.5, 18.3, 19.01, 19.77};
double[] Y = {4.34, 5.61, 5.06, 0.59, 0.98, 1.29, 6.01, 5.47, 5.3, 3.47, 3.46, 2.21, 3.33, 5.08, 4.92, 5.68, 7.86, 4.46, 4.1, 5.48, 5.53, 10.41, 12.85, 13.43, 12.77, 14.6, 13.15, 17.68, 23.28, 26.68};
int cantDat = X.GetLength(0);
double[,] matriz = new double[3,4];
for(int fila=0; fila<3; fila++){
for(int columna=0; columna<3; columna++)
matriz[fila,columna] = 0;
for(int k=0; k<cantDat; k++)
matriz[fila,columna] += f(fila,X[k])*f(columna,X[k]);
for(int fila=0; fila<3; fila++)
for(int k=0; k<cantDat; k++)
matriz[fila,3] += f(fila,X[k])*Y[k];
double[] solucion = SolEcLin(matriz);
Console.WriteLine("------------------------------------------");
Console.WriteLine("Punto A = " + solucion[0]);
Console.WriteLine("Punto B = " + solucion[1]);
Console.WriteLine("Punto C = " + solucion[2]);
Console.WriteLine("------------------------------------------");