用二分法求π值(精确到0.01)
答案:2 悬赏:10 手机版
解决时间 2021-03-03 18:26
- 提问者网友:欺烟
- 2021-03-03 12:53
用二分法求π值(精确到0.01)
最佳答案
- 五星知识达人网友:往事隔山水
- 2021-03-03 14:19
π是个超越数要想使用二分法首先找到一个方程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=π就是这个方程的精确解.======以下答案可供参考======供参考答案1:给你个例子,希望对你有帮助!将下面的代码复制到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)>emgif fab==0x=(a+b)/2;return;elseif fa*fabb=(a+b)/2;elsea=(a+b)/2;endfa=feval(f,a);fab=feval(f,(a+b)/2);k=k+1;endx=(a+b)/2;结果:>> f=@(x)x.^3+2*x.^2+x-5;>> demimethod(-2,2,f,10^-4)ans = 1.1164参考文章:MATLAB--二分法求解方程程序(完整版)https://hi.baidu.com/2008zhenghui/blog/item/4793594bf68b682809f7ef89.html
全部回答
- 1楼网友:十年萤火照君眠
- 2021-03-03 15:12
谢谢了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯