Решение матрицы наименьших квадратов с ограничением результатов

У меня есть прямоугольная матрица таким образом:
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 из коробки.

Некоторая дополнительная информация и алгоритм: неотрицательные наименьшие квадраты (Википедия)

Другие вопросы по тегам