我想用一个图来说明一个简单函数(y = x ^ 2)的Simpson / Trapezoidal积分公式。 scipy中的simps和trapz函数有助于计算面积,但我还想在原始曲线上绘制梯形图/抛物线。我想知道是否有任何现有的例行程序,如果没有,对于如何制作这些图表有所帮助。
import numpy as np
from scipy.integrate import simps, trapz
x=np.arange(9)
y=x**2
area=simps(y,x)
print area
area=trapz(y,x)
print area
plot(y,x)
答案 0 :(得分:1)
我建议使用matplotlib,功能如fill_between
,
import numpy as np
from scipy.integrate import simps, trapz
import matplotlib.pyplot as plt
def f(x):
return x**2
fig, ax = plt.subplots(1,1)
#Continous curve
x=np.arange(0,9,0.01)
y=f(x)
ax.plot(y,x, 'k-')
#Trapizium
xstep = np.arange(0,10,3)
area=trapz(y,x)
print area
ax.fill_between(f(xstep), 0, xstep)
#Simpsons
area=simps(y,x)
print area
#etc etc
plt.show()
在我只进行陷阱近似的情况下,您需要定义一个函数来绘制simpsons规则近似值之间的填充