我有一个微分方程系统看起来像(为乳胶道歉!)......

\dot{M}(t) = \sum_{i}\sum_{j}\sum_{k}U_{ijk}(t) - M(t)

\dot{U}_{ijk}(t) = M_{i}(t) - U_{ijk}(t)

其中 M 实际上是长度为4的向量,每个索引 i,j,k 的范围是0到3.我想用SymPy表示该系统的RHS(主要是因为我可以计算系统的雅可比矩阵);然后将其包装,以便可以用数字进行评估 .

我一直在尝试使用以下结构来表示 MU

# males carrying a particular genotype
males = sym.DeferredVector('M')

# families configurations are represented by a symbolic tensor
U = sym.tensor.IndexedBase('U', shape=(4, 4, 4))

这些结构允许我在SymPy中表示RHS,但是当我尝试计算雅可比行列时会出现以下错误

ValueError: 
Can't calculate 1-th derivative wrt U[0, 0, 0].

另外,当我尝试 lambdify 表达式时,我收到错误

my_18 + _Dummy_20) + (-_Dummy_25 + 1)*(-_Dummy_27 + 1)*(_Dummy_17 + _Dummy_19))**2 - U[3, 3, 3]]]))
                                                                                            ^
SyntaxError: invalid syntax

从其他SO问题我怀疑问题是我使用 IndexedBase 代表我的系统的RHS . 也许我应该使用其他技术将我的符号表达式包装成矢量化数字函数? autowrap