Можно ли заставить SymPy либо вычислить интеграл, либо сказать, почему он не может вычислить интеграл? - PullRequest
1 голос
/ 01 февраля 2020

Я пытаюсь вычислить интеграл, в частности, преобразование Лапласа, кусочной функции.

w_k = k*t, 0 <= t <= 1/k
      1,   otherwise

Поэтому я попытался интегрировать его следующим образом:

from sympy import *
t, k = symbols('t k', positive=True)
w_k = Piecewise((k*t, (0 <= t)&(t <= 1/k)), (1, True))

integrate(w_k * exp(-s*t), (t, 0, oo)).doit()
Out:
∞                         
⌠                         
⎮ ⎧     -s⋅t          1   
⎮ ⎪k⋅t⋅ℯ      for t ≤ ─   
⎮ ⎪                   k   
⎮ ⎨                     dt
⎮ ⎪   -s⋅t                
⎮ ⎪  ℯ        otherwise   
⎮ ⎩                       
⌡                         
0                         

Использование laplace_transform дает мне тот же результат.

Я в курсе что иногда необходимо выполнить определенные условия для интеграции функции с помощью SymPy, но я действительно не уверен, что для этой функции требуется что-то кроме положительных переменных. Есть ли способ заставить SymPy либо вычислить интеграл, либо объяснить, почему это невозможно?

1 Ответ

0 голосов
/ 01 февраля 2020

Попробуйте:

import math
from sympy import *
s = Symbol('s', positive=True)
t = Symbol('t', positive=True)
k = Symbol('k', positive=True)
function = Piecewise((k*t, (0 <= t)&(t <= 1/k)), (1, True))
result = integrate(function * exp(-s*t), (t, 0, math.inf))

Вывод:

k/s**2 + exp(-s/k)/s + (-k - s)*exp(-s/k)/s**2
...