我在Sympy中有一个8x8的矩阵。由于矩阵中每个单元格的符号表达式在我的例子中相当复杂,因此整个矩阵的反转需要花费很长时间。此外,我只对单个单元(第一行和第一列)的矩阵的逆值感兴趣。有没有办法只计算一个位置的逆,而不是计算矩阵所有64个位置的值?
谢谢!
发布于 2019-12-19 06:02:32
逆的一般公式是由余因子的转置矩阵和行列式so计算出来的。
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这需要计算两个行列式:一个用于整个矩阵,另一个用于余因子。在大O术语中,这是O(n**3) (与逆运算相同),但它可能比计算逆运算更快。
如果问题是表达式爆炸,那么我认为使用余因子和行列式是没有帮助的,因为行列式计算仍然会很慢。在这种情况下,您需要提供一个示例表达式来演示该问题。
https://stackoverflow.com/questions/59400064
复制相似问题