古詩詞大全網 - 成語經典 - Matlab編寫程序用二分法求解非線性方程的根

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;

end

x=(a+b)/2 %x為方程的解

k % k為計算次數

實驗結果討論和分析

本題使用二分法得到的x=0.7391,滿足基本要求,題目要求精確到小數點後四位,告訴了本題二分法得應達到得精確度;計算次數為14,二分法收斂性很好,收斂速度不快。