[英]Integrate with scipy.integrate.simps but over a subset
我有一個域X
離散X_0, ... X_n
。 我想使用scipy.integrate.simps
集成功能f(x) = x^0.5
。 但是,我不想在整個X
進行積分,而是在[a, b] \\in X
進行積分。
現在,總積分\\int_X f(x) dx
將使用
X = np.linspace(1, 2) # generate discretized space
simps(X**0.5, X)
但是,如果我只想在1.5和2之間進行集成怎么辦? 當我無法確保離散化網格實際上具有點X_i = 1.5
時,是否有任何方法無需手動插值f(1.5)即可?
您描述的情況非常不尋常; 通常,當一個人可以隨意評估一個函數時,應該使用quad
方法進行積分。 讓集成例程決定在哪里評估函數要比在等距的點盲目評估然后嘗試從中獲取積分要有效得多。
但是,如果您對已經分散的函數不滿意, 並且不想進行插值,那么一種快速而骯臟的方法是將積分范圍之外的值替換為零:
simps(np.where(X >= 1.5, Y, 0), X)
由於這種截斷會產生不連續的功能,因此集成的准確性將不如通常的辛普森公司高。 與實際值0.660873 ...相比,上面的返回0.660880 ...相反,在整個間隔(1、2)中, simps
在小數點后產生6個正確的數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.