【发布时间】:2017-11-03 23:57:11
【问题描述】:
假设我有一个正方形matrixM。假设我想invert 矩阵M。
我正在尝试将gmpy2 中的分数mpq 类用作我的矩阵M 的成员。如果你不熟悉这些分数,它们在功能上类似于 python 的内置包fractions。唯一的问题是,除非我将它们从分数形式中取出,否则没有包会反转我的矩阵。我需要分数形式的数字和答案。所以我必须编写自己的函数来反转M。
我可以编写一些已知算法,例如gaussian elimination。但是,性能是一个问题,所以我的问题如下:
有没有一种计算速度很快的算法可以用来计算矩阵的逆矩阵M?
【问题讨论】:
-
任何合理的快速算法都必须在 C 中实现,作为扩展。另一种方法是将它们全部乘以它们的 GCD,或者只是它们的分母的乘积,以使它们成为整数,并使用带有 C 扩展的包和更多的时间来优化。这是
O(n),所以除非要反转的算法优于O(n),否则不会影响时间复杂度。 -
你看过sympy吗?它适用于 gmpy2 和矩阵:docs.sympy.org/dev/modules/matrices/…
-
是的,但是 sympy 的反演比手动编码高斯消除要慢。我可以与基准共享我的高斯消除代码。
标签: python matrix matrix-inverse