Red de conocimiento informático - Aprendizaje de programación - Maestro de Matlab

Maestro de Matlab

Utilice fminsearch y yo haré la investigación por usted.

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

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')