一般积分的表达式和相应的求和的近似公式
I
(
x
)
=
∫
a
b
f
(
x
)
d
x
≈
∑
i
=
1
N
f
(
x
i
)
⋅
Δ
x
I(x)=\int^b_a f(x)dx \approx \sum^{N}_{i=1}f(x_i)\cdot \Delta x
I(x)=∫abf(x)dx≈i=1∑Nf(xi)⋅Δx
接下来写一个简单的python脚本实现我们的结论的验证,相应代码如下:
import numpy as np
import matplotlib.pylab as plt
from scipy import integrate
def func(x):
return x**2+np.exp(x)
xmin = 0
xmax = 2
result_i = integrate.quad(func,xmin,xmax)
value_list = range(10,2000,100)
x = np.linspace(xmin,xmax,100)
sum_p,int_p = [],[]
for n in value_list:
delta = (xmax-xmin)/n
result_s = 0
for i in range(n):
result_s = result_s+func(xmin+i*delta)*delta
sum_p.append(result_s)
int_p.append(result_i[0])
fig,axs = plt.subplots(nrows=1,ncols=2)
ax = axs[0]
ax.plot(x,func(x),color='green',linewidth=2)
ax.set(title='Initial function')
ax = axs[1]
ax.plot(value_list,sum_p,color='red',marker='o')
ax.plot(value_list,int_p,color='blue',linewidth=2,linestyle='--')
ax.set(title='Integrate and Sum result',xlabel='Delta numbers')
plt.show()
最后的结果如图所示:
可以发现随着间隔取得越大,求和越来越接近积分的结果!