Python-Scipy進行數(shù)值積分

Python的Scipy模塊中擁有大量的數(shù)值計算函數(shù),方便我們快速進行數(shù)值計算。

Scipy中的integrate模塊提供了幾種數(shù)值積分算法,導入方式為:

from scipy import integrate

使用integrate時,需要先將要進行積分的方程定義為函數(shù)呻顽。求取一至三重積分的函數(shù)分別為:

integrate.quad(func,a,b,args,full_output)
integrate.dblquad(func,a,b,gfun,hfun,args,epsabs,epsrel)
integrate.tplquad(func,a,b,gfun,hfun,qfun,rfun,args,epsabs,epsrel)

以三重積分為例。func為運算對象函數(shù)丹墨,形式為func(z,y,x)廊遍。a,b對應變量x的積分區(qū)域,gfun,hfun對應變量y的積分區(qū)域贩挣,依次類推喉前。

注意gfun,hfun等的形式應為函數(shù),其中gfun,hfun是自變量為x的函數(shù)王财,qfun,rfun是自變量為x,y的函數(shù)卵迂。這些函數(shù)可以使用lambda函數(shù)進行定義,形式通常為:

lambda x,y:x*y

如果是常函數(shù)绒净,則定義為:

lambda x:0
lambda x,y:1
  • args可選见咒,為傳遞給func的格外參數(shù);

  • full_output可選挂疆,非零則返回積分信息的dictionary改览。如果非零,則還會禁止顯示警告消息缤言,并將消息附加到輸出元組宝当。

  • epsabs可選,絕對容差直接傳遞到內(nèi)部1-D正交積分胆萧。默認值為1.49e-8庆揩。

  • epsrel可選,內(nèi)部1-D積分的相對容差鸳碧。默認值為1.49e-8盾鳞。

運算結果輸出一個元組,第一項為積分結果瞻离,第二項為絕對誤差腾仅,此外還有收斂情況等信息。

以下是一個用integrate.tplquad()計算立方體晶體的LJ勢能的例子:

#To calculate the LJ potential energy between a cubic and an atom
#Author: Lewisbase
#Date: 2019.01.01

from __future__ import division
import numpy as np
from scipy import integrate

#Cubic length width hight A,B,C
A=10
B=10
C=10

#Average sigma(s,A) epsilon(e,K) rho(r,A^-3) of the cubic
s=np.array([4.24,3.84]); e=np.array([208.4541197,69.0609]); r=0.061540355

def LJ_cubic(x,y,z):
    return 4*eps*rho*((sig**2/((xb-x)**2+(yb-y)**2+(zb-z)**2))**6-(sig**2/((xb-x)**2+(yb-y)**2+(zb-z)**2))**3)

lx=50
ly=50
lz=100
dx=lx/101
dy=ly/101
dz=lz/201
x0=lx/2-A/2
x1=lx/2+A/2
y0=ly/2-B/2
y1=ly/2+B/2
z0=lz/2-C/2
z1=lz/2+C/2
for m in np.linspace(0,1,2):    
    for ix in np.linspace(0,100,101):
        for iy in np.linspace(0,100,101):
            for iz in np.linspace(0,200,201):
                xb=ix*dx
                yb=iy*dy
                zb=iz*dz
                sig=s[m]
                eps=e[m]
                rho=r
                if abs(xb-lx/2)<(A/2) and abs(yb-ly/2)<(B/2) and abs(zb-lz/2)<(C/2) :
                    LJ = 1E100
                else:
                    LJ=integrate.tplquad(LJ_cubic,
                        z0,
                        z1,
                        lambda y: y0,
                        lambda y: y1,
                        lambda y,x: x0,
                        lambda y,x: x1)
                LJ=LJ[0]/298.15
                print "%f    %f    %f    %f\n"%(xb,yb,zb,LJ)

有關數(shù)值積分的方法還有高斯積分套利,龍貝格積分等推励,自己暫時還沒有用到,待到以后再做詳細學習肉迫。

參考資料

用Python作科學計算
Scipy.Integrate
Scipy.Integrate.quad
Scipy.Integrate.dblquad
Scipy.Integrate.tplquad

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末验辞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子喊衫,更是在濱河造成了極大的恐慌跌造,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異壳贪,居然都是意外死亡陵珍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門违施,熙熙樓的掌柜王于貴愁眉苦臉地迎上來互纯,“玉大人,你說我怎么就攤上這事磕蒲×袅剩” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵辣往,是天一觀的道長兔院。 經(jīng)常有香客問我,道長排吴,這世上最難降的妖魔是什么秆乳? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任懦鼠,我火速辦了婚禮钻哩,結果婚禮上,老公的妹妹穿的比我還像新娘肛冶。我一直安慰自己街氢,他們只是感情好,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布睦袖。 她就那樣靜靜地躺著珊肃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪馅笙。 梳的紋絲不亂的頭發(fā)上伦乔,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機與錄音董习,去河邊找鬼烈和。 笑死,一個胖子當著我的面吹牛皿淋,可吹牛的內(nèi)容都是我干的招刹。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼窝趣,長吁一口氣:“原來是場噩夢啊……” “哼疯暑!你這毒婦竟也來了?” 一聲冷哼從身側響起哑舒,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤妇拯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后洗鸵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體越锈,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡宣赔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞪浸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儒将。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖对蒲,靈堂內(nèi)的尸體忽然破棺而出钩蚊,到底是詐尸還是另有隱情,我是刑警寧澤蹈矮,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布砰逻,位于F島的核電站,受9級特大地震影響泛鸟,放射性物質發(fā)生泄漏蝠咆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一北滥、第九天 我趴在偏房一處隱蔽的房頂上張望刚操。 院中可真熱鬧,春花似錦再芋、人聲如沸菊霜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鉴逞。三九已至,卻和暖如春司训,著一層夾襖步出監(jiān)牢的瞬間构捡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工壳猜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勾徽,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓蓖谢,卻偏偏與公主長得像捂蕴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子闪幽,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔啥辨,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,771評論 2 9
  • Scipy scipy包含致力于科學計算中常見問題的各個工具箱盯腌。它的不同子模塊相應于不同的應用溉知。像插值,積分,優(yōu)化...
    Aieru閱讀 34,782評論 3 59
  • SciPy簡介 SciPy函數(shù)庫在NumPy庫的基礎上增加了眾多的數(shù)學级乍、科學以及工程計算中常用的庫函數(shù)舌劳。例如線性代...
    羽恒閱讀 5,685評論 4 6
  • 包(lib)、模塊(module) 在Python中玫荣,存在包和模塊兩個常見概念甚淡。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,812評論 0 27
  • 生老病死贯卦,是人的一生必經(jīng)的過程。死者仿佛是被死神不知道用什么樣的規(guī)則所選擇出來召喚的焙贷,沒有年歲的限制撵割,沒有品行的限...
    e8e976845a84閱讀 632評論 1 2