Skipping fzero error in a loop

2 views (last 30 days)
Saeid
Saeid on 14 Apr 2017
Answered: Star Strider on 14 Apr 2017
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?

Accepted Answer

Star Strider
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.

More Answers (1)

the cyclist
the cyclist on 14 Apr 2017
One possible solution is to use a try-catch control structure.

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!