!PROGRAM gauss Jocobi
integer :: i,j,k,n,no_of_ite
real :: a(5,5),b(5),x(5),y(5),s,ep
open(15,file="input.dat")
open(16,file="output10")
read(15,*)n
read(15,*)no_of_ite
read(15,*)ep
do i=1,n
read(15,*)(a(i,j),j=1,n)
enddo
read(15,*)(b(j),j=1,n)
write(16,*)"a="
do i=1,n
write(16,*)(a(i,j),j=1,n)
enddo
write(16,*)"b="
write(16,*)(b(j),j=1,n)
do i=1,n
x(i)=0.0
y(i)=0.0
enddo
do k=1,no_of_ite
do i=1,n
s=0.0
do j=1,n
if(i/=j)then
s=s+a(i,j)*y(j)
endif
enddo
x(i)=(b(i)-s)/a(i,i)
enddo
if((abs(x(i))-abs(y(i)))<ep)exit
do i=1,n
y(i)=x(i)
enddo
write(16,*)"no of ite=",k," x= ",(x(j),j=1,n)
write(16,*)" "
enddo
write(16,*)"x="
write(16,*)(x(j),j=1,n)
end
integer :: i,j,k,n,no_of_ite
real :: a(5,5),b(5),x(5),y(5),s,ep
open(15,file="input.dat")
open(16,file="output10")
read(15,*)n
read(15,*)no_of_ite
read(15,*)ep
do i=1,n
read(15,*)(a(i,j),j=1,n)
enddo
read(15,*)(b(j),j=1,n)
write(16,*)"a="
do i=1,n
write(16,*)(a(i,j),j=1,n)
enddo
write(16,*)"b="
write(16,*)(b(j),j=1,n)
do i=1,n
x(i)=0.0
y(i)=0.0
enddo
do k=1,no_of_ite
do i=1,n
s=0.0
do j=1,n
if(i/=j)then
s=s+a(i,j)*y(j)
endif
enddo
x(i)=(b(i)-s)/a(i,i)
enddo
if((abs(x(i))-abs(y(i)))<ep)exit
do i=1,n
y(i)=x(i)
enddo
write(16,*)"no of ite=",k," x= ",(x(j),j=1,n)
write(16,*)" "
enddo
write(16,*)"x="
write(16,*)(x(j),j=1,n)
end
Comments
Post a Comment