Math 三阶多项式分母有理函数的拉普拉斯逆变换

Math 三阶多项式分母有理函数的拉普拉斯逆变换,math,sympy,symbolic-math,symbolic-computation,Math,Sympy,Symbolic Math,Symbolic Computation,我正试图做一个广义有理函数的拉普拉斯逆变换,形式如下: D/(A*s**2+B*s+C) 使用sympy from sympy import * from sympy import inverse_laplace_transform as ilt from sympy.abc import s, t var('A:D') eq = D/(A*s**2 + B*s + C) solution = ilt(eq, s, t) 从数学分析中知道答案是: -(A (e^(t (-1/2 sqrt(C^

我正试图做一个广义有理函数的拉普拉斯逆变换,形式如下: D/(A*s**2+B*s+C) 使用sympy

from sympy import *
from sympy import inverse_laplace_transform as ilt
from sympy.abc import s, t
var('A:D')
eq = D/(A*s**2 + B*s + C)
solution = ilt(eq, s, t)
从数学分析中知道答案是:

-(A (e^(t (-1/2 sqrt(C^2-4 B)-C/2))-e^(t (1/2 sqrt(C^2-4 B)-C/2))))/sqrt(C^2-4 B)
但是,sympy不会产生解决方案,代码将停留在一个无限的CPU进程中,没有特定的增益。 但是把eq放在这里:

eq = B/((s - A)**2 + B**2)
-I*(I*exp(t*im(B))*sin(t*(re(B) - im(A))) - exp(t*im(B))*cos(t*(re(B) - im(A)))
+ I*exp(-t*im(B))*sin(t*(re(B) + im(A))) + exp(-t*im(B))*cos(t*(re(B) + im(A))))
*exp(t*re(A))*Heaviside(t)/2
sympy将得到如下形式的方程式:

eq = B/((s - A)**2 + B**2)
-I*(I*exp(t*im(B))*sin(t*(re(B) - im(A))) - exp(t*im(B))*cos(t*(re(B) - im(A)))
+ I*exp(-t*im(B))*sin(t*(re(B) + im(A))) + exp(-t*im(B))*cos(t*(re(B) + im(A))))
*exp(t*re(A))*Heaviside(t)/2
这不是我需要的。
关于如何让sympy屈服于这样一个人类可读的答案的任何建议?

看看回溯,这看起来是一个合法的bug。你应该在报告中报告

如果你知道A和B是实数,那么在你创建它们的时候就把它们设置成实数(
A,B=symbols(“A:B,real=True”)
)。是的@asmurer对这种情况有效:
eq=B/((s-A)**2+B**2)
。但主要问题仍然存在:如果我引入
A,B,C=symbols(“A:C,real=True)
,使用
eq=B/(s**2-2*A+C**2)
,逆拉普拉斯变换只会导致无限的CPU周期。有什么想法吗?你能在它运行一段时间后用键盘打断它并将回溯粘贴到某个地方吗?@asmurer你在这里:[这是键盘的中断:
来自sympy import*;来自sympy import s,t;来自sympy import逆拉普拉斯变换为ilt;a,B=符号(“a:B”);eq=1/(s**2-a*2*s+B**2);ilt(eq,s,t)
哦,把最后一个
]
作为链接的一部分也是如此。