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 のサンプルを作成し、簡単にするためにガンマ = 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'