SciPy 多重积分 (nquad)
SciPy 中的多重积分
多重积分 在 SciPy 中用于计算函数在一个以上变量上的积分,即双重、三重或更高维积分。scipy.integrate 模块提供了诸如 dblquad 用于双重积分、tplquad 用于三重积分、quad 用于单重积分以及 nquad 用于多变量积分的函数。
在多重积分中,我们可以定义要积分的函数以及每个变量的积分限,还可以定义任何额外的参数。SciPy 处理有限和无限限,并可以通过为高维问题(如物理模拟和概率分布)提供高效解决方案,在指定范围内积分复杂函数。
n 维空间中区域 D 上的 n 维积分的数学公式 −
多重积分的限取决于 n 维空间中特定的区域 D。
语法
以下是用于计算多重积分的函数 scipy.integrate.nquad() 的语法 −
scipy.integrate.nquad(func, ranges, args=None, opts=None, full_output=False)
参数
以下是 scipy.integrate 模块的 nquad() 函数的参数 −
- func: 要积分的函数。它应将被积分的变量作为单独的参数。
- ranges: 每个变量积分限的列表,以元组 (a, b) 形式给出,其中 a 和 b 是边界。对于不当积分,使用 -inf 或 inf 表示无限限。
- args(optional): 传递给 func 的额外参数。
- opts(optional): 每个维度的积分选项,如容差设置或其他积分器参数。
- full_output(optional): 如果此参数为 True,则积分过程的额外信息将以字典形式返回。
多重积分示例
此示例展示了如何使用 nquad() 对二维函数在指定的矩形区域上执行双重积分。我们可以根据不同应用修改被积函数和限 −
import numpy as np
from scipy.integrate import nquad
# 定义要积分的函数
def integrand(x, y):
return np.sin(x) + np.cos(y)
# 定义 x 和 y 的积分限
# x 从 0 到 pi
# y 从 0 到 pi/2
ranges = [[0, np.pi], [0, np.pi / 2]]
# 执行双重积分
result, error = nquad(integrand, ranges)
# 输出结果
print(f"Double Integral Result: {result}")
print(f"Error Estimate: {error}")
使用 nquad() 函数计算双重积分的输出如下 −
Double Integral Result: 6.283185307179586 Error Estimate: 6.975736996017264e-14
执行双重积分的示例
此示例展示了如何使用 nquad() 对二维函数在指定的矩形区域上执行双重积分。我们可以根据不同应用修改被积函数和限 −
import numpy as np
from scipy.integrate import nquad
# 定义要积分的函数
def integrand(x, y):
return np.sin(x) + np.cos(y)
# 定义 x 和 y 的积分限
# x 从 0 到 pi
# y 从 0 到 pi/2
ranges = [[0, np.pi], [0, np.pi / 2]]
# 执行双重积分
result, error = nquad(integrand, ranges)
# 输出结果
print(f"Double Integral Result: {result}")
print(f"Error Estimate: {error}")
使用 nquad() 函数计算双重积分的输出如下 −
Double Integral Result: 6.283185307179586 Error Estimate: 6.975736996017264e-14
执行三重积分的示例
这是一个使用 Python 中 scipy.integrate 模块的 nquad() 函数进行三重积分的示例。此示例将计算函数 f(x,y,z) = x2+y2+z2 在每个变量指定范围上的积分 −
from scipy.integrate import nquad
# 定义要积分的函数
def func(x, y, z):
return x**2 + y**2 + z**2
# 指定 x、y 和 z 的积分范围
ranges = [[0, 1], [0, 1], [0, 1]]
# 执行三重积分
result, error = nquad(func, ranges)
# 输出结果
print("Result of the triple integration:", result)
print("Estimated error:", error)
以下是借助 nquad() 函数计算多重积分的输出结果 −
Result of the triple integration: 1.0 Estimated error: 2.5808878251226036e-14
nquad() 函数的关键特性
以下是 scipy.integrate 模块中 nquad() 的关键特性 −
- nquad() 函数可处理任意维度的多重积分。
- 该函数支持可变积分限。
- 它可以将额外参数传递给被积函数。
- 该函数通过 opts 参数提供可自定义的积分设置。