我在python中使用odeint;我最初创建程序来解决3个指定的方程式(我使用sympy.subs表示我知道的每个值),但现在我希望解决N个很多耦合的ODE . 我遇到的问题是如何正确地替换初始条件给定这些方程式我不知道哪些值存在(即必须替换哪些值) .

例如:对于3x3矩阵的输入,我拥有的一组ODE是:

v0' = -6*v1*v3 - 12*v2*v6
v1' = -3*v1*(6 + v4) - 9*v2*v7 + 3*(3 + v0)*v1
v2' = -6*v2*(9 + v8) + 6*(3 + v0)*v2
v3' = 3*v3*(3 + v0) - 9*v5*v6 - 3*(6 + v4)*v3
v4' = 6*v3*v1 - 6*v5*v7
v5' = 9*v3*v2 - 3*v5*(9 + v8) + 3*(6 + v4)*v5
v6' = 6*v6*(3 + v0) - 6*(9 + v8)*v6
v7' = 9*v6*v1 + 3*v7*(6 + v4) - 3*(9 + v8)*v7
v8' = 12*v6*v2 + 6*v7*v5

我在矢量中有v0-v8的初始值(其中v0-v8通过SymPy设置为符号)但没有在每个值中手动替换,我不知道如何解决这个问题 .

有没有办法在不知道v0-v8的哪些值存在的情况下替换v0-v8的值 . (对于不同大小的矩阵,初始值的数量也会发生变化 - 即4x4具有v0-v15)

编辑:编辑,以便将v0'-v8'显示为耦合的ODE的函数 . 然而,当在odeint中输入它们时,方程式通过它们在向量中的位置隐含地等于v0'-v8' .

v0-v8由以下人员创建:

v = sy.symbols('v0:%d'%matSize, commutative=False)

其中matSize是一个输入int,它与输入矩阵的大小相关 .