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

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

因此我有一个矩形矩阵:

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/

相关文章:

c# - 异步方法不适用于 ObjectResult<T>

c# - 如何计算文本文件中句子中的元音 (C#)

.net - 如何减少 Entity Framework 4 查询编译时间?

c# - 通用扩展

matrix - math.net 矩阵并置

c# - 将 C# GUI 组件封装在 DLL 中

c# - 如何在 ElasticSearch 中使用 NEST 指定 index.mapping.ignore_malformed 设置

c# - Math.Net Numerics - 如何运行示例

math.net - 带有 Math.net 数字的类型

c# - 处理潜在 session 过期的正确方法