2

我有一个矩形矩阵,因此:

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);
4

1 回答 1

3

不幸的是,开箱即用的 Math.NET Numerics 不支持解决非负(或正)最小二乘问题。

一些进一步的信息和算法:非负最小二乘(维基百科)

于 2014-03-04T15:28:02.833 回答