以下の流行語については、GoogleまたはWikipediaをご覧ください。
まず、本当に逆が必要なことを確認してください。システムを解くには、行列を反転する必要はありません。行列の反転は、単位基底ベクトルを右側として、n個のシステムを解くことによって実行できます。それで、私はシステムを解くことに焦点を合わせます、なぜならそれは通常あなたが望むものだからです。
それは「大きい」が何を意味するかによります。分解に基づくメソッドは、通常、行列全体を格納する必要があります。行列を分解したら、一度に複数の右側を解くことができます(したがって、行列を簡単に反転できます)。因数分解の方法については、すでに知っている可能性が高いため、ここでは説明しません。
行列が大きい場合、その条件数はゼロに近い可能性が非常に高いことに注意してください。これは、行列が「数値的に可逆ではない」ことを意味します。対処法:前処理。これについてはウィキペディアを確認してください。記事はよく書かれています。
行列が大きい場合は、保存しないでください。ゼロが多い場合は、スパース行列です。構造(バンド対角、ブロック行列など)があり、そのような行列を含むシステムを解くための特殊な方法があるか、ないかのどちらかです。
明確な構造のないスパース行列に直面した場合、または保存したくない行列に直面した場合は、反復法を使用する必要があります。これらは、特定の形式のストレージを必要としない行列とベクトルの乗算のみを含みます。必要なときに係数を計算したり、ゼロ以外の係数を必要な方法で保存したりできます。
方法は次のとおりです。
- 対称定値正行列の場合:共役勾配法。つまり、Ax = bを解くと、1/2 x ^ TA x-x ^Tbが最小化されます。
- 一般的な行列の双共役勾配法。しかし不安定です。
- 最小残差法、または最良のGMRES。詳細については、ウィキペディアの記事を確認してください。アルゴリズムを再開する前に、反復回数を試してみることをお勧めします。
そして最後に、格納する非ゼロ要素の数を最小限に抑えるために特別に設計されたアルゴリズムを使用して、スパース行列を使用してある種の因数分解を実行できます。