Need help on solving this bisection method question

2 ビュー (過去 30 日間)
Kaitlyn Waters
Kaitlyn Waters 2020 年 11 月 23 日
編集済み: Alan Stevens 2020 年 11 月 23 日
: 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)

採用された回答

Alan Stevens
Alan Stevens 2020 年 11 月 23 日
編集済み: Alan Stevens 2020 年 11 月 23 日
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 件)

カテゴリ

Help Center および File ExchangeCalculus についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by