Alglib: решение A * x = b в смысле наименьших квадратов

У меня есть несколько сложный алгоритм, который требует подгонки квадрики к набору точек. Эта квадрика задается ее параметризацией (u, v, f(u,v)), где f(u,v) = au^2+bv^2+cuv+du+ev+f,
Коэффициенты f(u,v) Функция должна быть найдена, так как у меня есть набор из 6 ограничений, которым должна подчиняться эта функция. Проблема в том, что этот набор ограничений, хотя и дает такую ​​проблему, как A*x = b, не совсем хорошо ведет себя, чтобы гарантировать уникальное решение.

Таким образом, чтобы сократить это, я хотел бы использовать возможности alglib, чтобы как-то определить Aпсевдообратный или непосредственно найти наиболее подходящий для x вектор.

Помимо вычисления SVD, в этой библиотеке реализован более прямой алгоритм, который может решить систему в смысле наименьших квадратов (опять же, кроме SVD или использования наивного inv(transpose(A)*A)*transpose(A)*b формула для общих задач наименьших квадратов, где A не является квадратной матрицей?

0

Решение

Нашел ответ через некоторый тщательный просмотр документации:

rmatrixsolvels( A, noRows, noCols, b, singularValueThreshold, info, solverReport, x)

В документации говорится, что пороговое значение единственного значения является порогом ограничения, которое устанавливает любое сингулярное значение из матрицы S разложения SVD в 0 если это значение ниже его. Таким образом, это должен быть скаляр между 0 и 1.

Надеюсь, это поможет кому-то еще.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]