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