2015-05-29 61 views
0

我想绘制一张图来说明一个简单函数(y = x^2)的辛普森/梯形积分公式。 scipy的simps和trapz函数有助于计算面积,但我也想重叠绘制原曲线上的梯形/抛物线。我想知道是否有任何现有的例程,如果没有,这将有助于得到一些想法如何使这些情节。如何说明python中的Simpson/Trapezoidal规则?

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) 
+1

没有标准例程来绘制你想要的。尝试自己制作情节,如果遇到麻烦,也许这里有人会帮忙。事实上,你只是说“我有这个想法,写我的代码来做到这一点。” – tom10

回答

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() 

在哪里,我只是做了陷阱逼近,你需要定义一个函数来绘制辛普森积分法近似填写