bisection method code help
2 ビュー (過去 30 日間)
古いコメントを表示
function root=bisection(func,x1,xu)
xr=x1;es=.0001;
while(1)
xrold=xr;
xr=(x1+xu)/2;
if xr~=0
ea=abs((xr-xrold)/xr)*100;
else
ea=100;
end
if func(x1)*func(xr)<0
xu=xr;
elseif func(x1)*func(xr)>0
x1=xr;
else
ea=0;
end
if ea<=es,break,end
end
root=xr;
end
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1112400/image.png)
2 件のコメント
Steven Lord
2022 年 8 月 30 日
What is your question or concern about the code you've posted and the text of (what appears to be) a homework problem?
回答 (1 件)
Sam Chak
2022 年 8 月 31 日
I did not change anything. The bisection code works for a simple test below to find
:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1113090/image.png)
fcn = @(x) sin(x) - 0.5; % if the equation is f(x) = g(x), then enter f(x) - g(x)
xL = 0; % lower bound
xU = pi/2; % upper bound
x = bisection(fcn, xL, xU);
x_deg = x*180/pi % solution in degree
function root=bisection(func,x1,xu)
xr=x1;es=.0001;
while(1)
xrold=xr;
xr=(x1+xu)/2;
if xr~=0
ea=abs((xr-xrold)/xr)*100;
else
ea=100;
end
if func(x1)*func(xr)<0
xu=xr;
elseif func(x1)*func(xr)>0
x1=xr;
else
ea=0;
end
if ea<=es,break,end
end
root=xr;
end
参考
カテゴリ
Help Center および File Exchange で Spline Postprocessing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!