Wiki Metodosnumericos
Advertisement

Ajuste de un modelo no -lineal

En muchos casos de ingeniería se presentan modelos no lineales que deben ser ajustado a un conjunto de datos. En el presente contexto, estos modelos se definen como aquellos que tienen dependencia no lineal de sus parámetros. Por ejemplo:

    

Un problema asociado a un modelo no-lineal es del tipo:

    


basado en datos multidimensionales , donde es alguna función no-lineal respecto a algunos parametros desconocidos . La minimización pretende obtener los valores de los parámetros asociados con la mejor curva de ajuste (generalmente usando el método de los mínimos cuadrados). La ecuación anterior no puede ser manipulada para se llevada a la forma general de la ecuación.

Como en el caso de los mínimos cuadrados lineales, la regresión no lineal se basa en la determinación de valores de los parámetros que minimizan la suma de los cuadrados de los residuos. Sin embargo, en el caso de modelos no lineales, la solución se lleva a cabo a través de métodos iterativos.

El método de Gauss-Newton es uno de los algoritmos más usados para minimizar la suma de los cuadrados de los residuos entre los datos y las ecuaciones lienales. Es una modificación del método de Optimización de Newton que no usa segundas derivadas. El algoritmo representa un procedimiento iterativo. Esto significa que se debe proporcionar una estimación inicial del parámetro vector denominado . Algunos problemas de regresión no-lineal pueden linealizarse mediante una transformación en la formulación del modelo, lo que permite un estimación de los parámetros desconocidos a través de un modelo de regresión lineal sin la necesidad de utilizar procedimiento iterativos.


Ejemplo modelo ajuste modelo no-lineal

Sea el modelo no-lineal , con los datos de observación

    
    

La función que minimiza está dada por

    min 


Solución:

Buscamos los parámetros tal que la curva se ajuste de mejor manera a los datos.

    


Grafico

gráfico datos de observación

Minimizar S(a,b,c)

criterio para un mínimo:


Definir F

    


Calcular las componentes de

Calculamos las derivadas parciales de la funcion S con respecto a todos parametros de la función.



Linealizar el modelo

Debemos linealizar la función para aproximar , con .

Introducimos ,


Formular método de Newton

Lo formulamos a partir de la especificación de la función


Iteración con respecto a

    
    
         donde  


Código e implementación en Matlab


%Inicializar las variables

syms a b c % variables simbolicas (momentaneamente) S=0 % funcion s que guarda la sumatoria (f-fi)^2 f=[] %vector de la funcion inicialmente vacia

x=[1 2 3 4 5 6 7 8 9 10] %vector xi

fi=[1 3 10 22 34 58 62 87 102 114] %vector fi

plot(x,fi,'*')%graficar los datos de observacion

%Generar la función f for i=1:10

  f=[f, a+(4-b)*exp(-c*x(i))];
  end

%generamos la funcion S para calcular los ceros for i=1:10 S=[S + sum((f(i)-fi(i))^2)]; end

%derivadas parciales de S F1=diff(S,a) F2=diff(S,b) F3=diff(S,c)

%vector columna F F=[F1;F2;F3]

%generar la matriz jacobiana J=[diff(F1,a) diff(F1,b) diff(F1,a); diff(F2,a) diff(F2,b) diff(F2,a); diff(F3,a) diff(F3,b) diff(F3,a)]

%sustituir valores a variables a b c en vector F y matriz J

FF=subs(F,{a,b,c},{1,2,0}) JJ=subs(J,{a,b,c},{1,2,0})


%metodo de Newton %Definimos el rango de error epsilon epsilon=1e-7;

%Iteraciones que buscan el DX y el ajuste óptimo i=1; X=[0 2 4] XX=[];%registro DX=[]; while norm(FF)>epsilon & (i<100) DX=FF\JJ;%resolver sistema de ecuaciones

  X=X+DX;i=i+1;XX=[XX,X];

end

plot(XX,'*'); %graficamos el registro

Advertisement