一般积分的表达式和相应的求和的近似公式
接下来写一个简单的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()
最后的结果如图所示:
可以发现随着间隔取得越大,求和越来越接近积分的结果!