我对sympy并不陌生,并且正在学习它。我在浏览文档和堆栈交换中的问题,这些问题和有关使用sympy符号求解具有初始条件的微分方程组的问题。
我有一个简单的ODE-s系统
( dV/dt ) = -( 1 / RC ) * ( V(t) ) + I(t)/C
( dI/dt ) = -( R1 / L ) * ( I(t) ) - ( 1 / L) * V(t) + Vs/L
Run Code Online (Sandbox Code Playgroud)
有初始条件V(0) = V0和I(0) = I0
我在堆栈交换中浏览了很多问题,但未成功找到合适的答案。如果有人可以向我展示一种以初始条件进入耦合微分方程组的语法,那将有很大的帮助。
仅 SymPy 的开发版本支持 ODE 系统。它将在0.7.6中添加。语法是
V, I = symbols("V I", cls=Function)
RC, t, C, Vs, L, R1, V0, I0 = symbols("RC t C Vs L R1 V0 I0")
system = [Eq(V(t).diff(t), -1/RC*V(t) + I(t)/C), Eq(I(t).diff(t), -R1/L*I(t) - 1/L*V(t) + Vs/L)]
ics = {V(0): V0, I(0): I0}
dsolve(system, [V(t), I(t)], ics=ics)
Run Code Online (Sandbox Code Playgroud)
似乎有一个错误阻止它在当前的 SymPy master 中工作,除非我输错了一些东西(https://github.com/sympy/sympy/issues/8193)。