我有一个微分方程系统看起来像(为乳胶道歉!)......
\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(主要是因为我可以计算系统的雅可比矩阵);然后将其包装,以便可以用数字进行评估 .
我一直在尝试使用以下结构来表示 M
和 U
# 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
?