Matlab编写程序用二分法求解非线性方程的根

 我来答
淡泊不为致远
推荐于2017-11-25 · TA获得超过1750个赞
知道答主
回答量:1036
采纳率:100%
帮助的人:141万
展开全部
用二分法求方程x*x-x-1=0的正根,要求精确到小数点后四位。(matlab)
l1 计算公式
f(ak)*f(bk)<0;
bk-ak=1/2k-1*(b-a);
a1<=a2<=… <=ak<=…,b1<=b2<=…<=bk<=…。
l2 算法分析
设f(x)∈C[a,b],且f(a)f(b)<0,在[a,b]间寻找实根,记[a1,b1]=[a,b],取x1=(a1+b1)/2,若f(x1)=0,则x1是f(x)=0的根,f(x1)f(a1)>0,则a2=x1,b2=b1,否则a2=a1,b2=x1。得到[a2,b2]满足:f(a2)f(b2)<0,b2-a2=(b1-a1)/2=(b-a)/2,a2>=a1,b2<=b1。以[a2,b2]取代[a1,b1],继续以上过程,直到精度达到要求为止。
l3 源程序
function f1=fun(x);
f1=x-cos(x);
function [x,k]=erfen(a,b,s) %a,b为根区间,s为精度
a=0;b=1;s=1e-4;k=0;
while abs(a-b)>s
x=(a+b)/2;
if fun(a)*fun(x)<0
b=x;
else
a=x;
end
k=k+1;
end
x=(a+b)/2 %x为方程的解
k % k为计算次数
实验结果讨论和分析
本题使用二分法得到的x=0.7391,满足基本要求,题目要求精确到小数点后四位,告诉了本题二分法得应达到得精确度;计算次数为14,二分法收敛性很好,收敛速度不快。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式