Могу ли я использовать Sympy для вывода уравнения телеграфистов? - PullRequest
0 голосов
/ 21 ноября 2018

Я пытался вывести уравнение Telegrapher , используя SymPy.Но я не мог ни обрабатывать, ни извлекать различные части уравнения, поэтому я, наконец, сделал это вручную.Можно ли это сделать с помощью SymPy?Я пытался использовать subs, но не добился хороших результатов.

Спасибо заранее!Следующий код был моей попыткой решить проблему:

from sympy import *
# init_printing(use_unicode=True, wrap_line=False) 
V, I = symbols('V I', cls=Function)
z = Symbol('z') 
t = Symbol('t') 
R, L, C, G = symbols('R L C G', positive=True) 
eq1 = Derivative(V(z, t),z, 1) + R * I(z, t)+L* Derivative(I(z,t),t,1) 
# Derivative(V(z, t), z) + L*Derivative(I(z, t), t) + R*I(z, t) 
eq2 = Derivative(I(z,t),z,1)+G*V(z,t)+C*Derivative(V(z,t),t,1) 
# Derivative(I(z, t), z) + C*Derivative(V(z, t), t) + G*V(z, t) 
eq3 = eq1.diff(z,1) 
#eq3 = L*Derivative(I(z, t), t, z) + R*Derivative(I(z, t), z) +  Derivative(V(z, t), z, z) 
eq4 = eq2.diff(z,1) 
#eq4 = C*Derivative(V(z, t), t, z) + G*Derivative(V(z, t), z) +  Derivative(I(z, t), z, z) 

# Then part of eq1 is replaced in eq4 
# (-1*(R*I(z,t)+L*I(z,t).diff(t,1))) 
eq5 = C*Derivative(V(z, t), t, z) + G*(-1* (R*I(z,t)+L*I(z,t).diff(t,1))) + Derivative(I(z, t), z, z) 

# And similarly for eq2 in eq3 
# (-1*(G*V(z,t)+C*V(z,t).diff(t,1))) 
eq6 = L*Derivative(I(z, t), t, z) + R*(-1* (G*V(z,t)+C*V(z,t).diff(t,1))) + Derivative(V(z, t), z, z) 

# the derivative in time of eq1 
eq7 = eq1.diff(t,1)

# eq7 = L*Derivative(I(z, t), t, t) + R*Derivative(I(z, t), t) + Derivative(V(z, t), t, z) 

# Derivative(V(z, t), t, z) = -1*(L*Derivative(I(z, t), t, t) + R*Derivative(I(z, t), t)) 

# the derivative in time of eq2
eq8 = eq2.diff(t,1)

# eq8 = C*Derivative(V(z, t), t, t) + G*Derivative(V(z, t), t) + Derivative(I(z, t), t, z)

# Derivative(I(z, t), t, z) = -1* (C*Derivative(V(z, t), t, t) + G*Derivative(V(z, t), t)) 

# Replace eq 7 in eq5 
Telegraphers_eq1 = C*-1*(L*Derivative(I(z, t), t, t) + R*Derivative(I(z, t), t)) + G*(-L*Derivative(I(z, t), t) - R*I(z, t)) + Derivative(I(z, t), z, z) 

# Replace eq 8 in eq6 
Telegraphers_eq2 = L*-1*(C*Derivative(V(z, t), t, t) + G*Derivative(V(z, t), t)) + R*(-C*Derivative(V(z, t), t) - G*V(z, t)) + Derivative(V(z, t), z, z) 

ура, Педро

...