用二分法求π值(精确到0.01)

来源:学生作业帮助网 编辑:作业帮 时间:2024/06/17 23:39:57
用二分法求π值(精确到0.01)
xV[S"G+ ans-on:#bB rx_]oa]\ 0O?13<`e*V[xsӍoʯZ=:?PL SK7tԤO5*kʹQ]2+8_1^֚wLO8MA$.l:x7!iw^}g,VZ(L 5H^4mQ+'ެ22Ԕqs/8Q.HY"R3tgN(NVt4u@1F[=(F{CFz{FSVnDpv͜ UW{60w٬ F|f߳iS\:ѯ8Sd4% %!J~B;Z-tX%F A%ɴ-RG]C @nnP~kh?CӸ{)'t nTɂCOҚi-mBT(p[bDlY4Y0_aPluMUǴ2e9B` PL`y 'azHIȄ a]}WAk)p9* P&( e}ب~FGeh <(g*؀(2`qy4 f:5|֚ZQSHI]T%rV>t9Zʲ̑iks$UH.ĵF}T‰518#'l:My6lm#Qf5?*!) Ȍsl` CAt$!'?A &(I~(42m!Qw8LJq3 )3>lCs=S,0aey}V\Tl/UVwm9iyy7}-l8c]ɘl#ۺPh3-EfYL (\| 'Axb~MN'awHg6(}?^g׽./2{o\BxƛO6xX[vވ-@z/r߀Y/zQt=޴HdjAVuHl'&Ǹ`D qC=}C?(zC$Hh!¹

用二分法求π值(精确到0.01)
用二分法求π值(精确到0.01)

用二分法求π值(精确到0.01)
π是个超越数
要想使用二分法
首先找到一个方程f(x)=0,使得π是这个方程的解;
然后说明x=a(π左面附近的一个数)时,f(a)为负(或正)
x=b(π右面附近的一个数)时,f(b)为正(或负)
接着求取f((a+b)/2)值的正负号
如果是正,则在[a,(a+b)/2]区间上求[a+(a+b)/2]/2值的正负号;
如果是负,则在[(a+b)/2,b]区间上求[(a+b)/2+b]/2值的正负号;
以此类推,不断分割定义域空间
那么什么时候才会达到精确到0.01的要求呢?
当不断的求平均数后,接连两步的小数点后第二位数字以前不发生改变时,则取第二位数字以前的数,就是近似解了
比如第m步得到近似3.14357,第m+1步得到近似3.14235
此时两个近似的前三位3.14是相同的,且达到0.01位上
那么取近似为3.14,该近似达到0.01的精度
这个问题的难点现在归结到找哪个方程f(x)=0,使得x=π就是这个方程的精确解.

给你个例子,希望对你有帮助!
将下面的代码复制到M文件,保存成bisection.m文件
function [x,k]=demimethod(a,b,f,emg)
% a,b :求解区间的两个端点
% f :所求方程的函数名
% emg :精度指标
% x:所求近似解
% k: 循环次数
fa=feval(f,a);
fab=...

全部展开

给你个例子,希望对你有帮助!
将下面的代码复制到M文件,保存成bisection.m文件
function [x,k]=demimethod(a,b,f,emg)
% a,b :求解区间的两个端点
% f :所求方程的函数名
% emg :精度指标
% x:所求近似解
% k: 循环次数
fa=feval(f,a);
fab=feval(f,(a+b)/2);
k=0;
while abs(b-a)>emg
if fab==0
x=(a+b)/2;
return;
elseif fa*fab<0
b=(a+b)/2;
else
a=(a+b)/2;
end
fa=feval(f,a);
fab=feval(f,(a+b)/2);
k=k+1;
end
x=(a+b)/2;
结果:
>> f=@(x)x.^3+2*x.^2+x-5;
>> demimethod(-2,2,f,10^-4)
ans =
1.1164
参考文章:
MATLAB--二分法求解方程程序(完整版)
http://hi.baidu.com/2008zhenghui/blog/item/4793594bf68b682809f7ef89.html

收起