我有两个微分方程正在尝试求解。如果我不包括初始条件,在我的计算机上运行下面的代码大约需要一个小时,然后它才会输出一个很长的方程。几个小时后在初始条件下运行代码时我还没有看到任何解决方案。我是不是做错了什么?
import sympy as sp
# solve = False
r1 = 3570
r2 = 3570
r3 = 6e6
c1 = 200e-12
c2 = 200e-12
c3 = 120e-12
t = sp.symbols("t")
V0 = sp.Function('V0')(t)
V1 = sp.Function('V1')(t)
V2 = sp.Function('V2')(t)
dV1 = sp.Derivative(V1, t)
dV2 = sp.Derivative(V2, t)
R1, R2, R3, C1, C2, C3 = sp.symbols("R1 R2 R3 C1 C2 C3")
eq1 = sp.Eq((C1 + C3)*dV1 + ((1/R1) + (1/R3))*V1 + (-C3)*dV2 + (-1/R3)*V2, (1/R1)*V0)
eq2 = sp.Eq((C3)*dV1 + (1/R3)*V1 + (-C3 - C2)*dV2 + (-1/R2)*V2, 0)
sol = sp.dsolve([eq1, eq2], [V1, V2], ics={V1.subs(t,0): 0, V2.subs(t, 0): 0})
# print(sp.latex(sol[1].subs({"R1": r1, "R2": r2, "R3": r3, "C1": c1, "C2": c2, "C3": c3})))
print(sp.latex(sol[1]))
我尝试过简化和删除部分问题以降低复杂性,但我已经达到了可以删除的极限。
我发现this问题有一条评论建议使用wolfram alpha,但我不相信wolfram可以象征性地求解这种形式的微分方程组。 Wolfram Alpha 截图
我不确定我的计算是否完全正确,但 Mathematica 在大约六秒内返回该值。
R1=3570;R2=3570;R3=6*10^6;
C1=200*10^-12;C2=200*10^-12;C3=120*10^-12;
InputForm[Simplify[DSolve[{
(C1+C3)*V1'[t]+(1/R1+1/R3)*V1[t]-C3*V2'[t]-1/R3*V2[t]==1/R1*V0,
C3*V1'[t]+1/R3*V1[t]+(-C3-C2)*V2'[t]-1/R2*V2[t]==0,
V1[0]==0,V2[0]==0}, {V1[t], V2[t]},t]]]
InputForm= {{
V1[t]->(200000*(-4488407412700000-20810839*Sqrt[89768148254]+
(-4488407412700000+20810839*Sqrt[89768148254])*
E^((10000*Sqrt[89768148254]*t)/3927)+8976814825400000*
E^((2500*(1600119+2*Sqrt[89768148254])*t)/3927))*V0)/
(1796430570440848887553*E^((2500*(1600119 + 2*Sqrt[89768148254])*t)/3927)),
V2[t]->(100000*(-5341204821113-29970235839*Sqrt[89768148254]+
(-5341204821113+29970235839*Sqrt[89768148254])*
E^((10000*Sqrt[89768148254]*t)/3927)+10682409642226*
E^((2500*(1600119+2*Sqrt[89768148254])*t)/3927))*V0)/
(1796430570440848887553*E^((2500*(1600119+2*Sqrt[89768148254])*t)/3927))}}
在您考虑相信之前请仔细检查。
输入的长度超出了 WolframAlpha 免费版本的限制,所以我无法检查它是否可以做类似的事情。