Está en la página 1de 6

AJUSTE POLINOMIAL POR MNIMOS CUADRADOS

Al encontrar un polinomio de aproximacin que pase por los puntos dados en forma
tabular encontramos errores significativos en la informacin; por ejemplo cuando
proviene de medidas fsicas; en estas circunstancias no tiene sentido pasar por un
polinomio de aproximacin por los puntos dados, sino slo cerca de ellos.
No obstante, esto crea un problema, ya que se puede pasar un nmero infinito de
curvas entre los puntos. Para determinar la mejor curva se establece un criterio que la
fije y una metodologa que la determine. El criterio ms comn consiste en pedir que
la suma de las distancias calculadas entre el valor de la funcin que aproxima p(xi) y el
valor de la funcin f(xi) dada en la tabla sea mnima.
| (

) (

) |


Para evitar problemas de derivabilidad ms adelante, se acostumbra utilizar las
distancias di elevadas al cuadrado:
(

) (




Aproximacin polinomial que pasar por entre los puntos.


0
0.5
1
1.5
2
2.5
0 0.5 1 1.5 2 2.5 3 3.5
Si se utiliza
()


Para aproximar a la funcin dada por la tabla, el problema queda como el de minimizar


Para minimizar una funcin de dos variables a0 y a1 el procedimientos es derivar parcialmente
con respecto a cada una de las variables e igualar a cero cada derivada con lo cual se obtiene
un sistema de dos ecuaciones algebraicas con incgnitas a0 y a1.


Derivando obtendremos:

)()

)(

)
Al reacomodar el sistema obtendremos:










CDIGO

% Programa de mnimos cuadrados
clc
a=input('Ingrese los datos de la variable independiente: \n');
b=input('Ingrese los datos de la variable dependiente: \n ');

%Men

op=menu('ESCOGE LA FUNCIN','Polinomio Grado 1','Polinomio
Grado2','Exponencial');


if op==1
%Desarrollo de mnimos con polinomio grado uno
syms x y z
fun1=input('Ingresa la funcin (en trminos de x,z): ');

%Sabemos que la frmula general de Mnimos cuadrados
%p(x)=a0+a1*x

x1=sum(a);
y1=sum(b);
xx=a.^2;
x2=sum(xx);
fx=a.*b;
fx1=sum(fx);
n=length(a);

c=[n,x1;x1,x2];
d=[y1;fx1];
f=inv(c)*d;

x=f(1)
z=f(2)

end

if op==2

%Desarrollo de mnimos polinomio de segundo grado
syms x y w z
fun1=input('Ingresa la funcin (en trminos de x,w,z): ');

x11=sum(a);
y11=sum(b);
xx1=a.^2;
x22=sum(xx);
fx1=a.*b;
fx11=sum(fx1);
xxx=a.^3;
x33=sum(xxx);
xxxx=a.^4;
x44=sum(xxxx);
fx2=xx1.*b;
fx22=sum(fx2);
n=length(a);

q=[n,x11,x22;x11,x22,x33;x22,x33,x44];
u=[y11;fx11;fx22];
l=inv(q)*u;
x=l(1)
w=l(2)
z=l(3)
end

%Desarrollo de mnimos con una funcin exponencial
if op==3
syms x y z
fun3=input('Ingresa la funcin (en trminos de x,z): ');
format long
xa=-(1./(a.*1.98));
xb=sum(xa);
y0=log(b);
y1=sum(y0);
xx=xa.^2;
x2=sum(xx);
fxy=y0.*xa;
fxx=sum(fxy);
m=length(a);

g=[m,xb;xb,x2];
h=[y1;fxx];
i=inv(g)*h;

a00=i(1);
z=exp(a00)
E=i(2)

end
El programa resuelve una funcin polinomial de primer y segundo grado, adems de
funcin exponencial con el mtodo de mnimos cuadrados.

Para este proyecto se decidi utiliza la ecuacin de Arrhenius que anteriormente se
describi, lo importante para esta funcin es encontrar la variable z y E con los datos
obtenidos, a lo cual tenemos que:



Al iniciar el programa, ste te pedir que ingreses los datos de la variable dependiente
y de la variable independiente que en este caso son:

T(K) 293 300 320 340 360 380 400
k 8.53x10
-5
19.1x10
-5
1.56x10
-3
0.01 0.0522 0.2284 0.8631

En este caso como variable independiente a x utilizamos la Temperatura (K) y la
variable dependiente y la constante k.

Despus aparece un men, el cual te da a elegir qu tipo de funcin tienes, en este caso
tenemos una funcin de tipo exponencial:












A continuacin, el programa pedir que ingreses la funcin exponencial que se est
utilizando, es importante colocarlas en funcin de x y z:

Finalmente el programa determinar los valores de las incgnitas buscadas y har un
cambio de variable:


Como se describi anteriormente, se puede utilizar el programa para otro tipo de
funcin exponencial del tipo: z*exp(x) y polinomios de primer y segundo grado.

También podría gustarte