我有一个矩形矩阵,因此:
1, 3, 2, 4, n..
4, 2, 1, 5, n..
n..
以及一个向量:
1, 2, 5, 6, 7, n..
我需要求解矩阵中所有列的最小二乘方程,但我想限制结果,使所有答案都大于零。
我已经添加了 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);