我正在尝试使用 Boost boost_1_37_0 和 MTL mtl4-alpha-1-r6418 版本对矩阵求逆。我似乎无法找到矩阵求逆代码。我搜索了一些示例,它们似乎引用了上述版本中似乎缺少的 lu.h。有什么提示吗?
@Matt建议复制 lu.h,但这似乎来自 MTL2 而不是 MTL4。我在用 VS05 或更高版本编译 MTL2 时遇到问题。
那么,知道如何在 MTL4 中进行矩阵求逆吗?
更新:我想我更了解马特,我正在沿着这条 ITL 路径前进。
我正在尝试使用 Boost boost_1_37_0 和 MTL mtl4-alpha-1-r6418 版本对矩阵求逆。我似乎无法找到矩阵求逆代码。我搜索了一些示例,它们似乎引用了上述版本中似乎缺少的 lu.h。有什么提示吗?
@Matt建议复制 lu.h,但这似乎来自 MTL2 而不是 MTL4。我在用 VS05 或更高版本编译 MTL2 时遇到问题。
那么,知道如何在 MTL4 中进行矩阵求逆吗?
更新:我想我更了解马特,我正在沿着这条 ITL 路径前进。
貌似你用lu_factor
,然后lu_inverse
。不过,我不记得您与枢轴有什么关系。从文档中。
是的,就像你说的,看起来他们的文件说你需要 lu.h,不知何故:
如何反转矩阵?
您应该问自己的第一个问题是,您是否真的想计算矩阵的逆矩阵,或者您是否真的想求解线性系统。对于求解线性方程组,不必显式计算矩阵逆。相反,计算矩阵的三角因子然后使用这些因子执行正向和反向三角求解更有效。下面给出了有关求解线性系统的更多信息。如果你真的想反转一个矩阵,
lu_inverse()
在 mtl/lu.h 中有一个函数。
如果不出意外,您可以在他们的网站上查看lu.h。
我从未使用 boost 或 MTL 进行矩阵数学,但我使用过 JAMA/ TNT。
此页面http://wiki.cs.princeton.edu/index.php/TNT展示了如何进行矩阵求逆。基本方法与库无关:
将矩阵 M 分解为 XY ,其中 X 和 Y 是适当的分解(LU 可以,但为了数值稳定性,我认为你会想要使用 QR 或 SVD)。
求解 I = MN = (XY)N for N,前提是 M 已被分解;图书馆应该有一个例程。