SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Downloaden Sie, um offline zu lesen
微分方程式
數值求解
158
簡要 python 學習講義
微分方程式數值求解 (一)
159國立中央大學數學系
微分方程式數值求解 (二)
160國立中央大學數學系
為微分方程式解析解 的估算值 ,
如此逐步迭代產生以下計算步驟:
1. 設定計算區間在 [a,b] ,起始條件 y(a) = c
2. 執行 n 步,計算 h = (b-a)/n
3. 設定 = a 與 = c 與
4. 依次計算 i ∈ [0,n)
微分方程式數值求解 (三)
161國立中央大學數學系
 此公式需設定起始條件才能求解,若讓 = c,c 要一開始就給定,
整個數值求解才能開始。以上的數值求解法稱為 Euler method,這
是最簡單的數值法用來計算起始值問題(initial value problem)
,缺點為計算精度偏低,若要得到較好的結果,h 要越小越好。
 本程式利用 c 迴圈來設定起始值,c 分別為 0、5、10,對相同微分
方程式,三個不同起始值代表三個不同的微分方程式,可產生三個數值
解。一般來說,所有起始值微分方程的數值方法,離起始點越遠,誤差
越大。
微分方程式數值求解 (四)
162國立中央大學數學系
微分方程式數值求解 (五)
163國立中央大學數學系
import pylab
#----------------------------------------
# y’ = x**(1/3) sin(x) + 0.2
#
# i.c. y(0) = val val = range(0,11,5)
#----------------------------------------
def fn(x) :
return x**(1/3) * pylab.sin(x) + 0.2
# 設定周邊空白為白色
pylab.figure(facecolor=’white’)
# 設定 [a,b] 與執行次數 n
a , b , n = 0 , 20*pylab.pi , 500
dx = (b-a)/n
# 設定 xs , ys
xs = [ a + i*dx for i in range(n+1) ]
ys = [None] * (n+1)
# c :起始值,在此分別為 0 5 10 三數
# 以下計算相同微分方程式但不同起始值的解答
for c in range(0,11,5) :
微分方程式數值求解 (六)
164國立中央大學數學系
ys[0] = c
for i in range(n) :
ys[i+1] = ys[i] + dx * fn(xs[i])
sym = ’y(0) = ’ + str(ys[0])
pylab.plot(xs,ys,label=sym)
# 設定圖形標頭文字
pylab.title(r”$y’ = sqrt[3]{x}, sin(x) + 0.2$",fontsize=20)
# 設定 X 軸與 Y 軸文字
pylab.xlabel(’X’)
pylab.ylabel(’Y’)
# 設定各線條圖例位置
pylab.legend(loc=’upper left’)
pylab.show()

Weitere ähnliche Inhalte

Was ist angesagt? (20)

Python9-3
Python9-3Python9-3
Python9-3
 
Ppt 1-25
Ppt 1-25Ppt 1-25
Ppt 1-25
 
Ppt 137-137
Ppt 137-137Ppt 137-137
Ppt 137-137
 
Polar example
Polar examplePolar example
Polar example
 
Ppt 136-136
Ppt 136-136Ppt 136-136
Ppt 136-136
 
Ppt 165-165
Ppt 165-165Ppt 165-165
Ppt 165-165
 
3.1函數概念
3.1函數概念3.1函數概念
3.1函數概念
 
Ppt 166-166
Ppt 166-166Ppt 166-166
Ppt 166-166
 
P127 135 new
P127 135 newP127 135 new
P127 135 new
 
Ppt 167-173
Ppt 167-173Ppt 167-173
Ppt 167-173
 
Sym py exersice2
Sym py exersice2Sym py exersice2
Sym py exersice2
 
Appendix A 教學
Appendix A 教學Appendix A 教學
Appendix A 教學
 
Ppt 26-50
Ppt 26-50Ppt 26-50
Ppt 26-50
 
Taylor exercise2
Taylor exercise2Taylor exercise2
Taylor exercise2
 
Taylor exercise1
Taylor exercise1Taylor exercise1
Taylor exercise1
 
Python p.193 197
Python p.193 197Python p.193 197
Python p.193 197
 
Ch3 教學
Ch3 教學Ch3 教學
Ch3 教學
 
Sym py exersice1
Sym py exersice1Sym py exersice1
Sym py exersice1
 
Ppt 101-119
Ppt 101-119Ppt 101-119
Ppt 101-119
 
Ppt 120-126
Ppt 120-126Ppt 120-126
Ppt 120-126
 

Ähnlich wie Ppt 158-164

C语言学习100例实例程序
C语言学习100例实例程序C语言学习100例实例程序
C语言学习100例实例程序
yiditushe
 
05 计算机的运算方法02
05 计算机的运算方法0205 计算机的运算方法02
05 计算机的运算方法02
Huaijin Chen
 
计算机组成原理题
计算机组成原理题计算机组成原理题
计算机组成原理题
Huaijin Chen
 

Ähnlich wie Ppt 158-164 (9)

ncuma_微分方程式.pptx
ncuma_微分方程式.pptxncuma_微分方程式.pptx
ncuma_微分方程式.pptx
 
C语言学习100例实例程序
C语言学习100例实例程序C语言学习100例实例程序
C语言学习100例实例程序
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
05 计算机的运算方法02
05 计算机的运算方法0205 计算机的运算方法02
05 计算机的运算方法02
 
Ch1 c++總複習
Ch1 c++總複習Ch1 c++總複習
Ch1 c++總複習
 
Ppt 1-50
Ppt 1-50Ppt 1-50
Ppt 1-50
 
手把手打開Python資料分析大門
手把手打開Python資料分析大門手把手打開Python資料分析大門
手把手打開Python資料分析大門
 
计算机组成原理题
计算机组成原理题计算机组成原理题
计算机组成原理题
 
[系列活動] 手把手打開Python資料分析大門
[系列活動] 手把手打開Python資料分析大門[系列活動] 手把手打開Python資料分析大門
[系列活動] 手把手打開Python資料分析大門
 

Mehr von hungchiayang1 (14)

Exercise 1 3
Exercise 1 3Exercise 1 3
Exercise 1 3
 
化學系 python 習題
化學系 python 習題化學系 python 習題
化學系 python 習題
 
化學系 python 練習
化學系 python 練習化學系 python 練習
化學系 python 練習
 
化學系 python 教學
化學系 python 教學化學系 python 教學
化學系 python 教學
 
Ppt 151-151
Ppt 151-151Ppt 151-151
Ppt 151-151
 
Ppt 150-150
Ppt 150-150Ppt 150-150
Ppt 150-150
 
Ppt 138-142
Ppt 138-142Ppt 138-142
Ppt 138-142
 
Ppt 174-174
Ppt 174-174Ppt 174-174
Ppt 174-174
 
Ppt 156-156
Ppt 156-156Ppt 156-156
Ppt 156-156
 
Ppt 157-157
Ppt 157-157Ppt 157-157
Ppt 157-157
 
Ppt 175-175
Ppt 175-175Ppt 175-175
Ppt 175-175
 
Ppt 127-135
Ppt 127-135Ppt 127-135
Ppt 127-135
 
Ppt 78-100
Ppt 78-100Ppt 78-100
Ppt 78-100
 
Ppt 51-77
Ppt 51-77Ppt 51-77
Ppt 51-77
 

Ppt 158-164