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

采纳的回答

James Tursa
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 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB Mobile Fundamentals 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by