示例
已知积分公式如下
求[0.5,5]上积分,即求下图阴影部分面积
根据积分公式求源函数等于:
则确切解等与F(5)-F(0.5)=3.9002072872864524
当不知道源函数时使用以下方法可以求得积分面积
首先定义函数
def func(x):
return np.cos(np.pi) * np.exp(-x) + 1
1、通过迭代计算每个步长矩形面积求和
x = np.linspace(0.5, 5, 1000)
dx = (5-0.5)/1000
y = func(x)
area = np.sum(y * dx)
结果等于:3.8994262124710404
2、通过scipy模块quad直接求积分
area, error = quad(func, 0.5, 5)
quad的结果是 3.9002072872864515
3、使用蒙特卡洛模拟估算积分面积
原理是已知区间【0.5,5】上矩形面积,在矩形范围内随机打点,统计在阴影部分点的占比,从而估算出阴影部分面积。
k = 0
for i in range(N):
r_x = np.random.uniform(low=0.5, high=5, size=1)
r_y = np.random.uniform(low=0, high=1, size=1)
c_v = func(r_x)
if r_y <