목차
없음
본문내용
[코딩-a AB]
Program pro1and2ofa
Implicit none
integer :: i, j, k
integer, dimension(3,3) :: A
integer, dimension(4,3) :: B
integer, dimension(4,3) :: AB = 0
integer, dimension(3,3) :: AA = 0
integer, dimension(3,4) :: Bt
integer, dimension(3,4) :: BtA=0 !!행렬 설정
integer, dimension(4,3) :: C
<중 략>
integer, dimension(3,3) :: A
integer, dimension(1,3) :: B
integer :: i !! 행렬A,B, 실수 선언
real :: ini1=0,ini2=0,ini3=0,x,y,z !! 실수 값으로 변수를 설정한다. 분수가 오기에
A(1:3,1)=(/5,-1,3/)
A(1:3,2)=(/4,7,-2/)
A(1:3,3)=(/6,-3,9/) !! 행렬 A,B의 초기값 지정
B(1,1)=(3)
B(1,2)=(2)
B(1,3)=(9)
print*, "by Gauss-Seidel"
print*, ""
do i=1,9 !!총 9번의 반복 계산을 수행한다. 오차가 10^(-3)을 기준으로
x=(B(1,1)-A(2,1)*ini2-A(3,1)*ini3)/A(1,1) !! x값은 ini2,ini3의 조합으로 값을 갖는다. 이때 x는 ini1에 대응됨.
ini1=x
y=(B(1,2)-A(1,2)*ini1-A(3,2)*ini3)/A(2,2) !! y값은 위의 x=ini1과 ini3의 조합으로 값을 갖는다. 이때 y는 ini2에 대응됨.
ini2=y
z=(B(1,3)-A(1,3)*ini1-A(2,3)*ini2)/A(3,3) !! ini1,ini2의 영향을받아 z 값이 ini3 가 된다. z도 마찬가지로 ini3가 된다.
ini3=z
print*, "x=",x, "y=",y, "z=",z !! 9번의 계산으로 값이 바뀐 x , y, z 출력
end do
참고 자료
없음