Решение матрицы наименьших квадратов с ограничением результатов
У меня есть прямоугольная матрица таким образом:
1, 3, 2, 4, н..
4, 2, 1, 5, н..
п..
и вектор таким образом:
1, 2, 5, 6, 7, н..
Мне нужно решить уравнение наименьших квадратов для всех столбцов в матрице, но я хочу ограничить результаты так, чтобы все ответы были больше нуля.
Я добавил пакет Math.NET и дошел доmatrix.QR().Solve(...
Предположительно, есть некоторый способ итеративного решения этой проблемы, но, похоже, нет способа указать ограничения / условия для Solve
метод, и я не уверен, какой другой метод (ы) я должен использовать.
Может кто-нибудь помочь, пожалуйста?
РЕДАКТИРОВАТЬ - Частичный код добавлен ниже:
//compounds is Dictionary<int, List<double>>
var xdata = compounds.Values.Select(v => v.ToArray()).ToArray();
var ydata = new DenseVector(someKnownValues.ToArray());
var matrix = DenseMatrix.OfColumns(ydata.Count(), xdata.Count(), xdata);
var factors = matrix.QR().Solve(ydata);
1 ответ
К сожалению, решение неотрицательных (или положительных) задач наименьших квадратов не поддерживается Math.NET Numerics из коробки.
Некоторая дополнительная информация и алгоритм: неотрицательные наименьшие квадраты (Википедия)