5

我最近开始使用 MathNet 来实现我们的线性代数,但是我在将 MATLAB 函数转换为 MathNet 时遇到了一些麻烦。

在 MATLAB 中,我经常使用反斜杠运算符进行简单求解:

C = A \ B

在 MathNet 中这个等价物是什么?

我使用 C = Inv(A) * B 在一个小矩阵中得到相同的结果,但我不知道结果是否一样精确。

4

4 回答 4

5

var C = A.QR().Solve(B);(使用 QR 分解)

对于方阵也:(var C = A.LU().Solve(B);使用 LU 分解)

于 2012-08-29T12:47:49.160 回答
2

我不认为 MathNet 有任何“等效”的 Matlab 的反斜杠运算符。有关 Matlab 反斜杠如何工作的一些信息,请参阅此站点:Matlab 手册上 mldivide()。我想你可以看看一些求解方法,比如 QRSolve,但我认为它们不会那么容易使用......

“精确”是什么意思?您是在问 MathNet 的 inv() 是否对矩阵进行精确求逆,还是只是在问是否可以将 C 计算为 Inv(A)*(B)?

如果你问后者,是的,对于方阵,Matlab 的反斜杠与 Inv(A)*(B) 大致相同。

于 2012-02-09T10:02:07.153 回答
1

通过我使用 Matlab 和 Math.Net Numerics 进行的测试:

矩阵 A 向量 B

Matlab:A \ B Math.Net 数值:A.QR().Solve(B)

两者都给出相同的结果(在我的情况下)。我认为它也适用于 B 作为矩阵。

于 2015-09-18T13:49:32.807 回答
0

如果你使用ILNumerics.Net Library,你可以试试ILMath.linsolve(A, B);

于 2014-06-03T15:26:53.460 回答