我正在尝试计算分段函数的积分,特别是拉普拉斯变换。
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 计算积分,或者解释为什么它不可能?
最佳答案
试试这个:
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
关于python - 是否可以强制 SymPy 计算积分,或者告诉我为什么它无法计算积分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60019941/