How to make my bisection method more accurate?
3 次查看(过去 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 中查找有关 Argument Definitions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!