SlideShare a Scribd company logo
數值求根法
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
def f(x) :
return x**2 - 2
# 根
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 mclmath

二分逼近法_習題1.pptx
二分逼近法_習題1.pptx二分逼近法_習題1.pptx
二分逼近法_習題1.pptx
mclmath
 
函數微分_習題3.pptx
函數微分_習題3.pptx函數微分_習題3.pptx
函數微分_習題3.pptx
mclmath
 
函數微分_習題2.pptx
函數微分_習題2.pptx函數微分_習題2.pptx
函數微分_習題2.pptx
mclmath
 
函數微分_習題1.pptx
函數微分_習題1.pptx函數微分_習題1.pptx
函數微分_習題1.pptx
mclmath
 
函數微分_範例.pptx
函數微分_範例.pptx函數微分_範例.pptx
函數微分_範例.pptx
mclmath
 
函數畫圖_習題3.pptx
函數畫圖_習題3.pptx函數畫圖_習題3.pptx
函數畫圖_習題3.pptx
mclmath
 
函數畫圖_習題2.pptx
函數畫圖_習題2.pptx函數畫圖_習題2.pptx
函數畫圖_習題2.pptx
mclmath
 
函數畫圖_習題1.pptx
函數畫圖_習題1.pptx函數畫圖_習題1.pptx
函數畫圖_習題1.pptx
mclmath
 
函數畫圖.pptx
函數畫圖.pptx函數畫圖.pptx
函數畫圖.pptx
mclmath
 
9習題五.pptx
9習題五.pptx9習題五.pptx
9習題五.pptx
mclmath
 
9習題四.pptx
9習題四.pptx9習題四.pptx
9習題四.pptx
mclmath
 
SymPy在微積分上的應用:範例.pptx
SymPy在微積分上的應用:範例.pptxSymPy在微積分上的應用:範例.pptx
SymPy在微積分上的應用:範例.pptx
mclmath
 
SymPy在微積分上的應用.ppt
SymPy在微積分上的應用.pptSymPy在微積分上的應用.ppt
SymPy在微積分上的應用.ppt
mclmath
 
極座標畫圖:範例程式.pptx
極座標畫圖:範例程式.pptx極座標畫圖:範例程式.pptx
極座標畫圖:範例程式.pptx
mclmath
 
SymPy範例程式講義下載連結更新.ppt
SymPy範例程式講義下載連結更新.pptSymPy範例程式講義下載連結更新.ppt
SymPy範例程式講義下載連結更新.ppt
mclmath
 
Taylor exercise1
Taylor exercise1Taylor exercise1
Taylor exercise1
mclmath
 

More from mclmath (16)

二分逼近法_習題1.pptx
二分逼近法_習題1.pptx二分逼近法_習題1.pptx
二分逼近法_習題1.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
 
函數微分_範例.pptx
函數微分_範例.pptx函數微分_範例.pptx
函數微分_範例.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
 
函數畫圖.pptx
函數畫圖.pptx函數畫圖.pptx
函數畫圖.pptx
 
9習題五.pptx
9習題五.pptx9習題五.pptx
9習題五.pptx
 
9習題四.pptx
9習題四.pptx9習題四.pptx
9習題四.pptx
 
SymPy在微積分上的應用:範例.pptx
SymPy在微積分上的應用:範例.pptxSymPy在微積分上的應用:範例.pptx
SymPy在微積分上的應用:範例.pptx
 
SymPy在微積分上的應用.ppt
SymPy在微積分上的應用.pptSymPy在微積分上的應用.ppt
SymPy在微積分上的應用.ppt
 
極座標畫圖:範例程式.pptx
極座標畫圖:範例程式.pptx極座標畫圖:範例程式.pptx
極座標畫圖:範例程式.pptx
 
SymPy範例程式講義下載連結更新.ppt
SymPy範例程式講義下載連結更新.pptSymPy範例程式講義下載連結更新.ppt
SymPy範例程式講義下載連結更新.ppt
 
Taylor exercise1
Taylor exercise1Taylor exercise1
Taylor exercise1
 

二分逼近法_範例.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 def f(x) : return x**2 - 2 # 根 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 數值求根法 :二分逼近法 (四) 國立中央大學數學系