52
Método de los mínimos cuadrados. Polinomio aproximador Tratamiento de datos Polinomio aproximador La clase PolRegesion . El procedimiento de Seidel Ejercicios Bibliografía Supongamos que hemos medido un conjunto de pares de datos (x i , y i )en una experiencia, por ejemplo, la posición de un móvil en ciertos instantes de tiem Queremos obtener una función y=f(x) que se ajuste lo mejor posible a los valores experimentales. Se pueden ensayar muchas funciones, rectas, polinomios, funcio potenciales o logarítmicas. Una vez establecido la función a ajustar se determinan sus parámetros, en el c polinomio, serán los coeficientes del polinomio de modo que los datos experime se desvíen lo menos posible de la fórmula empírica. La función más sencilla es la función lineal y=ax+bque hemos tratado en la página anterior. El procedimiento de ajustar los datos experimentales a una línea rec denomina regresión lineal Polinomio aproximador Queremos aproximar un polinomio de grado n, a un conjunto de m pares de datos (x i , y i ) de modo que n m . Sea el polinomio P(x)=a 0 +a 1 x+a 2 x 2 +...a n x n Se calcula la cantidad

Método de los mínimos cuadrados

Embed Size (px)

Citation preview

Mtodo de los mnimos cuadrados. Polinomio aproximadorTratamiento de datosPolinomio aproximador La clase PolRegesion. El procedimiento de Seidel Ejercicios Bibliografa

Supongamos que hemos medido un conjunto de pares de datos (xi, yi) en una experiencia, por ejemplo, la posicin de un mvil en ciertos instantes de tiempo. Queremos obtener una funcin y=f(x) que se ajuste lo mejor posible a los valores experimentales. Se pueden ensayar muchas funciones, rectas, polinomios, funciones potenciales o logartmicas. Una vez establecido la funcin a ajustar se determinan sus parmetros, en el caso de un polinomio, sern los coeficientes del polinomio de modo que los datos experimentales se desven lo menos posible de la frmula emprica. La funcin ms sencilla es la funcin lineal y=ax+b que hemos tratado en la pgina anterior. El procedimiento de ajustar los datos experimentales a una lnea recta se denomina regresin lineal

Polinomio aproximadorQueremos aproximar un polinomio de grado n, a un conjunto de m pares de datos (xi, yi) de modo que n m. Sea el polinomio P(x)=a0+a1x+a2x2+...anxn Se calcula la cantidad

Para obtener los valores de los coeficientes del polinomio aproximador se tienen que determinar los valores de los coeficientes a0, a1, a2, ...an de forma que la cantidad S tome un valor mnimo. Hagamos las derivadas parciales de S respecto de a0, a1, a2, ...an iguales a cero

(1) Obtenemos un sistema de n+1 ecuaciones con n+1 incgnitas, a0, a1, a2, ...an Ejemplo: Supongamos que tenemos 4 pares de datos y que queremos ajustarlos al polinomio de segundo grado y=a0+a1x+a2x2 x y x0 y0 x1 y1 x2 y2 x3 y3

Las ecuaciones (1) se escribirn

agrupando trminos

Volvamos al sistema de n+1 ecuaciones con n+1 incgnitas. Introduzcamos las expresiones

(2) Se obtiene el siguiente sistema de n+1 ecuaciones con n+1 incgnitas

(3) Si todos los puntos son distintos, el sistema de ecuaciones tiene una solucin nica. Para resolver el sistema de ecuaciones se puede emplear alguno de los varios procedimientos existentes. El mtodo empleado en este programa es el mtodo de iteracin. Ya que la matriz del sistema de ecuaciones es positiva, para este sistema se emplea el procedimiento de Seidel.

La clase PolRegesion.La clase PolRegresion tiene los siguientes miembros datopublic class PolRegresion { private double[] x; //datos private double[] y; private int nDatos; double[][] m; //matriz de los coeficientes double[] t; //trminos independientes public double[] a; //polinomio a[0]+a[1]x+a[2]x2+... public int grado; //grado del polinomio

El constructor inicializa los miembros, array x, array y que guardan los resultados experimentales y el nmero nDatos de dichos datos. El constructor crea la matriz m, el vector t, y reserva espacio para el array que va a guardar los coeficientes del polinomio a, cuyo grado se guarda en el miembro grado.public PolRegresion(double[] x, double[] y, int grado) { this.x=x; this.y=y; nDatos=x.length; this.grado=grado; t=new double[grado+1]; m=new double[grado+1][grado+1]; a=new double[grado+1]; }

A partir de datos (xi, yi) se tiene que obtener la matriz m cuadrada de los coeficientes (3) de dimensin n (grado+1) y el vector t de dimensin n usando las frmulas (2). La funcin miembro coeficientes calcula los elementos del vector t y de la matriz m.private void coeficientes(){ double[] s=new double[2*grado+1]; double suma; for(int k=0; k