Skipping fzero error in a loop
2 views (last 30 days)
Show older comments
I am trying to solve an algabraic equation with two parameters that are varying in a loop. The basic form of the program is as follows:
nn=linspace(0.01,1,10);
aa=logspace(0,3,10);
inn=length(nn);
iaa=length(aa);
ss=1+1./nn;
for ii=1:inn
for jj=1:iaa
ii
jj
Y0=[0 1];
fun=@(Y) (1+Y)^ss(ii)-Y^ss(ii)-ss(ii)*aa(jj);
YY(ii,jj)=fzero(fun,Y0)
end
end
Now at some point at values of ii=2 & jj=7 the programs figures that a solution is not available, and stops. The error message reads: "The function values at the interval endpoints must differ in sign.", which understandably is due to the nature of the
Is there a way to get the program to keep running?
0 Comments
Accepted Answer
Star Strider
on 14 Apr 2017
Yes!
Now I suppose you want to know how?
Define: ‘Y0=1’, not a vector of values. This gives you a matrix with many NaN values and many others with solutions outside ‘[0 1]’. You can convert these to NaN on your own later if you like, with:
YY(YY>1) = NaN;
The point is that the code completes and fills your matrix.
0 Comments
More Answers (1)
See Also
Categories
Find more on Dynamic System Models in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!