連立方程式の解法2 ガウス消去法 [数値解析]
連立方程式の解法2 ガウス消去法
掃き出し法は係数行列を
単位行列
に変形して解を求めるのに対し、ガウス消去法は
といった上三角行列に変形することによって連立方程式の解を求める方法。
次の3元連立方程式があるとする。
行列で書くと
STEP1
を計算すると、②、③からa₂₁xとa₃₁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
2017-10-26 12:00
nice!(0)
コメント(0)
コメント 0