0

この積分を実行するために sympy を取得する方法はありますか?

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

Sympy は単に積分を返します:

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

Mathematica はそれを行います:

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

結果:

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

編集:以下の回答を使用して、この積分を実行するより良い方法は次のとおりです。

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

2 に答える 2

0

inf は自動的に oo に再キャストされるため、元の式は SymPy で機能するようになりました。

>>> inf=float('inf')
>>> x=var('x')
>>> L=var('L')
>>> Q.positive(1/L)
Q.positive(1/L)
>>> integrate(besseli(1,x) * exp(-x**2/(4*L)-L),(x,0,inf))
Piecewise(
((exp(L) - 1)*exp(-L), Abs(arg(L)) < pi/2),
(Integral(exp(-L - x**2/(4*L))*besseli(1, x), (x, 0, oo)), True))
于 2019-04-27T17:48:16.317 に答える