Что такое 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);

Другие вопросы по тегам