Как Eigen SparseQR решает недоопределенные системы - PullRequest
1 голос
/ 14 мая 2019

Я пытаюсь решить разреженную задачу типа наименьших квадратов с помощью решателя SparseQR в Eigen.В ходе моей заявки я должен решить как для переопределенных, так и для недоопределенных уравнений, представленных некоторой матрицей A, где A переопределено, а A.transpose() недоопределено.

Я понимаю технику, с помощью которойПереопределенная система достаточно хорошо решается с помощью QR-декомпозиции, но я хотел проверить, как Eigen решает недостаточно определенную систему.Чтобы решить уравнение A.transpose() x = b Эйген, похоже, не выполняет решение минимальной нормы, которое будет выполнено примерно так:

//Get the QR decomposition of A (over-determined system)
SparseQR solver;
solver.compute(A)

//Get the Q and R matrices of A
Q = solver.matrixQ()
R = solver.matrixR()

//Given that: A.transpose() = R.transpose() Q.transpose(), solve for x
xstar = R.transpose().solve(b)
x = Q*xstar

, но после решения с использованием решателя, инициализированного с помощью

solverAT.compute(AT);

У меня нет решения с минимальной нормой, поэтому я точно не знаю, какой подход он использует.

Дополнительный вопрос: могу ли я использовать переопределенную декомпозицию для решения недоопределенной проблемы без необходимостипересчитывать.Это, безусловно, поможет в моем приложении.

...