Что такое MathNet эквивалент MATLAB решить C = A \ B
Недавно я начал использовать MathNet для реализации нашей линейной алгебры, однако у меня возникли некоторые проблемы с переводом функций MATLAB в MathNet.
В MATLAB я часто использую простое решение, используя оператор обратной косой черты:
C = A \ B
Что эквивалентно этому в MathNet?
Я получаю те же результаты в небольшой матрице, используя C = Inv(A) * B, но я не знаю, насколько точен результат.
4 ответа
Я не думаю, что MathNet имеет какой-либо "эквивалент" оператора обратной косой черты в Matlab. Посетите этот сайт, чтобы узнать, как работает обратная косая черта в Matlab: Руководство по Matlab для mldivide (). Я думаю, вы могли бы взглянуть на некоторые методы решения, такие как QRSolve, но я не думаю, что они будут такими же простыми в использовании...
Что вы подразумеваете под "точным"? Вы спрашиваете, выполняет ли MathNet inv () точное обращение матрицы, или вы просто спрашиваете, можете ли вы рассчитать C как Inv(A)*(B)?
Если вы спросите позже, да, для квадратных матриц обратный слеш Matlab примерно такой же, как Inv(A)*(B).
var C = A.QR().Solve(B);
(используя QR-разложение)
Для квадратных матриц также: var C = A.LU().Solve(B);
(используя разложение LU)
С тестами, которые я сделал, используя Matlab и Math.Net Numerics:
Матрица А Вектор Б
Matlab: A \ B Math.Net Числа: A.QR(). Решить (B)
Оба дают одинаковые результаты (в моем случае). Я думаю, что это будет работать с матрицей B тоже.
Если вы используете библиотеку ILNumerics.Net, вы можете попробовать ILMath.linsolve(A, B);