Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Symphy替换odeint的初始条件(如果存在)_Python_Numpy_Scipy_Enthought_Sympy - Fatal编程技术网

Python 使用Symphy替换odeint的初始条件(如果存在)

Python 使用Symphy替换odeint的初始条件(如果存在),python,numpy,scipy,enthought,sympy,Python,Numpy,Scipy,Enthought,Sympy,我试图在python中使用odeint解决一组耦合的ODE;我最初创建了一个程序来解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

我试图在python中使用odeint解决一组耦合的ODE;我最初创建了一个程序来解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

v0-v8
所有函数都是同一个自变量吗?对不起,我不完全理解你的要求。v0'-v8'是上面方程式的函数(隐式),我将编辑上面的帖子,将它们显示为方程式。你能发布将v0-v8定义为sympy符号的代码吗?@silvado我将其编辑到帖子底部。不清楚你在问什么。例如,这意味着什么:
是否有一种方法可以在不知道v0-v8的哪些值存在的情况下替换v0-v8的值
?此外,还不清楚您是如何将
scipy.odeint
sympy
混合在一起的。最后,为什么要使用
交换=False