[英]Fast Numerical Integration in Python
我有一個程序涉及多次計算一個定積分,並一直在努力尋找一種方法來快速完成。 我需要解決的積分有以下形式:
我必須為r的許多不同值求解這個積分,這既影響積分的極限,也影響積分(通過函數g)。 因此,我沒有找到一種方法來對問題進行矢量化,而必須依賴於循環。 這顯着減慢了問題,因為我需要在每個循環中進行函數調用。 下面是使用循環(使用組合數據和函數)的一種方法:
import numpy as np
f = lambda x: x**2
g = lambda x: np.log(x)
b=1000
r = np.arange(10,500,10)
a = 1.1*r+r**-1
def loop1(r,a):
integration_range=[np.linspace(a[i],b,1000) for i in range(len(a))]
out=np.zeros(len(r))
i=0
while i<len(r):
out[i]=np.trapz(f(integration_range[i])*a_pdf(integration_range[i]-r[i]),integration_range[i])
i=i+1
return out
這大約需要17.7毫秒,這對我目前的需求來說太慢了。 我不太關心積分是否超精確; 我很滿意一個解決方案,它給出的近似值在真實值的1%以內。 任何幫助將不勝感激!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.