2017-10-16 20 views
-5

私はP(r、t)として定義されたpdfを持っています。私は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を作成し、私はシンプル

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

用ガンマ= 2、D = 1を聞かせて内蔵の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

関連する問題