利用python对积分与求和的关系的简单测试

一般积分的表达式和相应的求和的近似公式
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
接下来写一个简单的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()

最后的结果如图所示:
在这里插入图片描述
可以发现随着间隔取得越大,求和越来越接近积分的结果!

发布了15 篇原创文章 · 获赞 28 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/edj_13/article/details/104111607