I am trying to learn how to use fminunc, but it gives the error "Failure in initial objective function evaluation. FMINUNC cannot continue."
Help please?
Note: Updated
for i = 1:modes
params.x0 = [y0 dy0];
params.xp = xspan;
fobj = @(beta)myobj(beta, params);
for j = 1:1000 % begin convergence loop for beta
beta = fminunc(fobj, beta0); % run optimization
end % end convergence loop
end
%%
function [err, T, Y] = myobj(beta)
x0 = params.x0;
xspan = params.xp;
[T,Y] = ode45('ffunc', xspan, x0);
err = abs(Y(end,2) + sqrt(K*L.^2 - beta)*Y(end,1)); % error
end

 Réponse acceptée

Matt J
Matt J le 25 Oct 2019
Modifié(e) : Matt J le 25 Oct 2019

0 votes

You forgot to pass your params,
fobj = @(beta)myobj(beta,params);
function [err, T, Y] = myobj(beta,params)
x0 = params.x0;
xspan = params.xp;
[T,Y] = ode('ffunc', xspan, x0);
err = abs(Y(end,2) + sqrt(K*L.^2 - beta)*Y(end,1)); % error
end

4 commentaires

EB
EB le 25 Oct 2019
Oh, how rookie of me.
However, I still get the same error when I try to use the fminunc function.
Well, you should use
>>dbstop if caught error
to trap it.
EB
EB le 25 Oct 2019
It just says fobj used twice, but that is correct because I need to state my fobj, then use it for the next part.
EB
EB le 25 Oct 2019
Still the same error.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Statistics and Machine Learning Toolbox dans Centre d'aide et File Exchange

Produits

Tags

Question posée :

EB
le 25 Oct 2019

Modifié(e) :

EB
le 26 Oct 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by