边界如何解决数据数组的双积分? Python

时间:2018-07-16 03:43:19

标签: python numpy integral

Double integral with function and sampled data Python

类似地,请参考此问题,我需要为采样数据求解一个双重积分,而我不知道生成该函数的函数。我已经知道了这个答案是如何解决此类问题的。

但是,在我的情况下,数据在某个区域之上,该区域根据我作为数组拥有的额外参数而有所不同。为了说明问题,我现在假设它由圆形区域​​限制。

enter image description here

a,b和r是常数,d是参数列表。我希望列表的结果具有相同的d长度。出于某种原因,我想将其保留在笛卡尔坐标系中。

数据始终覆盖移动区域。我正在考虑切割数据,以便仅将零件保留在该区域中,然后使用问题中的解决方案。我想如果我总是限制数据区域(小于)/在边界内,可能会导致大错误。

在numpy软件包中是否有更好的函数代替使用np.trapz来解决数据数组的确定双积分?

1 个答案:

答案 0 :(得分:1)

下面的代码使用nquad()中的scipy library,并且基于所讨论的方程式和示例herechrono::seconds::represult(绝对错误)存储在数据框中。

导入库

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]))

enter image description here