python积分scipy.integrate
scipy.integration提供多种积分的工具,主要分为以下两类。
- 对给出的函数公式积分:quad dblquad tplquad fixed_quad quadrature romberg
- 对于采样数值进行积分:trapz cumtrapz simpz romb
本文关注于对数值积分的trapz以及cumtrapz函数。
trapz 采样数值计算得出积分
cumtrapz 累计计算积分
trapz
trapz(y, x=None, dx=1.0, axis=-1)
对y(x)在给定的轴上计算积分值,计算采样数值与x轴围成图形的面积
参数:
- y: 需要被积分的数值序列
- x: y中元素的间距,积分变量。若为空,则y元素的间距默认为dx
- dx: 如果x为空,y中元素的间距由dx给出
- axis: 确定积分轴
返回:
- out: float类型,一个有限的数近似的给出y的积分值,即与x轴围成的面积
>>> import numpy as np
>>> np.trapz([1, 2, 3])
4.0
>>> np.trapz([1, 2, 3], [4, 6, 8])
8.0
>>> a = np.arange(6).reshape(2, 3)
>>> a
array([[0, 1, 2],
[3, 4, 5]])
>>> np.trapz(a, axis=0)
array([ 1.5, 2.5, 3.5])
>>> np.trapz(a, axis=1)
array([ 2., 8.])
cumtrapz
cumtrapz(y, x=None, dx=1.0, axis=-1, initial=None)
参数:
- y: 需要被积分的数值序列
- x: y中元素的间距,积分变量。若为空,则y元素的间距默认为dx
- dx: 如果x为空,y中元素的间距由dx给出
- axis: 确定积分轴
- initial: 如果提供,则用该值作为返回值的第一个数值
返回:
- res: 数组类型。y根据x轴的积分值
>>> import numpy as np
>>> from scipy import integrate
>>> import matplotlib.pyplot as plt
>>> y = np.linspace(-2, 2, num=20)
>>> y_int = integrate.cumtrapz(y)
>>> plt.plot(y_int, 'ro', y, 'b-')
>>> plt.show()