3
線形方程式を解く方法を選択する方法
私の知る限り、線形方程式系を解くには4つの方法があります(さらにある場合は修正してください): システム行列がフルランク正方行列の場合、Cramerの規則を使用できます。 システム行列の逆または擬似逆を計算します。 マトリックス分解法を使用します(ガウスまたはガウスヨルダン消去法はLU分解と見なされます)。 共役勾配法などの反復法を使用します。 実際、特に高次元行列の場合、Cramerのルールを使用するか、逆行列または擬似逆行列を計算して方程式を解くことはほとんどありません。したがって、最初の質問は、それぞれ分解法と反復法を使用する場合です。システムマトリックスのサイズとプロパティに依存すると思います。 2番目の質問は、数値の安定性と効率の観点から、特定のシステムマトリックスに最適な分解法または反復法の種類を知っていることです。 たとえば、共役勾配法は、行列が対称かつ正定値の方程式を解くために使用されますが、をA T A x = A T bに変換することにより、任意の線形方程式に適用することもできます。正定行列の場合も、コレスキー分解法を使用して解を求めることができます。しかし、CGメソッドを選択するタイミングと、コレスキー分解を選択するタイミングはわかりません。私の感覚では、大きな行列にはCG法を使用した方が良いと思います。A x = bAバツ=b\mathbf{A}x=bATA x= ATbATAバツ=ATb\mathbf{A}^{\rm T}\mathbf{A}x=\mathbf{A}^{\rm T}b 長方形行列の場合、QR分解またはSVDのいずれかを使用できますが、ここでもいずれかを選択する方法がわかりません。 他のマトリックスについては、エルミート/対称マトリックス、スパースマトリックス、バンドマトリックスなど、適切なソルバーを選択する方法は今ではありません。