Ну, вы не так подробно изучили документацию :) Вы ищете решатели линейного уравнения.
http://www.netlib.org/lapack/lug/node38.html
Пожалуйста, укажите немного больше о complex / real double / float. плохо поставлено? Слишком или недостаточно определено или квадратично? Если квадратичный, то симметричный или верхний треугольный? Пластинчатые?
Существует множество различных алгоритмов, которые можно рассмотреть. Время выполнения / стабильность / поведение конвергенции сильно различаются в зависимости от K
. Наиболее стабильным будет [x]gelsd
. Это алгоритм «разделяй и властвуй» с помощью SVD, который дает вам подходящее обобщение обратного уравнения Мура-Пенроуза. Но это, безусловно, самый медленный алгоритм.
Кстати, http://www.netlib.org/lapack/lug/node27.html, описывает все общие решения.
Если у вас уже есть некоторые значения вашего p
, вы хотели бы пойти по другому пути, чем прямая инверсия. Вам намного лучше, если вы используете итеративный метод, такой как сопряженная задача наименьших квадратов градиента с регуляризацией. Подробно это обсуждается в Stoer, Bullirsch, Введение в численный анализ, глава 8.7 (Метод градиентного сопряжения Гестенса и Штифеля).
В сети есть несколько реализаций. Один вы найдете в библиотеке, которую я написал во время моей докторской диссертации: https://github.com/kvahed/codeare/blob/master/src/optimisation/CGLS.hpp