Skipping fzero error in a loop
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Saeid
le 14 Avr 2017
Réponse apportée : Star Strider
le 14 Avr 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?
0 commentaires
Réponse acceptée
Star Strider
le 14 Avr 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 commentaires
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Dynamic System Models 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!