SSブログ

連立方程式の解法2 ガウス消去法 [数値解析]

連立方程式の解法2 ガウス消去法

 

掃き出し法は係数行列を

  

単位行列

  

に変形して解を求めるのに対し、ガウス消去法は

  

といった上三角行列に変形することによって連立方程式の解を求める方法。

 

次の3元連立方程式があるとする。

  

行列で書くと

  

 

STEP1

を計算すると、②、③からa₂₁xa₃₁xの項が消える。

その結果

  

になったとする。

③’からa'₃₂yを消去するため、

を計算し、

  

 

行列で書くと、

  

 

STEP2

③’’から

  

この結果を②’に代入すると、

  

①にy,zを代入すると、

  

 

ガウス消去法は、このようにして、連立方程式を解く。

 

STEP1の上三角行列をつくる操作を前進消去、解を求めるSTEP2を後退代入と呼ぶ。

 


連立方程式

  

の係数行列を

  

としたとき、ガウス消去法は次のようになる。

 

前進消去:k=1,2,・・・,n−1について

  

後進代入:k=n,n−1,・・・,1について

  

 

Forttranのプログラムは、例えば、次のようになる。



real a(50,51)
real x(50)
n=3
! sample data
a(1,1)=2.; a(1,2)=3.; a(1,3)=1.; a(1,4)=4
a(2,1)=4.; a(2,2)=1.; a(2,3)=-3.; a(2,4)=-2
a(3,1)=-1; a(3,2)=2.0; a(3,3)=2; a(3,4)=2

call Gauss(a,n) ! ガウス消去法を呼び出す

do i=1, n
    x(i)= a(i,n+1)
end do
write(6,*) (x(i),i=1,n)
end

subroutine Gauss(a,n) ! ガウス消去法
real a(50,51)

! 前進消去
do k=1, n-1
    do i=k+1, n
        t=a(i,k)/a(k,k)
        do j=k+1, n+1
            a(i,j)=a(i,j)-t*a(k,j)
        end do
    end do
end do

! 後退代入
do i=n,1, -1
    d = a(i,n+1)
    do j= n, i+1, -1
        d=d- a(i,j)*a(j,n+1)
    end do
    a(i,n+1)=d/a(i,i)
end do
end


nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。