![]() |
まずは、1行目のの係数を1に、2と3行目のそれは0にします。そのために、
1行目は
の係数の値で割ります。2行目と3行目は、1行目に適当な係数を書
けて引きます。次の通りです。
![]() |
![]() |
![]() |
![]() |
ガウス・ジョルダン法のイメージが湧いたと思いますので、もう少し数学的に
その内容を説明します2。
そのために、次の線形行列方程式を考えます。ここでは、紙面の関係で係数行
列が
について述べますが、一般的に
への拡張は容易です。
![]() |
![]() |
(16) |
![]() |
![]() |
(17) |
式(15)について、以下のことが容易に分か ります。
この3つの操作を組み合わせて、係数行列
を単位行列に変換するのが
ガウス・ジョルダン法です。
が単位行列に変換されれば、右辺に
と
が表れます。したがって、解と逆行列が求められたことに
なります。もし、逆行列が不要であれば
だけ計算し、逆行列のみ必要
であれば
のみ計算することになります。
この問題を避けるためにどうするかというと、ピボット選択という方法を使い ます。方法は簡単で、先に示した3つの基本操作のうち、1番目と3番目を使っ て、対角に素性の良い要素をもってきます。1番目の操作のみを用いて行を入 れ替える方法を、部分ピボット選択(partial pivoting)といいます。1番目の 操作と3番目の操作を使って、行と列を入れ替えるのを完全ピボット選択(full pivoting)といいます。すでにある程度出来上がっている単位行列を壊したく ないので、ピボットの選択は操作している行のしたの行から選ばなくてはなり ません。
部分ピボット選択の方が明らかに簡単です。解の行列を入れ替える必要が無い からです。その場合、行の入れ替えしかしないので、ピボットはその列から選 ばなくてはなりません。完全ピボット選択の方が選べる要素が多いのですが、 最終的な解の精度はあまり変わらないようです。したがって、ここではプログ ラムの簡単な部分ピボット選択で計算しましょう。
次に考えなくてはならないのは、ピボットを選択する基準です。簡単に言えば、 大きな要素選択すれば大体よいです。しかし、ある行を100万倍して、それに 対応する右辺の行も100万倍することもできますので、ただ大きいというだけ では問題がありそうです。どうするかと言うと、各方程式の最大係数を1に規 格化して、最大のものをピボットに選ぶことが行われています。この方法を陰 的ピボット選択(implicit pivoting)と呼ばれています。
これで、ピボットの問題も片付いたので、フローチャートを書いてみます。