Advertisement
parthosutradhor

Gauss Seidal Method

Apr 17th, 2019
933
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. program g_seidal
  2.     implicit none
  3.     integer, parameter::n=3, M=100
  4.     integer::i,j,k
  5.     real::a(n,n+1),b(n),x(n),x0(n), tol=0.00001,s1,s2,norm
  6.     open(11, file="in.txt")
  7.     ! reading matrix
  8.     do i=1,n
  9.         read(11,*) (a(i,j), j=1,n+1)
  10.     end do
  11.     ! reading initial guess
  12.     read(11,*) (x0(i), i=1,n)
  13.     ! separating b
  14.     do i=1,n
  15.         b(i)= a(i,n+1)
  16.     end do
  17.  
  18.     do k=1,M
  19.         do i=1,n
  20.             s1=0.0
  21.             do j=1,i-1
  22.                 s1=s1+a(i,j)*x(j)
  23.             end do
  24.             s2=0.0
  25.             do j=i+1,n
  26.                 s2=s2+a(i,j)*x0(j)
  27.             end do
  28.             x(i) = ((-s1-s2+b(i))) / a(i,i)
  29.         end do
  30.         !write(*,*) (x(i), i=1,n)
  31.         if(norm(x,x0)<tol) then
  32.             write(*,*) (x(i), i=1,n)
  33.             STOP
  34.         end if
  35.         do i=1,n
  36.             x0(i)=x(i)
  37.         end do
  38.  
  39.     end do
  40.     write(*,*) (x(i), i=1,n)
  41.  
  42. end program g_seidal
  43.  
  44. function norm(x,x0)
  45.     integer,parameter::n=3
  46.     integer::i
  47.     real::x(n),x0(n),s,norm
  48.     s=0.0
  49.     do i=1,n
  50.         s=s+(x(i)-x0(i))**2
  51.     end do
  52.     norm = SQRT(s)
  53. end function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement