SlideShare a Scribd company logo
1 of 7
Download to read offline
數值積分法
157
簡易 python 語法教學
數值積分法 (一)
158國立中央大學數學系
數值積分法 (二)
159國立中央大學數學系
數值積分法 (三)
160
 本題分別利用迴圈與公式來估算 的積分,觀察
程式碼可知使用迴圈的計算方式遠比公式來得笨拙許多,主要原因在公
式計算積分中,我們利用了 python 的串列截取語法迅速取得部份串
列,使用一列式子即能求得梯形法的積分估算值,例如以下的式子雖然
看不到迴圈,但卻有滿滿的「迴圈」精神:
# 梯形法係數:1,2,2,2,...,2,2,1
isum2 = h * sum( [ ys[0] , 2*sum(ys[1:-1]) , ys[-1] ] ) / 2
以上的 ys 為函數值串列。
 由程式執行結果可知,三種數值積分法的積分誤差:
Simpson 積分法 < 梯形積分法 < 矩形積分法
執行結果完全符合數值積分的理論預期。
國立中央大學數學系
數值積分法 (四)
161
import pylab
pi = pylab.pi
# [a,b] 100 等份
a , b , n = pi/4 , pi , 100
# 定義函式
fn = lambda x : abs( pylab.sin(x) - pylab.cos(x) )
# 取等份點成 xs ,向量式運算得 ys
xs , h = pylab.linspace(a,b,n+1,retstep=True)
ys = abs( pylab.sin(xs) - pylab.cos(xs) )
# rsum : 矩形面積
# lsum : 下矩形面積 , usum : 上矩形面積 , tsum : 梯形面積
rsum , lsum , usum , tsum = 0 , 0 , 0 , 0
y1 = ys[0]
# 迴圈計算:矩形、上矩形、下矩形、梯形
for y2 in ys[1:] :
rsum += y1
if y1 < y2 :
lsum += y1
usum += y2
else :
lsum += y2
usum += y1
tsum += y1 + y2
y1 = y2
國立中央大學數學系
數值積分法 (五)
162
rsum *= h
lsum *= h
usum *= h
tsum *= h/2
isum = 1 + pylab.sqrt(2) # 正確解
print( "數學積分 :" , round(isum,9) , end="nn" )
print( "迴圈求積:" )
print( "矩形積分 :" , round(usum,9) , " 誤差:" , round(abs(isum-rsum),10) )
print( "上矩形積分 :" , round(usum,9) , " 誤差:" , round(abs(isum-usum),10) )
print( "下矩形積分 :" , round(lsum,9) , " 誤差:" , round(abs(isum-lsum),10) )
print( "梯形積分法 :" , round(tsum,9) , " 誤差:" , round(abs(isum-tsum),10) )
print()
# 公式計算:矩形、梯形、Simpson
# 矩形法係數:1,1,1,1,...,1,1
isum1 = h * sum( ys[:-1] )
# 梯形法係數:1,2,2,2,...,2,2,1
isum2 = h * sum( [ ys[0] , 2*sum(ys[1:-1]) , ys[-1] ] ) / 2
# Simpson 1/3 rule 係數:1,4,2,4,2,...,2,4,1
isum3 = h * sum([ ys[0], 4*sum(ys[1:-1:2]), 2*sum(ys[2:-1:2]), ys[-1] ]) / 3
國立中央大學數學系
數值積分法 (六)
163
print( "公式求積:" )
print( "矩形積分法 :" , round(isum1,9) , " 誤差:" , round(abs(isum-isum1),10) )
print( "梯形積分法 :" , round(isum2,9) , " 誤差:" , round(abs(isum-isum2),10) )
print( "Simpson積分:" , round(isum3,9) , " 誤差:" , round(abs(isum-isum3),10) )
程式輸出:
數學積分 : 2.414213562
迴圈求積:
矩形積分 : 2.435641493 誤差: 0.0118926641
上矩形積分 : 2.435641493 誤差: 0.0214279302
下矩形積分 : 2.392562249 誤差: 0.0216513135
梯形積分法 : 2.414101871 誤差: 0.0001116917
公式求積:
矩形積分法 : 2.402320898 誤差: 0.0118926641
梯形積分法 : 2.414101871 誤差: 0.0001116917
Simpson積分: 2.414213567 誤差: 4.1e-09
國立中央大學數學系

More Related Content

What's hot (20)

10.第十章用Matlab画空间曲线
10.第十章用Matlab画空间曲线10.第十章用Matlab画空间曲线
10.第十章用Matlab画空间曲线
 
Python9-3
Python9-3Python9-3
Python9-3
 
Func diff cal_exercise2-3
Func diff cal_exercise2-3Func diff cal_exercise2-3
Func diff cal_exercise2-3
 
Python p.193 197
Python p.193 197Python p.193 197
Python p.193 197
 
Ch3 教學
Ch3 教學Ch3 教學
Ch3 教學
 
Ch4 習題
Ch4 習題Ch4 習題
Ch4 習題
 
Python differential equation
Python differential equationPython differential equation
Python differential equation
 
Ch11 範例
Ch11 範例Ch11 範例
Ch11 範例
 
Sym py exersice2
Sym py exersice2Sym py exersice2
Sym py exersice2
 
S99-42高雄市高中職聯招試題
S99-42高雄市高中職聯招試題S99-42高雄市高中職聯招試題
S99-42高雄市高中職聯招試題
 
Ch5 習題
Ch5 習題Ch5 習題
Ch5 習題
 
Ch4 範例
Ch4 範例Ch4 範例
Ch4 範例
 
Ppt 136-136
Ppt 136-136Ppt 136-136
Ppt 136-136
 
Processing 08
Processing 08Processing 08
Processing 08
 
Ppt 145-149
Ppt 145-149Ppt 145-149
Ppt 145-149
 
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
 
12.第十二章用Matlab计算第二类积分
12.第十二章用Matlab计算第二类积分12.第十二章用Matlab计算第二类积分
12.第十二章用Matlab计算第二类积分
 
一元二次方程
一元二次方程一元二次方程
一元二次方程
 
06.第六章用Matlab计算二重积分
06.第六章用Matlab计算二重积分06.第六章用Matlab计算二重积分
06.第六章用Matlab计算二重积分
 
11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分11.第十一章用Matlab计算多元函数的积分
11.第十一章用Matlab计算多元函数的积分
 

Similar to Ppt 157-163

C语言学习100例实例程序
C语言学习100例实例程序C语言学习100例实例程序
C语言学习100例实例程序
yiditushe
 

Similar to Ppt 157-163 (20)

ncuma_數值積分法.pptx
ncuma_數值積分法.pptxncuma_數值積分法.pptx
ncuma_數值積分法.pptx
 
Ch5 範例
Ch5 範例Ch5 範例
Ch5 範例
 
Ppt 1-50
Ppt 1-50Ppt 1-50
Ppt 1-50
 
C语言学习100例实例程序
C语言学习100例实例程序C语言学习100例实例程序
C语言学习100例实例程序
 
Ch9
Ch9Ch9
Ch9
 
Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍
 
Ch5 教學
Ch5 教學Ch5 教學
Ch5 教學
 
Ch5
Ch5Ch5
Ch5
 
Ch9 教學
Ch9 教學Ch9 教學
Ch9 教學
 
C程式-陣列與指標
C程式-陣列與指標C程式-陣列與指標
C程式-陣列與指標
 
ncuma_邏輯與迴圈.pptx
ncuma_邏輯與迴圈.pptxncuma_邏輯與迴圈.pptx
ncuma_邏輯與迴圈.pptx
 
ncuma_pylab.pptx
ncuma_pylab.pptxncuma_pylab.pptx
ncuma_pylab.pptx
 
Ch10 習題
Ch10 習題Ch10 習題
Ch10 習題
 
Swift Functional Programming
Swift Functional ProgrammingSwift Functional Programming
Swift Functional Programming
 
ncuma_型別與迴圈.pptx
ncuma_型別與迴圈.pptxncuma_型別與迴圈.pptx
ncuma_型別與迴圈.pptx
 
Ppt 1-25
Ppt 1-25Ppt 1-25
Ppt 1-25
 
Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)
 
Ppt 26-50
Ppt 26-50Ppt 26-50
Ppt 26-50
 
人机对弈编程概述
人机对弈编程概述人机对弈编程概述
人机对弈编程概述
 
JCConf 2023 - 深入淺出 Java 21 功能
JCConf 2023 - 深入淺出 Java 21 功能JCConf 2023 - 深入淺出 Java 21 功能
JCConf 2023 - 深入淺出 Java 21 功能
 

More from hungchiayang1 (20)

Exercise 1 3
Exercise 1 3Exercise 1 3
Exercise 1 3
 
P127 135 new
P127 135 newP127 135 new
P127 135 new
 
化學系 python 習題
化學系 python 習題化學系 python 習題
化學系 python 習題
 
化學系 python 練習
化學系 python 練習化學系 python 練習
化學系 python 練習
 
化學系 python 教學
化學系 python 教學化學系 python 教學
化學系 python 教學
 
Ppt 120-126
Ppt 120-126Ppt 120-126
Ppt 120-126
 
Ppt 151-151
Ppt 151-151Ppt 151-151
Ppt 151-151
 
Ppt 143-143
Ppt 143-143Ppt 143-143
Ppt 143-143
 
Ppt 137-137
Ppt 137-137Ppt 137-137
Ppt 137-137
 
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 144-144
Ppt 144-144Ppt 144-144
Ppt 144-144
 
Ppt 152-155
Ppt 152-155Ppt 152-155
Ppt 152-155
 
Ppt 156-156
Ppt 156-156Ppt 156-156
Ppt 156-156
 
Ppt 166-166
Ppt 166-166Ppt 166-166
Ppt 166-166
 
Ppt 165-165
Ppt 165-165Ppt 165-165
Ppt 165-165
 
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
 

Recently uploaded

法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
michaelell902
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
PUAXINYEEMoe
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
PUAXINYEEMoe
 

Recently uploaded (9)

1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
 
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
 
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
 
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade SixMath Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
 

Ppt 157-163

  • 4. 數值積分法 (三) 160  本題分別利用迴圈與公式來估算 的積分,觀察 程式碼可知使用迴圈的計算方式遠比公式來得笨拙許多,主要原因在公 式計算積分中,我們利用了 python 的串列截取語法迅速取得部份串 列,使用一列式子即能求得梯形法的積分估算值,例如以下的式子雖然 看不到迴圈,但卻有滿滿的「迴圈」精神: # 梯形法係數:1,2,2,2,...,2,2,1 isum2 = h * sum( [ ys[0] , 2*sum(ys[1:-1]) , ys[-1] ] ) / 2 以上的 ys 為函數值串列。  由程式執行結果可知,三種數值積分法的積分誤差: Simpson 積分法 < 梯形積分法 < 矩形積分法 執行結果完全符合數值積分的理論預期。 國立中央大學數學系
  • 5. 數值積分法 (四) 161 import pylab pi = pylab.pi # [a,b] 100 等份 a , b , n = pi/4 , pi , 100 # 定義函式 fn = lambda x : abs( pylab.sin(x) - pylab.cos(x) ) # 取等份點成 xs ,向量式運算得 ys xs , h = pylab.linspace(a,b,n+1,retstep=True) ys = abs( pylab.sin(xs) - pylab.cos(xs) ) # rsum : 矩形面積 # lsum : 下矩形面積 , usum : 上矩形面積 , tsum : 梯形面積 rsum , lsum , usum , tsum = 0 , 0 , 0 , 0 y1 = ys[0] # 迴圈計算:矩形、上矩形、下矩形、梯形 for y2 in ys[1:] : rsum += y1 if y1 < y2 : lsum += y1 usum += y2 else : lsum += y2 usum += y1 tsum += y1 + y2 y1 = y2 國立中央大學數學系
  • 6. 數值積分法 (五) 162 rsum *= h lsum *= h usum *= h tsum *= h/2 isum = 1 + pylab.sqrt(2) # 正確解 print( "數學積分 :" , round(isum,9) , end="nn" ) print( "迴圈求積:" ) print( "矩形積分 :" , round(usum,9) , " 誤差:" , round(abs(isum-rsum),10) ) print( "上矩形積分 :" , round(usum,9) , " 誤差:" , round(abs(isum-usum),10) ) print( "下矩形積分 :" , round(lsum,9) , " 誤差:" , round(abs(isum-lsum),10) ) print( "梯形積分法 :" , round(tsum,9) , " 誤差:" , round(abs(isum-tsum),10) ) print() # 公式計算:矩形、梯形、Simpson # 矩形法係數:1,1,1,1,...,1,1 isum1 = h * sum( ys[:-1] ) # 梯形法係數:1,2,2,2,...,2,2,1 isum2 = h * sum( [ ys[0] , 2*sum(ys[1:-1]) , ys[-1] ] ) / 2 # Simpson 1/3 rule 係數:1,4,2,4,2,...,2,4,1 isum3 = h * sum([ ys[0], 4*sum(ys[1:-1:2]), 2*sum(ys[2:-1:2]), ys[-1] ]) / 3 國立中央大學數學系
  • 7. 數值積分法 (六) 163 print( "公式求積:" ) print( "矩形積分法 :" , round(isum1,9) , " 誤差:" , round(abs(isum-isum1),10) ) print( "梯形積分法 :" , round(isum2,9) , " 誤差:" , round(abs(isum-isum2),10) ) print( "Simpson積分:" , round(isum3,9) , " 誤差:" , round(abs(isum-isum3),10) ) 程式輸出: 數學積分 : 2.414213562 迴圈求積: 矩形積分 : 2.435641493 誤差: 0.0118926641 上矩形積分 : 2.435641493 誤差: 0.0214279302 下矩形積分 : 2.392562249 誤差: 0.0216513135 梯形積分法 : 2.414101871 誤差: 0.0001116917 公式求積: 矩形積分法 : 2.402320898 誤差: 0.0118926641 梯形積分法 : 2.414101871 誤差: 0.0001116917 Simpson積分: 2.414213567 誤差: 4.1e-09 國立中央大學數學系