2017-04-19 58 views
0

我有以下功能:Python的劇情的積分與離散和連續參數

def sbeta(beta,gamma,y): 
    k = 2/(np.pi)**2. 
    return k * np.sqrt(1 - (np.sqrt(1-y**2.)*np.sin(beta)*np.cos(gamma) - y*np.cos(beta))**2.) 

其中的β爲常數,y是在-1和1之間定義爲:

beta = 23.4 
y = numpy.linspace(-1, 1, 100) 

欲繪製該函數對於從0到2pi評估的伽瑪的積分:

def integral(beta,gamma,y): 
    for i in range(len(y)): 
     I = integrate.quad(sbeta, 0., 2*np.pi, args=(beta, y[i])) 
     print(I) 
     plt.plot(y[i],I[0]) 

gamma = np.linspace(0., 2*np.pi, 10) 
integral(beta,gamma,y) 
plt.show() 

此時沒有錯誤,但我不認爲這是正確的。我想計算gamma作爲從0到2pi的變量的積分,但y是一個離散數組。如何從-1和1計算並繪製10 y值?我應該使用scipy.integrate.cumtrapz嗎?

回答

0

這是我嘗試了答案:

import numpy as np 
import matplotlib.pyplot as plt 
from scipy import integrate 


def f(gamma, y): 
    k = 2/(np.pi)**2. 
    beta = 23.4*(np.pi/180.) 
    return k * np.sqrt(1 - (np.sqrt(1-y**2.)*np.sin(beta)*np.cos(gamma) - y*np.cos(beta))**2.) 


y = np.linspace(-1., 1.,10) 
low = 0. 
high = 2*np.pi 

Ivals = [] 
for i in range(len(y)): 
    I = integrate.quad(f, low, high, args=(y[i])) 
    plt.scatter(y[i],I[0]) 
    Ivals.append(I) 
plt.show() 

這顯示了以下情節:

enter image description here

誰能確認這是否是正確的嗎?