2017-10-19 152 views
2

一筆我計算逆拉普拉斯變換它是一種表達的比較基礎條件的總和反轉:Sympy找不到逆拉普拉斯變換的寬鬆條件

>>> t = symbols('t', positive=True) 
>>> s = symbols('s') 
>>> inverse_laplace_transform(1 - 9/(s + 2) + 5/(s+1) - 1/(s+1)**2, s, t) 

這似乎是能計算出每一個人罰款:

>>> inverse_laplace_transform(-1/(s+1)**2, s, t) 
-t*exp(-t) 
>>> inverse_laplace_transform(5/(s-1), s, t) 
5*exp(t) 
>>> inverse_laplace_transform(9/(s+2), s, t) 
9*exp(-2*t) 
>>> inverse_laplace_transform(1, s, t) 
InverseLaplaceTransform(1, s, t, _None) 

然而,當我把這些的總和,我弄了半天錯誤說,它不能找到多項式

inverse_laplace_transform(1-9 /(s + 2)+5 /(s + 1)-1 /(s + 1)** 2,s,t) sympy.polys.polyersrors.PolynomialDivisionFailed:無法降低程度在分割[EX(-1728 * 3 **(1/3)(9 + sqrt(93))*(1/3)*(27 + 3 * sqrt(93))**時的多項式除法算法中, (2/3)+1728 * 3 **(5/6)I(9 + sqrt(93))**(1/3)*(27 + 3 * sqrt(93))**(2/3))]通過[EX(1)]。 如果係數域中無法檢測到零,則可能發生這種情況。計算的領域是EX。 您可能想要使用不同的簡化算法。 請注意,通常無法保證在此域中檢測到零。

有沒有人知道爲什麼sympy不應該能夠做到這一點的部分總和,當它可以在每個部分分別做到這一點?

回答

1

可能是新版本中的一個錯誤。 SymPy 1.0曾經工作得很好:

>>> inverse_laplace_transform(1 - 9/(s + 2) + 5/(s+1) - 1/(s+1)**2, s, t) 
-t*exp(-t) + InverseLaplaceTransform(1, s, t, _None) + 5*exp(-t) - 9*exp(-2*t) 
+0

我正在使用版本1.1.1,並得到與問題中相同的錯誤。我使用問題中提到的's'和't'的定義,然後我從這裏複製你的表達式,但是沒有bueno。 – Reti43

+0

@ Reti43也許我已經過時了:P在上面,現在檢查 – Uriel

+0

@ Reti43好,看起來像新版本是越野車,因爲老年人給出了正確的結果 – Uriel