有时, 一个功能积分起来非常复杂, 或者不能通过分析积分。然后可以通过数值积分法求解。 SciPy提供了一些执行数值积分的例程。 scipy.integrate库包含其中大多数功能。
- 单积分
scipy.integrate.quad(f, a, b),
参数:
f-要积分的函数名称
a-这是一个下限。
b-是上限。
让我们考虑在a到b范围内积分的高斯函数。我们定义函数f(x)= e-x2, 这可以使用lambda表达式完成, 并将quad方法应用于给定函数。
import scipy.integrate
from numpy import exp
f= lambda x:exp(-x**2)
i = scipy.integrate.quad(f, 0, 1)
print(i)
【SciPy如何计算积分(详细用法看这里————)】输出
(0.7468241328124271, 8.291413475940725e-15)
在上面的程序中, 我们使用了返回两个值的quad()函数。第一个值是整数, 第二个值是整数值的绝对误差的估计值。
注意:由于quad()函数需要函数作为第一个参数, 因此我们不能直接将expression作为参数传递。它允许正无穷大为负。多重积分
诸如双重和三重积分之类的多重积分总结为函数dblquad(), tplquad()和nquad()。在这里, 我们考虑使用scipy.integrate.dblquad(func, a, b, gfun, hfun)解决的双积分问题。第一个参数func是要积分的函数的名称, 而a和b是x变量的下限和上限。 gfun和hfun是定义y变量下限和上限的函数的名称。让我们考虑以下示例:
import scipy.integrate
from numpy import exp
from math import sqrt
f = lambda x, y : 16*x*y
g = lambda x : 0
h = lambda y : sqrt(1-4*y**2)
i = scipy.integrate.dblquad(f, 0, 0.5, g, h)
print(i)
输出
(-0.5, 4.412025764622231e-14)
scipy.integarte包含许多其他积分函数, 包括nquad(), 它们执行n倍多重积分。
推荐阅读
- web APP 开发之踩坑手记
- SciPy输入和输出
- SciPy使用FFTpack实现傅立叶变换
- Python SciPy教程介绍
- SciPy所有常数解释
- Pandas和NumPy之间有什么区别()
- Pandas时间序列最全面的解析——
- Pandas时间段应该这样使用————
- Pandas时间偏移这样使用就好了————