使用Biogo计算矩阵的逆矩阵?

3
我正在使用Go语言实现卡尔曼滤波器。在阅读这篇帖子后,我决定使用biogo进行矩阵运算。然而,从文档中可以看出,biogo没有提供计算矩阵逆的函数。
请问是否有其他方法或知道使用biogo提供的函数轻松计算逆矩阵的方式?谢谢!

你的实现是开源的吗?我正在考虑在Go中开始这样一个KF库。谢谢。 - ChrisR
2个回答

3
如果你愿意转向github.com/gonum/matrix包,它提供了一个可以使用的Inverse函数。这两个包的接口看起来相似。
gonum-dev邮件列表的帖子中可以看出,gonum/matrix是未来的方向(并且最终将取代biogo.matrix)。

1
Gonum/matrix 主要由 Dan Kortschak 编写,他也编写了 Biogo。事实上,我相信 gonum/matrix 最初是 biogo.matrix 的一个分支。你说得对,最终目标是让 gonum/matrix 取代它。 - Linear
1
当我在biogo邮件列表上询问时,Dan建议使用gonum/matrix。谢谢! - drautb

1
你应该检查一下是否真的需要逆矩阵,或者你所做的一切都是解决某个线性系统。
例如,如果你的公式是x=AB^(-1)Cy,那么你可以将它分解为以下步骤:w=Cy,z=solve(B,w),x=Az,从而完全避免使用逆矩阵。因此,如果你的应用程序是向量输入 - 向量输出,则很可能不需要逆矩阵。

这有助于使用gonum实现伪逆。线性回归解w = (X'X)^(-1) X'y可以使用gonum实现为w.Solve(X'X, X'y),其中X'是X的转置。 - Cassiohg
由于Lapack函数可用,因此计算$X$的QR分解,然后使用Rw=Q'y和w=solve(R, Q'y)在R的降维情况下进行求解,在数值上更加稳定。纯粹主义者使用X的SVD来涵盖所有可能的情况。 - Lutz Lehmann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接