Я пытаюсь сделать обратный преобразование Лапласа обобщенной рациональной функции вида: D/(A * s ** 2 + B * s + C) используя sympy.Обратное преобразование Лапласа рациональной функции с полиномиальным знаменателем третьего порядка, используя 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 = B/((s - A)**2 + B**2)
SymPy приведет к уравнению вида, как это:
-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
, который не то, что я должен был бы. Любые предложения о том, как сделать симпатичный подход к такому человекообразному ответу?
Если вы знаете, что A и B являются реальными, установите их так, когда вы их создаете ('A, B = символы (« A: B », real = True)'). – asmeurer
Да @asmeurer, который работал для случая: 'eq = B/((s - A) ** 2 + B ** 2)'. Но по-прежнему остается основной вопрос: , если я введу 'A, B, C = символы (« A: C », real = True)', с 'eq = B/(s ** 2 - 2 * A + C * * 2) ', обратное преобразование Лапласа приведет только к бесконечным циклам ЦП. Есть идеи ? –
Может ли клавиатура прерывать ее после ее запуска некоторое время и вставить трассировку где-нибудь? – asmeurer