Programa de mínimos cuadrados no lineales de Matlab, ayúdenme a modificarlo y escribir un programa correcto. Muchas gracias.
1. Para funciones de ajuste no lineales (como funciones exponenciales, etc.), la precisión de la función lsqcurvefit() es menor que la de la función ?nlinfit(). Para este ejemplo, utilice lsqcurvefit(), nlinfit(), 0.95861 y nlinfit(), 0.99905.
2. La definición de la función personalizada curvefun1 (a, x) no es lo suficientemente razonable y es necesario agregar un símbolo de valor absoluto, es decir, f=abs((a(1).* x.^a(2)) ./(a(3)-x)).^(1/a(4)), que está determinada por las propiedades de las ecuaciones exponenciales.
3. Hay un error en la ecuación de la función personalizada, '/' debería ser './'. Falta una cosita.
4. La selección del valor inicial no es razonable. Para este ejemplo, a0 =b=[-0.8? -0.2? -0.3]
5. Los resultados son los siguientes
a =[ -307506534.2, -1.122708895, -2085623.768, -0.6827697455]
Es decir, a(1)=b;a(2)=p ;a(3) =R;a(4)=q