求解约束结果的最小二乘矩阵

时间:2014-03-04 14:35:38

标签: c# .net mathdotnet

因此我有一个矩形矩阵:
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);

1 个答案:

答案 0 :(得分:3)

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

一些进一步的信息和算法:Non-negative least squares (Wikipedia)