2015-05-29 27 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() 

在哪裏,我只是做了陷阱逼近,你需要定義一個函數來繪製辛普森積分法近似填寫