Maestro de Matlab
Suplemento:
Encontré algunos problemas, principalmente que el valor del tiempo t es muy grande y es muy difícil para exp(-exp(-t) encontrar la solución óptima en esta área Debido a esto, el área es demasiado plana, alrededor de 1. En este caso, no importa cómo la optimice, es difícil obtener el resultado ideal y necesita realizar algún procesamiento en t....
función [estimaciones, modelo, feval, bandera] = fitcurvedemo_my(xdata, ydata)
% Llama a fminsearch usando un punto de partida aleatorio
start_point = [- 100 0 0];
modelo = @expfun_my;
opciones = optimset('MaxFunEvals',1e6, 'MaxIter', 1e6);
[estimaciones] ,feval,flag] = fminsearch(model, start_point, options) ;
% subfunción expfun_my
función [sse, FittedCurve] = expfun_my(params)
Sm = params(1);
c = params(2);
a = params(3);
FittedCurve = Sm*exp( c*exp(a*xdata));
ErrorVector = FittedCurve - ydata
sse = sum(ErrorVector .^ 2);
fin p>
end
Cambie esto Guárdelo como archivo fitcurvedemo_my.m y pruébelo~~
plot(xdata, ydata, '*')
espera
[sse, FittedCurve] = model(estimates);
plot(xdata, FittedCurve, 'r')