掃き出し法(はきだしほう)は、連立一次方程式を解くための効率的なアルゴリズムです。この方法は「ガウスの消去法」(Gaussian elimination)とも呼ばれ、連立方程式の係数からなる拡大係数行列に対して行われる一連の変形操作を意味します。
掃き出し法の歴史は非常に古く、実は前漢時代の中国で書かれた「九章算術」に初めて記述されたとされています。西洋では19世紀にカール・フリードリヒ・ガウスによって体系化されましたが、その基本的な考え方は2000年以上前から存在していたのです。
掃き出し法の基本的な手順は、「前進消去」(forward elimination)と「後退代入」(backward substitution)という2つのステップから構成されています。この方法を使うことで、大きな方程式系を系統的に小さな系へと分解し、効率的に解を求めることができます。
掃き出し法を実行するためには、行列に対して「行基本変形」と呼ばれる操作を行います。行基本変形には以下の3種類があります。
掃き出し法の基本的な手順は以下の通りです。
例えば、次のような連立方程式を考えてみましょう。
x + 2y = 2
-2x + 3y = 10
この連立方程式の拡大係数行列は以下のようになります。
[ 1 2 | 2 ]
[-2 3 | 10]
これに行基本変形を施していきます。まず、第2行に第1行の2倍を加えます。
[ 1 2 | 2 ]
[ 0 7 | 14]
次に、第2行を7で割ります。
[ 1 2 | 2 ]
[ 0 1 | 2 ]
最後に、第1行から第2行の2倍を引きます。
[ 1 0 | -2]
[ 0 1 | 2 ]
これにより、x = -2, y = 2 という解が得られます。
より複雑な例として、3変数の連立一次方程式を掃き出し法で解いてみましょう。
2x₁ + 3x₂ + x₃ = 4
4x₁ + x₂ - 3x₃ = -2
-x₁ + 2x₂ + 2x₃ = 2
この連立方程式の拡大係数行列は以下のようになります。
[ 2 3 1 | 4 ]
[ 4 1 -3 | -2]
[-1 2 2 | 2 ]
まず、第1行と第3行を入れ替えて、左上の要素を1にします。
[-1 2 2 | 2 ]
[ 4 1 -3 | -2]
[ 2 3 1 | 4 ]
次に、第1行を-1で割ります。
[ 1 -2 -2 | -2]
[ 4 1 -3 | -2]
[ 2 3 1 | 4 ]
第2行に第1行の-4倍を加え、第3行に第1行の-2倍を加えます。
[ 1 -2 -2 | -2]
[ 0 9 5 | 6 ]
[ 0 7 5 | 8 ]
第2行を9で割ります。
[ 1 -2 -2 | -2]
[ 0 1 5/9 | 2/3]
[ 0 7 5 | 8 ]
第3行から第2行の7倍を引きます。
[ 1 -2 -2 | -2]
[ 0 1 5/9 | 2/3]
[ 0 0 5/9 | 8/3]
第3行を(5/9)で割ります。
[ 1 -2 -2 | -2]
[ 0 1 5/9 | 2/3]
[ 0 0 1 | 24/5]
後退代入を行います。第2行から第3行の(5/9)倍を引きます。
[ 1 -2 -2 | -2]
[ 0 1 0 | -2/3]
[ 0 0 1 | 24/5]
第1行に第2行の2倍と第3行の2倍を加えます。
[ 1 0 0 | -2 + (-4/3) + 48/5]
[ 0 1 0 | -2/3]
[ 0 0 1 | 24/5]
計算すると。
[ 1 0 0 | 6/5]
[ 0 1 0 | -2/3]
[ 0 0 1 | 24/5]
したがって、解は x₁ = 6/5, x₂ = -2/3, x₃ = 24/5 となります。
掃き出し法は純粋な数学の問題だけでなく、様々な実用的な場面で活用されています。特に物理学や工学の分野では、多くの現象が連立一次方程式で表現されるため、掃き出し法は重要なツールとなっています。
物理学での応用例。
工学での応用例。
これらの応用例では、扱う連立方程式の規模が非常に大きくなることもあり、コンピュータを用いた数値計算が必要になります。そのような場合でも、掃き出し法の考え方は基本的なアルゴリズムとして活用されています。
掃き出し法は理論的には優れた方法ですが、実際の計算機で実装する際には計算効率と数値的安定性について考慮する必要があります。
計算効率。
掃き出し法の計算量は、n×n行列に対してO(n³)となります。これは、n個の変数を持つ連立方程式を解く際に、約n³回の基本演算(加減乗除)が必要であることを意味します。大規模な問題では計算時間が急激に増加するため、より効率的なアルゴリズムの開発が進められています。
例えば、疎行列(多くの要素が0である行列)に対しては、特殊な記憶方式と計算アルゴリズムを用いることで効率を大幅に改善できます。また、並列計算を活用することで、大規模な問題でも高速に解を求めることが可能になっています。
数値的安定性。
コンピュータでの浮動小数点演算には丸め誤差が存在するため、掃き出し法の実行中に誤差が蓄積し、最終的な解の精度に影響を与える可能性があります。特に、ピボット(消去の際に使用する対角要素)が非常に小さい値である場合、数値的不安定性が生じやすくなります。
この問題に対処するために、「ピボット選択」という技術が用いられます。これは、各ステップで最も適切なピボットを選ぶことで数値的安定性を向上させる方法です。具体的には以下の2種類があります。
部分ピボット選択は比較的実装が簡単で、多くの場合十分な安定性を提供するため、実用的なアルゴリズムでよく使用されています。
連立一次方程式を解くための方法は掃き出し法だけではありません。ここでは、掃き出し法と他の主要な解法を比較し、それぞれの特徴を見ていきましょう。
クラメルの公式(行列式を用いる方法)。
LU分解法。
反復法(ヤコビ法、ガウス・ザイデル法など)。
掃き出し法(ガウスの消去法)。
それぞれの解法には一長一短があり、問題の性質や規模に応じて適切な方法を選ぶことが重要です。掃き出し法は、その直感的な理解のしやすさと実装の容易さから、教育現場や中小規模の問題解決によく用いられています。また、他の高度なアルゴリズムの基礎となる考え方を含んでいるため、線形代数を学ぶ上での重要な基礎知識となっています。
実際の応用では、これらの方法を組み合わせたり、問題の特性に合わせて最適化したりすることも多いです。例えば、掃き出し法のアイデアを基にしつつ、数値的安定性を向上させるためのピボット選択や、計算効率を高めるための疎行列技術を取り入れるといった工夫が行われています。
以上のように、掃き出し法は連立一次方程式を解くための基本的かつ重要な手法であり、その考え方は線形代数の様々な分野や実用的な問題解決に広く活用されています。基本を理解し、適切に応用できるようになることで、数学的思考力と問題解決能力を大きく向上させることができるでしょう。