Output argument "x3" (and maybe others) not assigned during call to "threeptb"
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
So I am trying to use three point bracketing function to get values of x and f as shown in the code. The code works for one of my test scripts but not the other and returns the error "Output argument "x3" (and maybe others) not assigned during call to ..". Any idea where i missed something?
This is the function with the "f"
function [f] = obj(x)
%f = 240*(x^-1) + 10^(-4)*x^(1.5) + 0.45;
K = 1.11 + 1.11*(x/10)^(-0.18);
f = K/(10-x);
end
this is the 3 point bracketing function
function [x1,x2,x3,f2,f3] = threeptb(x1,s,tau)
%steps as defined by the three point bracketing algorithm
f1 = obj(x1);
x2 = x1 + s;
f2 = obj(x2);
while f2 <= f1
s = s/tau;
x3 = x2 + s;
f3 = obj(x3);
if f2 > f1
g = f1;
f1 = f2;
f2 = g;
s = -s;
elseif f3 > f2
return
else
x1 = x2;
x2 = x3;
f2 = f3;
end
end
and the error is returned when i call
[q,w,e,r,t] = threeptb(1,0.1,0.618)
0 commentaires
Réponses (1)
dpb
le 15 Fév 2021
I just worked through at command line --
>> fnK =@(x) (1.11 + 1.11*(x/10)^(-0.18))/(10-x); % the obj() function
>> x1=1; s=0.1; % the given arguments needed
>> f1=fnK(x1)
f1 =
0.3100
>> x2=x1+s;
>> f2=fnK(x2)
f2 =
0.3103
>> f2<=f1
ans =
logical
0
>>
shows that the while condition will not be met and so the function will return without having computed x3, f3
You'll need to set some default values to return or fix the logic if the condition above isn't supposed to occur.
Setting a breakpoint in your function and stepping through to check logic would help in finding such things...
0 commentaires
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!