連立一次方程式


概要

 ここで述べる解法は中学数学の方法と本質的には同じである。未知数がx,y,zの3つの方程式より,yとzを消去してxだけの方程式を作り,これを解いてyとzも求められる。消去の過程で行列の基本変形を使用する。詳しくは「基礎数学演習」p64〜p85を参照。

行列の基本変形とは
 @ある行をk倍する
 Aある行をk倍して他の行に加える
 Bある行と他の行を交換する
ことであり,行列の階数を調べるとき,逆行列を求めるとき,行列式の値を求めるときにもそのまま使える。n元連立一次方程式においてはn行n+1列の行列をAによって

    c=aik/akk   として
    ij=aij−cakj  と変形していく。
ただし k=1,2,・・・n     i≠k    j=i,i+1,・・・n+1  
その結果係数の行列(n×n)は対角化されるので,さらに@によって
      ij=aij/aii  
とすれば係数の行列(n×n)は単位行列となり,また第n+1列には解が算出される。  ところが上記ではakk≠0という前提がある。係数の行列(n×n)がSingularなら「不定または解なし」となる。

 なお,連立方程式をAとベクトル・行列の形で表すと,解は=A-1である。Excelでは逆行列・行列の積を求める関数が装備されている。

プログラム
2次元配列,三重ループ,多岐分岐など注意すべき点が多い。n(n+1)個の係数を入力して間違えたときの修正処置も重要。完成後は逆行列,行列式にも拡張すること。
主要演算部は下記の通り(VB)     入出力部分(C)はここ
  
  For k = 1 To n
   p = a(k, k)
   If Abs(p) < 0.01 Then
     ・・・・・・・・・(不定)・・・・・
     ・・・・・・・・・(解なし)・・・・・
   End If
   For i = 1 To n
     If ・・・・・・  Then
       ・・・・・・
       For j = k To m
        a(i, j) = ・・・・・・
       Next j
     End If
   Next i
  Next k

サンプル VB  , C  , Excel

問題

課題] 係数を入力してn元1次連立方程式を解くプログラムを作れ。