Need help on solving this bisection method question
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Kaitlyn Waters
le 23 Nov 2020
Modifié(e) : Alan Stevens
le 23 Nov 2020
: Given the equation 𝑓(𝑥) = −2𝑥^6 − 1.6𝑥^4 + 12𝑥 + 1
Write a code to use the bisection method to calculate the maximum between [0,1]. Iterate until the approximate absolute error falls below 5%. Print the root and number of iterations on the screen.
I've done this so far with the script but I don't know where to go from here. Please help.
syms x
f(x)=-2*x^6-1.6*x^4+12*x+1;
dfdx= diff(f,x);
a=0;
b=1;
i=0;
err=1000;
while err>0.05
c=(a+b)/2
if double((dfdx(a)))*double((dfdx(c)))<0
a=c
else
b=c
end
err=;
i=i+1;
end
fprintf('The max of equation in [0,1] is %f by %d',c, i)
0 commentaires
Réponse acceptée
Alan Stevens
le 23 Nov 2020
Modifié(e) : Alan Stevens
le 23 Nov 2020
You really don't need any symbolic parameters here; and you had the logic with a and b the wrong way round! Try
f = @(x) -2*x.^6-1.6*x.^4+12*x+1;
dfdx= @(x) -12*x.^5 - 6.4*x.^3 + 12;
a=0;
b=1;
i=0;
err=1000;
while err>0.05
c=(a+b)/2;
if dfdx(a)*dfdx(c)<0
b=c;
else
a=c;
end
err = abs(dfdx(c)); % Assuming the error is in the gradient
i=i+1;
end
fprintf('The max of equation in [0,1] is %f in %d iterations',f(c), i)
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Calculus 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!