sympy에서 fourier_transform값이 이상하게 나옵니다.

조회수 611회

from sympy import fourier_transform, exp,symbols
from sympy.abc import x, k

a=fourier_transform(exp(-x**2), x, k)

s=symbols('s')
Ori=(s)*exp(-(x**2)/(s**2))

FT=fourier_transform(Ori,x,k)
a.subs({k:1}).evalf()
>>>9.16769605680502e-5
FT.subs({s:1,k:1}).evalf()
>>>FourierTransform(exp(-x**2), x, 1)

FT.subs({s:1,k:1}).evalf()의 값이 a.subs({k:1}).evalf()처럼 숫자로 나와야하는데 숫자가 안 나옵니다. 무엇이 잘못된 것인가요??

Ori는 x에 대한 함수이고, Ori를 k에 대하여 Fourier Transform을 했으므로 즉 FT에는 x가 정의되어 있지 않는데 FourierTransform(exp(-x**2), x, 1)에서 x가 정의되어 있는 것도 이해가 되지 않습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 이미 답변을 드렸던 건인데...도움말을 충분히 안읽어본 모양입니다.

    FourierTransform(exp(-x**2), x, 1) 이 자체는 아직 수행전인 겁니다.

    명시적으로 doit 을 실행하여 수식을 얻고 그것을 평가하면 됩니다.

    최대한 단계별로 끊어서 작성했으니 보고 이해했으면 합니다.

    ...
    ...
    FT=fourier_transform(Ori,x,k)
    print(a.subs({k:1}).evalf())
    
    F = FT.subs({s:1,k:1}).evalf()
    print(F)
    F2 = F.doit()
    print(F2)
    V = F2.evalf()
    print(V)
    
    9.16769605680502e-5
    FourierTransform(exp(-x**2), x, 1)
    sqrt(pi)*exp(-pi**2)
    9.16769605680502e-5
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)