ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Método de Mínimos Cuadrados


Enviado por   •  5 de Febrero de 2014  •  1.309 Palabras (6 Páginas)  •  374 Visitas

Página 1 de 6

HISTORIA

Carl Friedrich Gauss

[1777- 1855]

El método de Mínimos Cuadrados tiene una larga historia que se remonta a principios del siglo XIX.

El método de mínimos cuadrados tiene una larga historia que se remonta a los principios del siglo XIX. En Junio de 1801, Zach, un astrónomo que Gauss había conocido dos años antes, publicaba las posiciones orbitales del cuerpo celeste Ceres, un nuevo “pequeño planeta” descubierto por el astrónomo italiano G. Piazzi en ese mismo año. Desafortunadamente, Piazzi sólo había podido observar 9 grados de su órbita antes de que este cuerpo desapareciese tras de el sol. Zach publicó varias predicciones de su posición incluyendo una de Gauss que difería notablemente de las demás. Cuando Ceres fue redescubierto por Zach en Diciembre de 1801 estaba casi exactamente en donde Gauss había predicho. Aunque todavía no había revelado su método, Gauss había descubierto el método de mínimos cuadrados. En un trabajo brillante logró calcular la órbita de Ceres a partir de un número reducido de observaciones, de hecho, el método de Gauss requiere sólo un mínimo de 3 observaciones y todavía es, en esencia, el utilizado en la actualidad para calcular las órbitas.

EJEMPLO:

Ejemplo:

Supongamos que tenemos 4 pares de datos y que queremos ajustarlos al polinomio de segundo grado y=a0+a1x+a2x2

x x0 x1 x2 x3

y y0 y1 y2 y3

Las ecuaciones (1) se escribirán

agrupando términos

Volvamos al sistema de n+1 ecuaciones con n+1 incógnitas. Introduzcamos las expresiones

(2)

Se obtiene el siguiente sistema de n+1 ecuaciones con n+1 incógnitas

(3)

Si todos los puntos son distintos, el sistema de ecuaciones tiene una solución única.

Para resolver el sistema de ecuaciones se puede emplear alguno de los varios procedimientos existentes. El método empleado en este programa es el método de iteración. Ya que la matriz del sistema de ecuaciones es positiva, para este sistema se emplea el procedimiento de Seidel.

El procedimiento de Seidel

Finalmente, nos queda la tarea de resolver el sistema de n ecuaciones con n incógnitas (n es el grado del polinomio). El procedimiento empleando es el de Seidel. Explicaremos este procedimiento mediante un ejemplo. Sea el sistema lineal de tres ecuaciones

Se despeja x1 en la primera ecuación, x2 en la segunda y x3 en la tercera. Reduciéndose el sistema a una forma conveniente para aplicar el procedimiento de iteración o de aproximaciones sucesivas.

(4)

Como podemos apreciar, las diagonales de la matriz de los coeficientes de las x son ceros.

Tomemos como aproximación inicial

La primera aproximación se escribe

Se introduce la primera aproximación de x0 en la segunda ecuación. Se introduce la primera aproximación de x0 y de x1 en la tercera ecuación, y así sucesivamente. De este modo el método de Seidel ofrece una mejor convergencia que la iteración simple.

La segunda aproximación es

En general el método se Seidel lo podemos escribir del siguiente modo.

En todo proceso iterativo, es preciso establecer la condición de finalización, no puede correr el proceso de forma indefinida. El error relativo entre dos iteraciones consecutivos k y k+1 de los valores que toman cada una de las incógnitas xi deberá ser menor que un cierto valor (por ejemplo, una milésima).

Veamos ahora el código

En primer lugar, transformamos la matriz m de los coeficientes del sistema de ecuaciones (3) y el vector t de los términos independientes, para expresarlo de la forma (4) adecuada para la iteración. Para ello, se divide los elementos de cada fila i por el elemento correspondiente de la diagonal principal m[i][i] y se cambia de signo. Los elementos de la diagonal m[i][i] se hacen cero.

for(int i=0; i<=grado; i++){

aux=m[i][i];

for(int j=0; j<=grado; j++){

m[i][j]=-m[i][j]/aux;

}

t[i]=t[i]/aux;

m[i][i]=0.0;

}

Se elige la aproximación inicial, y se guardan en el array p de las incógnitas

p[0]=t[0];

for(int i=1; i<=grado; i++){

p[i]=0.0;

}

Se calcula siguiente aproximación y se guarda en el array a de las incógnitas

for(int i=0; i<=grado; i++){

a[i]=t[i];

for(int j=0; j<i; j++){

a[i]+=m[i][j]*a[j];

}

for(int j=i+1; j<=grado; j++){

a[i]+=m[i][j]*p[j];

}

}

La iteración actual a es la iteración anterior p en el siguiente cálculo

for(int i=0; i<=grado; i++){

p[i]=a[i];

}

El proceso se repite, hasta que se cumple la condición de finalización.Para ello, calculamos el error relativo de cada una de las incógnitas. Guardamos en la variable maximo el mayor de los

...

Descargar como (para miembros actualizados)  txt (7.5 Kb)  
Leer 5 páginas más »
Disponible sólo en Clubensayos.com