【问题标题】:Solving a least squares matrix having constrained the results求解约束结果的最小二乘矩阵
【发布时间】:2014-03-04 14:35:37
【问题描述】:

因此我有一个矩形矩阵:

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

【问题讨论】:

  • 您介意添加您的代码,以便我们了解您自己解决这个问题的进度吗?
  • @tnw - 添加了简短代码;很难添加更多,因为将“化合物”聚集在一起还有很多其他处理过程。

标签: c# .net math.net mathnet-numerics


【解决方案1】:

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

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

【讨论】:

  • 感谢 Christoph - 我会调查其他一些库
  • 您好,Christoph,我只是想知道我是否能够使用 Math.NET 中的任何其他求解方法,例如 WeightedRegression?
猜你喜欢
  • 2010-12-05
  • 2023-03-23
  • 2013-08-06
  • 2020-08-03
  • 2015-08-01
  • 2023-04-02
  • 1970-01-01
  • 2015-12-13
  • 2018-07-06
相关资源
最近更新 更多