2

私はこうして長方形の行列を持っています:

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

1 に答える 1