! Gauss Elimination Method implicit none integer n parameter (n=3) real(8),dimension(n,n) :: a real(8),dimension(n) :: b,x real(8) an integer i,j,k call input(a,b) call print(a,b) do i=1,n an=a(i,i) do j=i,n a(i,j)=a(i,j)/an end do b(i)=b(i)/an call print(a,b) do k=i+1,n an=a(k,i) do j=i,n a(k,j)=a(k,j)-an*a(i,j) end do b(k)=b(k)-an*b(i) end do call print(a,b) end do do i=n,1,-1 x(i)=b(i) do j=i+1,n x(i)=x(i)-x(j)*a(i,j) end do end do do i=1,n write(*,100) i,x(i) end do 100 format (1x,'Ans.','x(',i1,')=',1pe12.5) stop end subroutine input(a,b) implicit none integer n parameter (n=3) real(8),dimension(n,n) :: a real(8),dimension(n) :: b a(1,1)=1.0 a(1,2)=2.0 a(1,3)=1.0 a(2,1)=3.0 a(2,2)=8.0 a(2,3)=7.0 a(3,1)=2.0 a(3,2)=7.0 a(3,3)=4.0 b(1)=3.0 b(2)=5.0 b(3)=8.0 return end subroutine print(a,b) implicit none integer n parameter (n=3) real(8),dimension(n,n) :: a real(8),dimension(n) :: b integer i,j do i=1,n write(*,*) (real(a(i,j)),j=1,n),real(b(i)) end do write(*,*) '-----------------' return end