我有一个微分方程系统看起来像(为乳胶道歉!)......
\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问题我怀疑问题是我在表示系统的RHS时使用IndexedBase
。也许我应该使用其他技术将我的符号表达式包装成矢量化数字函数?也许是autowrap
?