因此我有一个矩形矩阵:
1, 3, 2, 4, n..
4, 2, 1, 5, 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);
最佳答案
不幸的是,开箱即用的 Math.NET Numerics 不支持解决非负(或正)最小二乘问题。
一些进一步的信息和算法:Non-negative least squares (Wikipedia)
关于c# - 求解具有约束结果的最小二乘矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22174852/