什么是MATLAB的MathNet等价物解决C = A \ B

时间:2012-02-09 09:22:41

标签: c# matlab solver mathdotnet

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

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

C = A \ B

MathNet中的等价物是什么?

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

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

我使用Matlab和Math.Net Numerics进行了测试:

矩阵A. 矢量B

Matlab:A \ B. Math.Net数字:A.QR()。解决(B)

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

答案 3 :(得分:0)

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