如何将索引的SymPy表达式包装到向量化的数字函数中?

时间:2015-01-28 06:32:11

标签: python sympy

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

\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问题我怀疑问题是我在表示系统的RHS时使用IndexedBase。也许我应该使用其他技术将我的符号表达式包装成矢量化数字函数?也许是autowrap

0 个答案:

没有答案