2017年10月27日金曜日

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

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


掃き出し法は係数行列を
単位行列
に変形して解を求めるのに対し、ガウス消去法は
といった上三角行列に変形することによって連立方程式の解を求める方法。

次の3元連立方程式があるとする。
行列で書くと

STEP1
を計算すると、②、③からa₂₁xa₃₁xの項が消える。
その結果
になったとする。
③’からa'₃₂yを消去するため、
を計算し、

行列で書くと、

STEP2
③’’から
この結果を②’に代入すると、
①にy,zを代入すると、

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

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

連立方程式
係数行列を
としたとき、ガウス消去法は次のようになる。

前進部分:k=1,2,・・・,n−1について
後進部分:k=n,n−1,・・・,1について

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

0 件のコメント:

コメントを投稿