Advertisement
parthosutradhor

Jacobi Method

Apr 17th, 2019
1,049
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. program jacobi
  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,s,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.             s=0.0
  21.             do j=1,n
  22.                 if(i /= j) s=s+a(i,j)*x(j)
  23.             end do
  24.             x(i) = ((-s+b(i))) / a(i,i)
  25.         end do
  26.         !write(*,*) (x(i), i=1,n)
  27.         if(norm(x,x0)<tol) then
  28.             write(*,*) (x(i), i=1,n)
  29.             STOP
  30.         end if
  31.         do i=1,n
  32.             x0(i)=x(i)
  33.         end do
  34.  
  35.     end do
  36.     write(*,*) (x(i), i=1,n)
  37.  
  38. end program jacobi
  39.  
  40. function norm(x,x0)
  41.     integer,parameter::n=3
  42.     integer::i
  43.     real::x(n),x0(n),s,norm
  44.     s=0.0
  45.     do i=1,n
  46.         s=s+(x(i)-x0(i))**2
  47.     end do
  48.     norm = SQRT(s)
  49. end function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement