Infinite loop in False postion method
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
R Abhinandan
il 27 Ott 2020
Commentato: Cris LaPierre
il 27 Ott 2020
Here is my code for false position method and im getting a infinite loop, i want it to stop at tol=10^-4, can someone help?
a=0.5;
b=1;
tol=0.0001;
counter=0;
f =@(x) exp(x)-3*x^2;
while abs(b-a)>tol
c= b - (f(b)* (b-a)/(f(b)-f(a)));
if f(a)*f(c)<0
b=c;
end
if f(a)*f(c)>0
a=c;
end
counter=counter+1;
er=abs(a-b);
errorcounter(counter)=er;
end
figure
hold on
plot(errorcounter)
title('Convergence of False Position')
ylabel('Error')
xlabel('Iterations')
axis ([0 5 0 9e-04])
1 Commento
Cris LaPierre
il 27 Ott 2020
btw, hold on is unnecessary here. When used, it should always be paired with hold off.
Risposta accettata
Cris LaPierre
il 27 Ott 2020
I don't understand what your approach is, but by converting your while loop to a for loop, I can see that your error stops decreasing at 0.09. Here's a simplified version of your code.
a=0.5;
b=1;
f =@(x) exp(x)-3*x^2;
% while abs(b-a)>tol
for loop = 1:10
c= b - (f(b)* (b-a)/(f(b)-f(a)));
if f(a)*f(c)<0
b=c;
elseif f(a)*f(c)>0
a=c;
end
er=abs(a-b)
end
2 Commenti
Cris LaPierre
il 27 Ott 2020
Modificato: Cris LaPierre
il 27 Ott 2020
I understand. Check your algorithm. You have not implemented it correctly.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!