Double integral with function and sampled data Python
类似地,请参考此问题,我需要为采样数据求解一个双重积分,而我不知道生成该函数的函数。我已经知道了这个答案是如何解决此类问题的。
但是,在我的情况下,数据在某个区域之上,该区域根据我作为数组拥有的额外参数而有所不同。为了说明问题,我现在假设它由圆形区域限制。
a,b和r是常数,d是参数列表。我希望列表的结果具有相同的d长度。出于某种原因,我想将其保留在笛卡尔坐标系中。
数据始终覆盖移动区域。我正在考虑切割数据,以便仅将零件保留在该区域中,然后使用问题中的解决方案。我想如果我总是限制数据区域(小于)/在边界内,可能会导致大错误。
在numpy软件包中是否有更好的函数代替使用np.trapz来解决数据数组的确定双积分?
答案 0 :(得分:1)
下面的代码使用nquad()
中的scipy library,并且基于所讨论的方程式和示例here。 chrono::seconds::rep
和result
(绝对错误)存储在数据框中。
导入库
abserr
设置全局变量的值
import pandas as pd
import numpy as np
from scipy import integrate
定义功能
a = 0
b = 10
r = 10
d_list = [1,2,3,4,5]
迭代“ d”中的值
def f(x, y):
return x*y
def bounds_y():
return [a, b]
def bounds_x(y):
return [0, np.sqrt(r**2 - (y-d)**2)]
将结果和错误值保存在数据框中
temp = []
for i in d_list:
d = i # re-set global value of 'd'
temp.append(integrate.nquad(f, [bounds_x, bounds_y]))