Mol(Math Object Library) fot .Net
線形最小二乗 (LLS) 問題を解くクラスです。
LLS 問題とは、行列 A(サイズ:m x n) と ベ クトル b が与えられたときに、二乗和Σi((Ax)i - bi)2 を最小にするベクトル x を見つけることです。 m ≥ n で rank(A) = n ならば、優決定の連立 1 次方程式 ( 未知数より方程式の個数の方が多い) に対して最小二乗解を見つけることで 、行列 A のQR 因子分解を使用します。
m < n で rank(A) = m の場合は、Ax = b を満たす ( つまり、ノルム||Ax − b||2 が最小になる) 解 x は無限に存在します。 これは、劣決定の連立 1 次方程式 (方程式より未知数の個数の方が多い)に対して最小ノルム解(||x||2 を最小にする x )を見つけることになります。 この問題を解くには、行列 A のLQ 因子分解を使用します。
Rank = min(m,n) の場合は最大階数ですが、 一般には、A の階数が不明 rank(A) < min(m, n) であり、階数不足の最小二乗問題になります。この場合は ||x||2 も ||Ax − b||2 も最小にする最小ノルム最小二乗解を見つけます。 解法は、QR 因子分解 と、ピボット演算または特異値分解を併用します。
※各種因子分解の詳細については、それぞれの文献等を参照してください。

LlsSolver クラスは基本的な演算はスタティックメソッドで実行します。各メソッドで作成されるインスタンスは計算の結果として得られる 特異値や階数を保持しますが、解ベクトルなどは引数で指定するようになっています。計算中に作成された作業変数を解放するために Dispose() メソッドを 積極的に呼び出すようにしてください。
※現時点の線形最小二乗計算では疎な行列はサポートしていません。

名前空間: Mol
アッセンブリー: Mol.Net (in Mol.Net.dll)

構文

C#
public sealed class LlsSolver : _Mol
Visual Basic
Public NotInheritable Class LlsSolver
	Inherits _Mol
Visual C++
public ref class LlsSolver sealed : public _Mol
[<SealedAttribute>]
type LlsSolver =  
    class
        inherit _Mol
    end

派生階層

System..::..Object
  Mol..::.._Mol
    Mol..::..LlsSolver

参照