Я пытаюсь решить разреженную задачу типа наименьших квадратов с помощью решателя 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);
У меня нет решения с минимальной нормой, поэтому я точно не знаю, какой подход он использует.
Дополнительный вопрос: могу ли я использовать переопределенную декомпозицию для решения недоопределенной проблемы без необходимостипересчитывать.Это, безусловно, поможет в моем приложении.