How can i put a stopping criterion for this bisection method code in matlab?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I want to put a stopping criterion of 2% in my code where, once I run the code, the result will stop if the relative error r_e is equal to 2%.
I need help on where should I put commands and how to do it
here's my code
f_x= @(x)sin(5*x)+cos(2*x)
p_old = 0; % give an initial value to it
x_l =2; x_u = 10;
n = 20;
for i=1:n
f_l = f_x(x_l);
f_u = f_x(x_u);
p = (x_l+x_u)/2;
f_m = f_x(p);
if (f_l*f_m)<0
x_u=p;
elseif (f_u*f_m)<0
x_l=p;
end
r_e = abs((p-p_old)/(p));
p_old = p; % assign the p_old after relative error
table(i, :)={i-1 p r_e};
fprintf('%d %d %d \n', table{i, :});
end
0 commentaires
Réponses (2)
Ghazwan
le 8 Oct 2022
The code for the bisection method is available here
https://www.mathworks.com/matlabcentral/fileexchange/72478-bisection-method
0 commentaires
Torsten
le 8 Oct 2022
Modifié(e) : Torsten
le 8 Oct 2022
f_x= @(x)sin(5*x)+cos(2*x);
p_old = 0; % give an initial value to it
x_l =2; x_u = 10;
x=x_l:0.01:x_u;
hold on
plot(x,f_x(x))
n = 20;
eps = 1e-6;
for i=1:n
f_l = f_x(x_l);
f_u = f_x(x_u);
p = (x_l+x_u)/2;
f_m = f_x(p);
if (f_l*f_m)<0
x_u=p;
elseif (f_u*f_m)<0
x_l=p;
end
plot(p,f_x(p),'o')
r_e = abs((p-p_old)/(p));
if r_e < eps
break
end
p_old = p; % assign the p_old after relative error
table(i, :)={i-1 p r_e};
fprintf('%d %d %d \n', table{i, :});
end
hold off
0 commentaires
Voir également
Catégories
En savoir plus sur Financial Toolbox dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!