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,二分法收斂性很好,收斂速度不快。