有没有一种方法可以按照如下规则在 SymPy 中隐式定义符号矩阵的元素:symbol 后跟矩阵中的 subindices(或数字对)
例如,我想定义一个名为 M
的 3 x 2 矩阵,我希望 SymPy 自动创建它并将其填充为:
M =
[ M_11 M_12]
[ M_21 M_22]
[ M_31 M_32]
如果没有办法隐式执行此操作,那么显式执行此操作(例如循环)的最简单方法是什么?
最佳答案
考虑使用 MatrixSymbol
而不是 Matrix
对象。 MatrixSymbol
表示不需要显式元素的矩阵。
In [1]: M = MatrixSymbol('M', 3, 2)
In [2]: M # Just an expression
Out[2]: M
In [3]: Matrix(M) # Turn it into an explicit matrix if you desire
Out[3]:
⎡M₀₀ M₀₁⎤
⎢ ⎥
⎢M₁₀ M₁₁⎥
⎢ ⎥
⎣M₂₀ M₂₁⎦
In [4]: M.T * M # Still just an expression
Out[4]:
T
M ⋅M
In [5]: Matrix(M.T * M) # Fully evaluate
Out[5]:
⎡ 2 2 2 ⎤
⎢ M₀₀ + M₁₀ + M₂₀ M₀₀⋅M₀₁ + M₁₀⋅M₁₁ + M₂₀⋅M₂₁⎥
⎢ ⎥
⎢ 2 2 2 ⎥
⎣M₀₁⋅M₀₀ + M₁₁⋅M₁₀ + M₂₁⋅M₂₀ M₀₁ + M₁₁ + M₂₁ ⎦
关于python - 在 SymPy 中自动填充矩阵元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6877061/