Matlab - program won't stop calculating

My program I created is using a simple bisection method to calculate a root, but it just keeps running. Any thoughts on how to fix my code to stop this?
myFunction = @(x) 9*(x^4) + 18*(x^3) + 38*(x^2) - 57*x +14;
format long
a = 0; % lower limit
b = 1; % upper limit
c = (a + b) / 2;
while abs(myFunction(c)) > 0.01
if (myFunction(a)*myFunction(c)) < 0
a = c;
else
b = c;
end
c = (a + b) / 2;
end
fprint('The root is %g\n', c)

 採用された回答

Matt J
Matt J 2013 年 9 月 24 日
編集済み: Matt J 2013 年 9 月 24 日

1 投票

Install a maximum number of iterations. You should be able to reach 2^(-N) precision in N steps. Additionally,
if (myFunction(a)*myFunction(c)) < 0
b = c;
elseif (myFunction(b)*myFunction(c)) < 0
a = c;
else
....something
end

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeStartup and Shutdown についてさらに検索

質問済み:

2013 年 9 月 24 日

Community Treasure Hunt

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

Start Hunting!

Translated by