C# 求解具有约束结果的最小二乘矩阵

C# 求解具有约束结果的最小二乘矩阵,c#,.net,math.net,mathnet-numerics,C#,.net,Math.net,Mathnet Numerics,我有一个矩形矩阵,因此: 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, Li

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

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);
//复合词是字典
var xdata=components.Values.Select(v=>v.ToArray()).ToArray();
var ydata=新的DenseVector(someKnownValues.ToArray());
var矩阵=列的密度矩阵(ydata.Count(),xdata.Count(),xdata);
var系数=矩阵.QR().Solve(ydata);

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


一些进一步的信息和算法:

你介意添加你的代码吗,这样我们就可以看到你自己解决这个问题的方法了?@tnw-添加了简短的代码;很难添加更多,因为在收集“化合物”的过程中还有很多其他的过程。谢谢Christoph-我会再次调查其他一些库hristoph,我只是想知道我是否能够使用Math.NET中的任何其他求解方法,比如加权回归?