2017-10-16 15 views
-5

나는 P (r, t)로 정의 된 pdf를 가지고있다. 나는 파이썬으로 pdf를 정의하려고 노력하고 있지만, 프로그램을 처음 사용하고 올바르게 정의했는지 확신 할 수 없다. 여기에 내가 정의하려고하는 pdf가 있습니다.함수가 올바르게 정의 되었습니까?

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)) 

1 나는 PDF를 플롯하려고하지만 오류가 계속, 그래서 내가 이동하기 전에 내가 무엇을 위해야하는 것이 올바른지 확인합니다. 어떤 도움을 주시면 감사하겠습니다! 또한 감마 함수는 G를, 감마 변수는 감마를 사용합니다. 오류가 어디에서 오는

은 : I 샘플 100x1000를 생성하고 I 단순성

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