私はこうして長方形の行列を持っています:
1, 3, 2, 4, n..
4, 2, 1, 5, n..
n..
したがって、ベクトル:
1, 2, 5, 6, 7, n..
行列のすべての列の最小二乗方程式を解く必要がありますが、すべての答えが 0 より大きくなるように結果を制限したいと考えています。
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);