Mecatrónica
Métodos Numéricos
Alumnos: Francisco Javier Tavares Verdín Juan Arturo Méndez Rivera Francisco Medina García
Profesor: M.C. Luis Ernesto Anaya Tiscareño
5º. “B”
Ajuste de curvas
Marco Teórico
Supongamos que tenemos un conjunto de puntos que mostramos en la siguiente gráfica
De los puntos mostrados nos podemos dar cuenta que parece tener la forma de un polinomio de segundo grado de la forma:
Esta Esta ecua ecuació ción n (1) (1) pued puede e usar usarse se para para repr repres esen enta tarr el conju conjunt nto o de valor alores es obte btenido nidos s exper xperim imen enta talm lme ente nte para ara la cual cual debem ebemos os determinar los valores de a 1, a 2, a 3, etc. Para determinar estos valores utilizamos el siguiente procedimiento: 1. Establec lecer el crite iterio rio para determinar la ecuación que represente represente a los valores (obtenidos experimentalmente). 2. Escrib Escribir ir la ecuaci ecuación ón que expres expresa a el error error o desvia desviació ción n entre entre el valor observado y los valores dados por la ecuación. 3. Habiendo Habiendo obtenido obtenido la ecuación ecuación del error, minimizar minimizar dicho error error..
EVALU EVALUACIÓN ACIÓN DEL ERROR ERRO R Si consideramos las parejas de datos, como se muestra en la gráfica
donde:
d = distancia = Yobservada - Y obtenida por la ecuación Yobservada = Valor obtenido experimentalmente. Y obte obteni nida da por por la ecua ecuaci ción ón = valo valorr de la func funció ión n eval evalua uada da en cualquier valor X Observando Observando la gráfica, gráfica, parece parece que esta distancia distancia se puede usar para repr represe esenta ntarr el error, error, pero pero habrá habrá distan distancia cias s positi positivas vas y negati negativas vas,, (como se puede observar la distancia d1 es positiva y la distancia d2 es negativa) de modo que el error promedio para los puntos como los most mostra rado dos s será será pequ pequeñ eño o aunq aunque ue los los erro errore res s indi indivi vidu dual ales es sean sean grandes. Esta dificultad podría ser resuelta usando el valor absoluto de las distancias, sin embargo al derivar la función del valor absoluto se generan ciertos problemas. La solu soluci ción ón podr podría ía ser ser defi defini nirr el err error como como el cuad cuadra rado do de la dist distan anci cia, a, esto esto elimi elimina na la difi dificu cult ltad ad del del sign signo. o. Por esta esta razón razón el método se llama: Método de Mínimos Cuadrados.
en donde S es la suma de los cuadrados de las diferencias entre el valor calculado y el valor observado y por lo tanto es el valor que se debe minimizar
Siendo el caso de que la curva supuesta es una ecuación de segundo grado, se tiene la ecuación:
Para ara mini minimi miza zarr la func funció ión n ante anterio rior, r, deriv derivan ando do par parcialm cialmen ente te con con respecto a a1, a2 y a3 e igualando a cero:
. (Obsérvese que las variables son a 1, a 2 y a 3, mientras que Yi, X i son constantes) Las ecuaciones se pueden expresar de acuerdo como sigue:
Lo anterior lo podemos expresar en forma matricial:
La fórmula general para un polinomio de grado n en donde hay m parejas de datos es:
Como se puede observar el problema consiste en lo siguiente: 1. Obtener Obtener la la matriz matriz de coefici coeficientes entes.. 2. Resolv Resolver er el sistema sistema de ecuaciones ecuaciones result resultantes antes.. Recordando Recordando que: 1. 2.
Si n es el grado del polinomio, hay n+1 valores de la matriz de coeficientes y n+1 ecuaciones. El máximo exponente de X en los términos de la sumatoria de 2n puede ser que los datos no representen un polinomio de 2o grado sino que representen uno de 3o y 4o grados.
El ajuste de curvas es un procedimiento de tanteo y error, si una curva no representa los datos, entonces se intenta con un polinomio de grado superior.
Código en Matlab
x=sym( x=sym('x' 'x') ) ;decla ;declara ra varia variable ble simb simbóli ólica ca pn=input('Escribe pn=input('Escribe mínimo dos puntos conocidos en la curva'); num(1,1)=input('Primer num(1,1)=input('Primer numero X: '); num(1,2)=input('Primer num(1,2)=input('Primer numero Y: '); MatAux(1)=1; for i=2:pn-1 num(i,1)=input('Próximo numero X: '); num(i,2)=input('Próximo numero Y: '); MatAux(i)=1; MatAuxB(i)=num(i,2); end num(pn,1)=input('Numero Final X: '); num(pn,2)=input('Numero Final Y: '); MatAux(pn)=1; n=input('Grado n=input('Grado del polinomio X deseado: '); MatAux=MatAux'; MatAuxB=num(:,2); MatAx(1)=pn; for i=1:n+1 MATB(i)=sum(MatAuxB); MatAuxB=MatAuxB.*num(:,1); end for i=1:n*2 MatAux=MatAux.*num(:,1); val=sum(MatAux); MatAx(i+1)=val; end for i=1:n+1 for j=1:n+1 MATA(i,j)=MatAx(i+j-1); end end MATB=MATB'; warning off MATLAB:nearlySingularMa MATLAB:nearlySingularMatrix trix X= MATA \ MATB; figure scatter(num(:,1),num(:,2)) Y=0; for i=1:length(X) i=1:length(X) a=X(i); Y=Y+x^(i-1)*a; end Y X for i=0:max(num(:,1)) i=0:max(num(:,1)) x=i; ya(i+1)=eval(Y); end w=0:max(num(:,1)); hold on plot(w,ya)
Observaciones
El programa en Matlab es realmente más fácil que en C++, debido a que es mas fácil trabajar las operaciones de matrices en Matlab.
Conclusión Es mas rápido y fácil ajustar las curvas en el programa e incluso se pueden ver las graficas para comparar los resultados medidos y los resultados procesados por el programa.