二分法基本思路
一般地,對於函式f(x),如果存在實數c,當x=c時,若f(c)=0,那麼把x=c叫做函式f(x)的零點。 解方程即要求f(x)的所有零點。
假定f(x)在區間(x,y)上連續
先找到a、b屬於區間(x,y),使f(a),f(b)異號,說明在區間(a,b)內一定有零點,然後求f[(a+b)/2],
現在假設f(a)<0,f(b)>0,a<b
1 如果f[(a+b)/2]=0,該點就是零點,
如果f[(a+b)/2]<0,則在區間((a+b)/2,b)內有零點,(a+b)/2>=a,從①開始繼續使用
2 中點函式值判斷。
如果f[(a+b)/2]>0,則在區間(a,(a+b)/2)內有零點,(a+b)/2<=b,從①開始繼續使用 中點函式值判斷。
這樣就可以不斷接近零點。
透過每次把f(x)的零點所在小區間收縮一半的方法,使區間的兩個端點逐步迫近函式的零點,以求得零點的近似值,這種方法叫做二分法。
從以上可以看出,每次運算後,區間長度減少一半,是線形收斂。另外,二分法不能計算復根和重根。
二分法步驟
用二分法求方程的根的近似值的步驟
1 若對於有,則在內至少有一個根。
2 取的中點計算
3 若則是的根,停止計算,
執行後輸出結果
若則在內至少有一個根。取;
若,則取;
④ 若(為預先給定的要求精度)退出計算,執行後輸出結果,反之,返回步驟1,重複步驟1,2,3
二分法Mtalab程式
syms x;
fun=input("(輸入函式形式)fx=");
a=input("(輸入二分法下限)a=");
b=input("(輸入二分法上限)b=");
d=input("輸入誤差限 d=")%二分法求根
%f=inline(x^2-4*x+4);
%修改需要求解的inline函式的函式體
f=inline(fun);%修改需要求解的inline函式的函式體
e=b-a; k=0 ;
while e>d
c=(a+b)/2;
if f(a)*f(c)<0
b=c;
elseif f(a)*f(c)>0
a=c;
else
a=c;b=c
end
e=e/2; k=k+1;
x=(a+b)/2;
x%x為答案
k%k為次數
二分法基本思路
一般地,對於函式f(x),如果存在實數c,當x=c時,若f(c)=0,那麼把x=c叫做函式f(x)的零點。 解方程即要求f(x)的所有零點。
假定f(x)在區間(x,y)上連續
先找到a、b屬於區間(x,y),使f(a),f(b)異號,說明在區間(a,b)內一定有零點,然後求f[(a+b)/2],
現在假設f(a)<0,f(b)>0,a<b
1 如果f[(a+b)/2]=0,該點就是零點,
如果f[(a+b)/2]<0,則在區間((a+b)/2,b)內有零點,(a+b)/2>=a,從①開始繼續使用
2 中點函式值判斷。
如果f[(a+b)/2]>0,則在區間(a,(a+b)/2)內有零點,(a+b)/2<=b,從①開始繼續使用 中點函式值判斷。
這樣就可以不斷接近零點。
透過每次把f(x)的零點所在小區間收縮一半的方法,使區間的兩個端點逐步迫近函式的零點,以求得零點的近似值,這種方法叫做二分法。
從以上可以看出,每次運算後,區間長度減少一半,是線形收斂。另外,二分法不能計算復根和重根。
二分法步驟
用二分法求方程的根的近似值的步驟
1 若對於有,則在內至少有一個根。
2 取的中點計算
3 若則是的根,停止計算,
執行後輸出結果
若則在內至少有一個根。取;
若,則取;
④ 若(為預先給定的要求精度)退出計算,執行後輸出結果,反之,返回步驟1,重複步驟1,2,3
二分法Mtalab程式
syms x;
fun=input("(輸入函式形式)fx=");
a=input("(輸入二分法下限)a=");
b=input("(輸入二分法上限)b=");
d=input("輸入誤差限 d=")%二分法求根
%f=inline(x^2-4*x+4);
%修改需要求解的inline函式的函式體
f=inline(fun);%修改需要求解的inline函式的函式體
e=b-a; k=0 ;
while e>d
c=(a+b)/2;
if f(a)*f(c)<0
b=c;
elseif f(a)*f(c)>0
a=c;
else
a=c;b=c
end
e=e/2; k=k+1;
end
x=(a+b)/2;
x%x為答案
k%k為次數