bisection method - can't see error in code

조회 수: 1 (최근 30일)
Christie
Christie 2012년 10월 3일
I am unable to pin point the error in my code of my funtion for the bisection method, any help would be greatly appreciated
function [rootx]=bisect(fhandle,a,b,epsilon)
rootx=[];
Fa=fhandle(a);
Fb=fhandle(b);
m=((b-a)/2);
Fm=fhandle(m);
while abs(m)>epsilon ;
if Fb*Fm <0
a=m
else
b=m
end
end
return m=((a+b)/2)
end
rootx
  댓글 수: 2
Matt J
Matt J 2012년 10월 3일
편집: Matt J 2012년 10월 3일
Not pasting in the error messages or other symptoms of malfunction makes it hard for us to pinpoint, too.

댓글을 달려면 로그인하십시오.

채택된 답변

James Tursa
James Tursa 2012년 10월 3일
1) Google "bisection method"
2) Go to the 1st Wiki link
3) Look at the pseudo-code posted there
4) Compare that to your code to discover your errors, paying special attention to what Matt J said about not updating your variables within your loop.

추가 답변 (2개)

Matt J
Matt J 2012년 10월 3일
편집: Matt J 2012년 10월 3일
One idea:
m=((b-a)/2);
Shouldn't it be + instead of - ?
Also, you don't assign anything to rootx in the code except the initialization rootx=[]. Also, throughout the loop, you are not updating, m, Fb, or Fm.

Babak
Babak 2012년 10월 3일
In the while loop
while abs(m)>epsilon ;
if Fb*Fm <0
a=m
else
b=m
end
end
you are not changing m and you are trying to check the abs(m)
I think you meant
m=a
and
m=b
instead...

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by