Anda di halaman 1dari 3

Informtica Aplicada a

Problemas Qumicos

AJUSTE PTIMO
DE FUNCIONES
NO LINEALES

Carmen Rivera Lamelas


Beatriz Pazos Ferreiro
Ajuste ptimo de funciones no lineales

%Con un nmero de datos obtenidos experimentalmente vamos


a intentar obtener con la ayuda de matlab una curva tal que
se ajuste a todos los datos.

%Tenemos dos parmetros no lineales en este caso,


llamados lambda 1 y lambda 2:

y = C(1)*exp(-lambda(1)*t) + C(2)*exp(-lambda(2)*t)

%Cogemos por ejemplo unos datos experimentales donde


vemos como vara la temperatura con la Kp

t 60 65 70 75 80 85 90
kp 3.48 3.60 3.75 3.90 4.07 4.33 4.60

%El eje de las y en este caso Kp tiene que ser un


vector columna y el de las x en este caso t un vector fila.

>> t=[60 65 70 75 80 85 90];


>> kp=[3.48 3.60 3.75 3.90 4.07 4.33 4.60]';
>> plot(t,kp,'ro'); hold on; h = plot(t,kp,'b'); hold
off;
>> title('Datos de entrada'); ylim([2 5])

%Comando plot(t,y,ro): La r se introduce porque queremos


que el color de la grfica sea el rojo y la o para que
salga una grfica con crculos.

%Como queremos unir los puntos de nuestra grfica


introducimos el comando: hold on h=plot(t,y,b)

%En este caso introducimos una b para que la lnea sea de


color azul y la definimos como h.

Informtica Aplicada a Problemas Qumicos


Ajuste ptimo de funciones no lineales

%El comando hold off lo usamos para quitar la grfica.

%Ahora tenemos que encontrar los valores de lambda tal


que minimicen la funcin. En este caso la lambda 1 y lambda 2
para minimizar el error.

%Queremos ajustar la funcin a esos valores.

% Hacemos una suposicin para la estimacin inicial de


lambda (start) as invocamos FMINSEARCH. Esto minimiza el
error retornado por FITFUN ajustando lambda. Da como
resultado el valor final de lambda.
>> start=[1;0]

%De esta manera comenzamos a buscarlos valores:

>> outputFcn = @(x,optimvalues,state)


fitoutputfun(x,optimvalues,state,t,kp,h);
options = optimset('OutputFcn',outputFcn,'TolX',0.1);

% Ahora con estos datos introducidos en matlab


procederemos a buscar los valores de lambda:

>>estimated_lambda =
fminsearch(@(x)fitfun(x,t,kp),start,options)
>>estimated_lambda =

0.0094
2.0014

%Fitfun es una funcin que depende de lambda, de t y de


kp, as estamos diciendo que nos busque los valores de lambda
de la funcin alrededor de los valores iniciales dados, y con
las opciones de optimizacin que le damos.

%Ahora matlab ya me da la grfica con los valores mnimos


y la curva de regresin que buscbamos.

%La curva de
regresin es
casi una recta.
Por eso los
datos estimados
de lambda son
tan bajos.

Informtica Aplicada a Problemas Qumicos

Anda mungkin juga menyukai