2013-06-03 2 views
0

이 적분을 수행하기 위해 sympy를 얻을 수있는 방법이 있습니까?베셀 함수를 사용한 적분

Integral(exp(-L - x**2/(4*L))*besseli(1, x), (x, 0, +inf)) 

티카이 작업을 수행합니다 :

x=var('x') 
L=var('L') 
Q.positive(1/L) 
integrate(besseli(1,x) * exp(-x**2/(4*L)-L),(x,0,inf)) 

Sympy는 적분을 반환

Integrate[BesselI[1, x] Exp[-(x^2/(4 L)) - L], {x, 0, Infinity}] 

결과 :

ConditionalExpression[1 - E^-L, Re[1/L] > 0] 

편집 : 아래에 제공된 응답을 사용하여 더 나은 이걸 수행하는 방법 ntegral은 다음과 같습니다

L=var('L',real=True,positive=True) 
x=var('x',real=True,positive=True) 
integrate(besseli(1,x) * exp(-x**2/(4*L)-L),(x,0,oo)) 
+0

Sympy가 나에게 옳은 것을 제공합니다. 어떤 버전을 실행하고 있습니까? – Lucas

+0

'''$ python -c "import sympy; sympy를 인쇄하십시오 .__ version__" 0.7.2''' * 당신은 어떤 버전을 사용하고 있습니까? 어쩌면 최신 버전이 필요합니까? – keflavich

+1

SymPy에서 무한대는'inf '가 아니라'oo'입니다. – asmeurer

답변

2

문제는 당신은 내가 Float('inf') 추측 inf를 사용하는 것입니다. 상징적 인 무한대 인 oo을 원합니다. SymPy는 Float('inf')oo으로 변환하는 데 더 스마트해야합니다.

In [1]: x=var('x') 

In [2]: L=var('L') 

In [3]: Q.positive(1/L) 
Out[3]: Q.positive(1/L) 

In [5]: integrate(besseli(1,x) * exp(-x**2/(4*L)-L),(x,0,oo)) 
Out[5]: 
⎧  ⎛ L ⎞ -L    │     ⎛  1   ⎞│ π 
⎪  ⎝ℯ - 1⎠⋅ℯ   for │periodic_argument⎜─────────────, ∞⎟│ < ─ 
⎪         │     ⎝polar_lift(L) ⎠│ 2 
⎪ 
⎪∞ 
⎪⌠ 
⎨⎮   2 
⎪⎮  x 
⎪⎮ -L - ─── 
⎪⎮  4⋅L 
⎪⎮ ℯ  ⋅besseli(1, x) dx     otherwise 
⎪⌡ 
⎩0 
+1

'inf' 대'oo '에 https://code.google.com/p/sympy/issues/detail?id=3866을 열었습니다 '물건. – asmeurer

+0

감사! 예쁜 프린트 출력을 어떻게 생성합니까? – keflavich

+0

'pprint' 또는'init_printing'을 사용하여 자동으로 수행하십시오. 나는 isympy를 사용하고 있는데, 자동으로 그렇게한다. – asmeurer