How to make my bisection method more accurate?
2 ビュー (過去 30 日間)
古いコメントを表示
I have constructed a root-finding function based on the bisection method. The function works, however, the roots it gives me aren't as accurate as I want them to be. They are off of about 1e-4 when compared to the exact roots. I don't understand how I can make it more accurate. Can someone please help. Here's my code:
function root = bisection(f,a,b,tol)
if sign(f(a))==sign(f(b))
error('a and b do not bracket the root');
end
j = 1;
while abs(0.5*(b-a)) >= tol
root = 0.5*(a+b);
j = j+1;
if sign(f(a))==sign(f(root))
a = root;
else
b = root;
end
end
end
0 件のコメント
採用された回答
James Tursa
2013 年 4 月 15 日
編集済み: James Tursa
2013 年 4 月 15 日
Change tol to a smaller value. E.g.,
>> f = @sin
f =
@sin
>> a = -.1
a =
-0.1000
>> b = .2
b =
0.2000
>> bisection(f,a,b,1e-4)
ans =
4.8828e-005
>> bisection(f,a,b,1e-10)
ans =
4.6566e-011
>>
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で MATLAB Mobile Fundamentals についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!