Что такое MathNet-эквивалент MATLAB решить C = A \ B - PullRequest
5 голосов
/ 09 февраля 2012

Я недавно начал использовать MathNet для реализации нашей линейной алгебры, однако у меня возникли некоторые проблемы с переводом функций MATLAB в MathNet.

В MATLAB я часто использую простое решение с использованием оператора обратной косой черты:

C = A \ B

Что эквивалентно этому в MathNet?

Я получаю те же результаты в небольшой матрице, используя C = Inv (A) * B, но я не знаю, является ли результат настолько точным.

Ответы [ 4 ]

4 голосов
/ 29 августа 2012

var C = A.QR().Solve(B); (с использованием QR-разложения)

Для квадратных матриц также: var C = A.LU().Solve(B); (с использованием LU-разложения)

2 голосов
/ 09 февраля 2012

Я не думаю, что MathNet имеет какой-либо "эквивалент" оператора обратной косой черты в Matlab. Посетите этот сайт, чтобы узнать, как работает обратная косая черта в Matlab: Руководство по Matlab для mldivide () . Я думаю, вы могли бы взглянуть на некоторые методы решения, такие как QRSolve, но я не думаю, что они будут такими же простыми в использовании ...

Что вы подразумеваете под "точным"? Вы спрашиваете, выполняет ли MathNet inv () точное обращение матрицы, или вы просто спрашиваете, можете ли вы рассчитать C как Inv (A) * (B)?

Если вы спрашиваете позже, да, для квадратных матриц обратный слеш Matlab примерно такой же, как Inv (A) * (B).

1 голос
/ 18 сентября 2015

С помощью тестов, которые я провел с использованием Matlab и Math.Net Numerics:

Матрица А Вектор Б

Matlab: A \ B Math.Net Числа: A.QR (). Решить (B)

Оба дают одинаковые результаты (в моем случае). Я думаю, что это будет работать с матрицей B также.

0 голосов
/ 03 июня 2014

Если вы используете Библиотека ILNumerics.Net , Вы можете попробовать ILMath.linsolve(A, B);

...