如何使用dsolve分配正数和实数系数

时间:2014-11-02 18:04:01

标签: integer wolfram-mathematica differential-equations

所以我想解决这些等式

FullSimplify[DSolve[{iL''[t] + iL[t]/(C*L) == Vc[t]/(C*L*R), 
C*Vc''[t] + Vc'[t]/R + Vc[t]/L == Vin/L}, {iL[t], Vc[t]},t]
{{C, L, R} \[Element] Reals && C >= 0 && L >= 0 && R >= 0}] 

象征性地,我想把R,L和C作为一个正实数整数,但解决方案总是带有想象器部分是否还有其他方法使用dsolve

1 个答案:

答案 0 :(得分:0)

假设变量大于零意味着变量也是Real。整数不会帮助你解决这个问题。

如果R,L和C大于零且小于无穷大,则将两边相乘以消除分母将大大加快并简化Mathematica中的几乎任何计算。

如果你有一些简单的初始条件,它会更简单,也许更快。

这摆脱了Vc中的虚部和iL中的几乎所有虚部

Simplify[ExpToTrig[DSolve[{
  iL''[t]*C*L*R + iL[t]*R == Vc[t], 
  Vc''[t]*C*L*R + Vc'[t]*L + Vc[t]*R == Vin*R},
  {iL[t], Vc[t]}, t]],
L > 0 && C > 0 && R > 0]

而且速度相当快。

FullSimplify慢得多,但是如果你等了,那么结果就是

{{iL[t] -> (E^(-(t/(2 C R))) (L Sqrt[L - 4 C R^2] (C[3] + C R C[4])
 Cosh[(Sqrt[1 - (4 C R^2)/L] t)/(2 C R)] + E^(t/(2 C R)) Sqrt[L - 4 C R^2]
 (L Vin - L (-R C[1] + C[3] + C R C[4]) Cos[t/Sqrt[C L]] + Sqrt[C L] R
 (L C[2] + C[3]) Sin[t/Sqrt[C L]]) + Sqrt[L] ((L - 2 C R^2) C[3] + C L R C[4])
 Sinh[(Sqrt[1 - (4 C R^2)/L] t)/(2 C R)]))/(L R Sqrt[L - 4 C R^2]), 
Vc[t] -> ((L - 4 C R^2) Vin + E^(-(t/(2 C R))) ((L - 4 C R^2) C[3]
 Cosh[(Sqrt[1 - (4 C R^2)/L] t)/(2 C R)] + Sqrt[L (L - 4 C R^2)]
 (C[3] + 2 C R C[4]) Sinh[(Sqrt[1 - (4 C R^2)/L] t)/(2 C R)]))/(L - 4 C R^2)}}

根据L是否大于或等于4 CR ^ 2,在该结果中有更多潜在的复杂值,然后必须进一步简化以获得Real结果,无论如何。