Matlab编写程序用二分法求解非线性方程的根
的有关信息介绍如下:用二分法求方程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;endx=(a+b)/2 %x为方程的解k % k为计算次数实验结果讨论和分析 本题使用二告纯拍分法得到的x=0.7391,满足基本要求,题目要求精确裤悄到小数点袜羡后四位,告诉了本题二分法得应达到得精确度;计算次数为14,二分法收敛性很好,收敛速度不快。