Sympy - 仅在特定位置找到矩阵的逆?
Sympy - find inverse of matrix only at a particular location?
我在 Sympy 中有一个 8 x 8 矩阵。反转整个矩阵需要很长时间,因为在我的例子中矩阵中每个单元格的符号表达式都相当复杂。此外,我只对单个单元格(第一行和第一列)的矩阵的逆值感兴趣。有没有办法只在一个位置计算逆,而不是计算矩阵所有 64 个位置的值?
谢谢!
逆的一般公式是根据转置矩阵的余数和行列式计算的
In [8]: M = Matrix([[1, 4, 7], [3, 0, 5], [-1, 9, 11]])
In [9]: M
Out[9]:
⎡1 4 7 ⎤
⎢ ⎥
⎢3 0 5 ⎥
⎢ ⎥
⎣-1 9 11⎦
In [10]: M.inv()
Out[10]:
⎡45/8 -19/8 -5/2⎤
⎢ ⎥
⎢19/4 -9/4 -2 ⎥
⎢ ⎥
⎣-27/8 13/8 3/2 ⎦
In [11]: M.cofactor(0, 0) / M.det()
Out[11]: 45/8
这需要计算两个行列式:一个用于整个矩阵,一个用于余因子。在 big-O 术语中,这是 O(n**3)
(与逆运算相同)但它可能比计算逆运算更快。
如果问题是表达式爆炸,那么我认为使用余因子和行列式将无济于事,因为行列式计算仍然很慢。在那种情况下,您需要给出一个示例表达式来说明问题。
我在 Sympy 中有一个 8 x 8 矩阵。反转整个矩阵需要很长时间,因为在我的例子中矩阵中每个单元格的符号表达式都相当复杂。此外,我只对单个单元格(第一行和第一列)的矩阵的逆值感兴趣。有没有办法只在一个位置计算逆,而不是计算矩阵所有 64 个位置的值?
谢谢!
逆的一般公式是根据转置矩阵的余数和行列式计算的
In [8]: M = Matrix([[1, 4, 7], [3, 0, 5], [-1, 9, 11]])
In [9]: M
Out[9]:
⎡1 4 7 ⎤
⎢ ⎥
⎢3 0 5 ⎥
⎢ ⎥
⎣-1 9 11⎦
In [10]: M.inv()
Out[10]:
⎡45/8 -19/8 -5/2⎤
⎢ ⎥
⎢19/4 -9/4 -2 ⎥
⎢ ⎥
⎣-27/8 13/8 3/2 ⎦
In [11]: M.cofactor(0, 0) / M.det()
Out[11]: 45/8
这需要计算两个行列式:一个用于整个矩阵,一个用于余因子。在 big-O 术语中,这是 O(n**3)
(与逆运算相同)但它可能比计算逆运算更快。
如果问题是表达式爆炸,那么我认为使用余因子和行列式将无济于事,因为行列式计算仍然很慢。在那种情况下,您需要给出一个示例表达式来说明问题。