2017-10-16 46 views
-5

我有一個pdf定義爲P(r,t)。我想在python中定義pdf,但是對於程序來說是新的,我不確定是否正確定義了它。這是我想要定義的pdf。 1函數定義正確嗎?

from scipy.special import gamma as G 

def A(gamma, d): 
return np.power(G((d + 2)/gamma)/(G(d/gamma)), (gamma/2)) 

def B(gamma, d): 
return np.log(gamma * np.power(G((d + 2)/gamma), (d/2))/np.power(G(1/gamma), ((d + 2)/2))) 

def dispersion(gamma, d, t, D): 
return np.power((D * t), (2/gamma)) * g(gamma, d) 

def pdf(gamma, d, r, t, D): 
return (1/np.power(dispersion(gamma, d, t, D), (d/2))) * np.exp((-A(gamma, d) * np.power((r/np.sqrt(g(gamma, d))), gamma)) + B(gamma, d)) 

我試圖繪製PDF格式,但我不斷收到一個錯誤,所以我想確認我有什麼上面是正確的之前,我嘗試繼續前進。任何幫助,將不勝感激!另外,我使用G來表示伽馬函數,而伽馬來表示伽瑪變量。

其中誤差是來自:我創建了一個示例100x1000我讓伽瑪= 2並且d = 1爲了簡單起見

def pdf(gamma, d, r, t, D): 
return (1/np.power(dispersion(gamma, d, t, D), (d/2))) * np.exp((-A(gamma, d) * np.power((r/np.sqrt(g(gamma, d))), gamma)) + B(gamma, d)) 

r = range(100) 
t = range(1000) 
gamma = 2 
d = 1 
D = 2 
p = pdf(gamma, d, r, t, D) 
plt.plot(r, p) 
plt.show() 

TypeError: unsupported operand type(s) for *: 'int' and 'range' 
+2

請發表完整的錯誤。 – Craig

+0

我的錯誤來自這樣一個事實,即當我試圖繪製PDF時,我沒有定義我的變量,但我不確定PDF的支持是什麼。 – bazinga

+2

如果你沒有顯示錯誤和導致錯誤的代碼,那麼沒有人能夠幫助你。 – Craig

回答

0

內置range功能不支持乘法運算。相反,您希望使用numpyarray,您可以使用arange()函數在此情況下創建它。

import numpy as np 
import matplotlib.pyplot as plt 

def pdf(gamma, d, r, t, D): 
    return (1/np.power(dispersion(gamma, d, t, D), (d/2))) * np.exp((-A(gamma, d) * np.power((r/np.sqrt(g(gamma, d))), gamma)) + B(gamma, d)) 

r = np.arange(100) 
t = np.arange(1000) 
gamma = 2 
d = 1 
D = 2 
p = pdf(gamma, d, r, t, D) 
plt.plot(r, p) 
plt.show() 
+0

我曾經使用過類似情節的代碼,所以我沒有意識到這是我的錯誤。謝謝! – bazinga