SlideShare a Scribd company logo
1 of 5
數值求根法
1
簡要 python 學習講義
數值求根法 :二分逼近法 (一)
2
 求根步驟:
1. 設定容許誤差 tol > 0
2. 尋找區間 [a,b] 使得根 r 在區間內,且 f(a)f(b) < 0 ,
設定 fa = f(a),fb = f(b)
3. c 為 [a,b] 中點,計算 f(c) ,設定 fc = f(c) 。
4. 如果 |fc| < tol,則 c 為近似根,輸出 c 後停止計算
5. 如果 fa · fc < 0,則根在 [a,c] 之間,更新 b = c 與 fb = fc;
如果 fc · fb < 0,則根在 [c,b] 之間,更新 a = c 與 fa = fc
6. 回到步驟 3 執行
國立中央大學數學系
3
import math
# 函數 : x**2 - 2 與一次微分: 2x
def f(x) : x**2 - 2
def df(x) : 2*x
# 根
r = math.sqrt(2)
# 二分逼近法
a , b , k = 1 , 2 , 0
fa , fb = f(a) , f(b)
tol = 1.e-5
print( ”> 二分逼近法: 起始區間 (”, a , ”,” , b , ”)” , sep=”” )
while True :
c = (a + b)/2
err = abs(c-r)
k += 1
# 迭代次數 近似根 誤差,以下 10e 代表以 10 格與科學記號呈現數字
print( "{:<2} : {:<10e} {:<10e}".format(k,c,err) , sep="" )
fc = f(c)
數值求根法 :二分逼近法 (二)
國立中央大學數學系
4
# 函數絕對值小於 tol 才跳離迭代
if abs(fc) < tol : break
if fc * fa < 0 :
b = c
fb = fc
else :
a = c
fa = fc
print()
數值求根法 :二分逼近法 (三)
國立中央大學數學系
5
程式輸出:
> 二分逼近法: 起始區間 [1,2]
1 : 1.500000e+00 8.578644e-02
2 : 1.250000e+00 1.642136e-01
3 : 1.375000e+00 3.921356e-02
4 : 1.437500e+00 2.328644e-02
5 : 1.406250e+00 7.963562e-03
6 : 1.421875e+00 7.661438e-03
7 : 1.414062e+00 1.510624e-04
8 : 1.417969e+00 3.755188e-03
9 : 1.416016e+00 1.802063e-03
10 : 1.415039e+00 8.255001e-04
11 : 1.414551e+00 3.372189e-04
12 : 1.414307e+00 9.307825e-05
13 : 1.414185e+00 2.899206e-05
14 : 1.414246e+00 3.204310e-05
15 : 1.414215e+00 1.525518e-06
數值求根法 :二分逼近法 (四)
國立中央大學數學系

More Related Content

More from NCU MCL

Taylor多項式6.pptx Taylor多項式6.pptx Taylor多項式6.pptx
Taylor多項式6.pptx Taylor多項式6.pptx Taylor多項式6.pptxTaylor多項式6.pptx Taylor多項式6.pptx Taylor多項式6.pptx
Taylor多項式6.pptx Taylor多項式6.pptx Taylor多項式6.pptxNCU MCL
 
Taylor多項式5.pptx Taylor多項式5.pptx Taylor多項式5.pptx
Taylor多項式5.pptx Taylor多項式5.pptx Taylor多項式5.pptxTaylor多項式5.pptx Taylor多項式5.pptx Taylor多項式5.pptx
Taylor多項式5.pptx Taylor多項式5.pptx Taylor多項式5.pptxNCU MCL
 
Taylor多項式4.pptx Taylor多項式4.pptx Taylor多項式4.pptx
Taylor多項式4.pptx Taylor多項式4.pptx Taylor多項式4.pptxTaylor多項式4.pptx Taylor多項式4.pptx Taylor多項式4.pptx
Taylor多項式4.pptx Taylor多項式4.pptx Taylor多項式4.pptxNCU MCL
 
微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx
微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx
微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptxNCU MCL
 
微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx
微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx
微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptxNCU MCL
 
微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx
微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx
微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptxNCU MCL
 
函數微分_習題6.pptx 函數微分_習題6.pptx 函數微分_習題6.pptx
函數微分_習題6.pptx 函數微分_習題6.pptx 函數微分_習題6.pptx函數微分_習題6.pptx 函數微分_習題6.pptx 函數微分_習題6.pptx
函數微分_習題6.pptx 函數微分_習題6.pptx 函數微分_習題6.pptxNCU MCL
 
函數微分_習題5.pptx 函數微分_習題5.pptx 函數微分_習題5.pptx
函數微分_習題5.pptx 函數微分_習題5.pptx 函數微分_習題5.pptx函數微分_習題5.pptx 函數微分_習題5.pptx 函數微分_習題5.pptx
函數微分_習題5.pptx 函數微分_習題5.pptx 函數微分_習題5.pptxNCU MCL
 
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptxNCU MCL
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptxNCU MCL
 
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptxNCU MCL
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptxNCU MCL
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxNCU MCL
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxNCU MCL
 
函數畫圖_習題4.pptx
函數畫圖_習題4.pptx函數畫圖_習題4.pptx
函數畫圖_習題4.pptxNCU MCL
 
數值積分法_3.pptx
數值積分法_3.pptx數值積分法_3.pptx
數值積分法_3.pptxNCU MCL
 
數值積分法_2.pptx
數值積分法_2.pptx數值積分法_2.pptx
數值積分法_2.pptxNCU MCL
 
數值求根習題_1.pptx
數值求根習題_1.pptx數值求根習題_1.pptx
數值求根習題_1.pptxNCU MCL
 
函數微分習題_3.pptx
函數微分習題_3.pptx函數微分習題_3.pptx
函數微分習題_3.pptxNCU MCL
 
SymPy 在微積分上的應用_3.pptx
SymPy 在微積分上的應用_3.pptxSymPy 在微積分上的應用_3.pptx
SymPy 在微積分上的應用_3.pptxNCU MCL
 

More from NCU MCL (20)

Taylor多項式6.pptx Taylor多項式6.pptx Taylor多項式6.pptx
Taylor多項式6.pptx Taylor多項式6.pptx Taylor多項式6.pptxTaylor多項式6.pptx Taylor多項式6.pptx Taylor多項式6.pptx
Taylor多項式6.pptx Taylor多項式6.pptx Taylor多項式6.pptx
 
Taylor多項式5.pptx Taylor多項式5.pptx Taylor多項式5.pptx
Taylor多項式5.pptx Taylor多項式5.pptx Taylor多項式5.pptxTaylor多項式5.pptx Taylor多項式5.pptx Taylor多項式5.pptx
Taylor多項式5.pptx Taylor多項式5.pptx Taylor多項式5.pptx
 
Taylor多項式4.pptx Taylor多項式4.pptx Taylor多項式4.pptx
Taylor多項式4.pptx Taylor多項式4.pptx Taylor多項式4.pptxTaylor多項式4.pptx Taylor多項式4.pptx Taylor多項式4.pptx
Taylor多項式4.pptx Taylor多項式4.pptx Taylor多項式4.pptx
 
微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx
微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx
微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx 微分方程式求解_習題6.pptx
 
微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx
微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx
微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx 微分方程式求解_習題5.pptx
 
微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx
微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx
微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx 微分方程式求解_習題4.pptx
 
函數微分_習題6.pptx 函數微分_習題6.pptx 函數微分_習題6.pptx
函數微分_習題6.pptx 函數微分_習題6.pptx 函數微分_習題6.pptx函數微分_習題6.pptx 函數微分_習題6.pptx 函數微分_習題6.pptx
函數微分_習題6.pptx 函數微分_習題6.pptx 函數微分_習題6.pptx
 
函數微分_習題5.pptx 函數微分_習題5.pptx 函數微分_習題5.pptx
函數微分_習題5.pptx 函數微分_習題5.pptx 函數微分_習題5.pptx函數微分_習題5.pptx 函數微分_習題5.pptx 函數微分_習題5.pptx
函數微分_習題5.pptx 函數微分_習題5.pptx 函數微分_習題5.pptx
 
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
 
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
 
函數畫圖_習題4.pptx
函數畫圖_習題4.pptx函數畫圖_習題4.pptx
函數畫圖_習題4.pptx
 
數值積分法_3.pptx
數值積分法_3.pptx數值積分法_3.pptx
數值積分法_3.pptx
 
數值積分法_2.pptx
數值積分法_2.pptx數值積分法_2.pptx
數值積分法_2.pptx
 
數值求根習題_1.pptx
數值求根習題_1.pptx數值求根習題_1.pptx
數值求根習題_1.pptx
 
函數微分習題_3.pptx
函數微分習題_3.pptx函數微分習題_3.pptx
函數微分習題_3.pptx
 
SymPy 在微積分上的應用_3.pptx
SymPy 在微積分上的應用_3.pptxSymPy 在微積分上的應用_3.pptx
SymPy 在微積分上的應用_3.pptx
 

ncuma_數值求根法.pptx

  • 2. 數值求根法 :二分逼近法 (一) 2  求根步驟: 1. 設定容許誤差 tol > 0 2. 尋找區間 [a,b] 使得根 r 在區間內,且 f(a)f(b) < 0 , 設定 fa = f(a),fb = f(b) 3. c 為 [a,b] 中點,計算 f(c) ,設定 fc = f(c) 。 4. 如果 |fc| < tol,則 c 為近似根,輸出 c 後停止計算 5. 如果 fa · fc < 0,則根在 [a,c] 之間,更新 b = c 與 fb = fc; 如果 fc · fb < 0,則根在 [c,b] 之間,更新 a = c 與 fa = fc 6. 回到步驟 3 執行 國立中央大學數學系
  • 3. 3 import math # 函數 : x**2 - 2 與一次微分: 2x def f(x) : x**2 - 2 def df(x) : 2*x # 根 r = math.sqrt(2) # 二分逼近法 a , b , k = 1 , 2 , 0 fa , fb = f(a) , f(b) tol = 1.e-5 print( ”> 二分逼近法: 起始區間 (”, a , ”,” , b , ”)” , sep=”” ) while True : c = (a + b)/2 err = abs(c-r) k += 1 # 迭代次數 近似根 誤差,以下 10e 代表以 10 格與科學記號呈現數字 print( "{:<2} : {:<10e} {:<10e}".format(k,c,err) , sep="" ) fc = f(c) 數值求根法 :二分逼近法 (二) 國立中央大學數學系
  • 4. 4 # 函數絕對值小於 tol 才跳離迭代 if abs(fc) < tol : break if fc * fa < 0 : b = c fb = fc else : a = c fa = fc print() 數值求根法 :二分逼近法 (三) 國立中央大學數學系
  • 5. 5 程式輸出: > 二分逼近法: 起始區間 [1,2] 1 : 1.500000e+00 8.578644e-02 2 : 1.250000e+00 1.642136e-01 3 : 1.375000e+00 3.921356e-02 4 : 1.437500e+00 2.328644e-02 5 : 1.406250e+00 7.963562e-03 6 : 1.421875e+00 7.661438e-03 7 : 1.414062e+00 1.510624e-04 8 : 1.417969e+00 3.755188e-03 9 : 1.416016e+00 1.802063e-03 10 : 1.415039e+00 8.255001e-04 11 : 1.414551e+00 3.372189e-04 12 : 1.414307e+00 9.307825e-05 13 : 1.414185e+00 2.899206e-05 14 : 1.414246e+00 3.204310e-05 15 : 1.414215e+00 1.525518e-06 數值求根法 :二分逼近法 (四) 國立中央大學數學系