Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program g_seidal
- implicit none
- integer, parameter::n=3, M=100
- integer::i,j,k
- real::a(n,n+1),b(n),x(n),x0(n), tol=0.00001,s1,s2,norm
- open(11, file="in.txt")
- ! reading matrix
- do i=1,n
- read(11,*) (a(i,j), j=1,n+1)
- end do
- ! reading initial guess
- read(11,*) (x0(i), i=1,n)
- ! separating b
- do i=1,n
- b(i)= a(i,n+1)
- end do
- do k=1,M
- do i=1,n
- s1=0.0
- do j=1,i-1
- s1=s1+a(i,j)*x(j)
- end do
- s2=0.0
- do j=i+1,n
- s2=s2+a(i,j)*x0(j)
- end do
- x(i) = ((-s1-s2+b(i))) / a(i,i)
- end do
- !write(*,*) (x(i), i=1,n)
- if(norm(x,x0)<tol) then
- write(*,*) (x(i), i=1,n)
- STOP
- end if
- do i=1,n
- x0(i)=x(i)
- end do
- end do
- write(*,*) (x(i), i=1,n)
- end program g_seidal
- function norm(x,x0)
- integer,parameter::n=3
- integer::i
- real::x(n),x0(n),s,norm
- s=0.0
- do i=1,n
- s=s+(x(i)-x0(i))**2
- end do
- norm = SQRT(s)
- end function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement