Вы находитесь на странице: 1из 5

1)

program Jacobi_Gen

integer N, Itera, i, j, k
real x(40), y(40), z(40)
real a(3,3) , B(3)

open( unit = 7, file = 'Resultados_Jacobi.txt', status = 'unknown' )

Itera = 30

x(1) = 1 ! x(1,1) == x(1) = 0


y(1) = 2 ! x(2,1) == y(1) = 0
z(1) = 2 ! x(3,1) == z(1) = 0

write(*,*) ' Longitud del vector B '


read(*,*) N

! lee Matriz A

write(*,*) ' Digite la matriz A por cofactores '

do i = 1, N
do j = 1, N

write(*,*) ' a (',i,j,') '


read(*,*) a(i,j) ! lee cofactor
end do
end do

! Vector B

write(*,*) ' Digite el vector B '


do i = 1,N

write(*,*) ' B(',i,') '


read(*,*) B(i)
end do

do i = 1, N
write(*,*) ' La matriz A = ', a(i,:)
end do

do i = 1, N
write(*,*) ' El vector B = ', B(i)
end do

! ******************* Método de Jacobi *****************

do k = 1, Itera
! x(k+1) = ( 7 + y(k) - z(k) ) /4
! y(k+1) = ( 21 + 4*x(k) + z(k) ) /8
! z(k+1) = ( 15 + 2*x(k) - y(k) ) /5

x(k+1) = ( 15 - 5*z(k) - y(k) ) /(-2)


y(k+1) = ( 21 + 4*x(k) + z(k) ) /8
z(k+1) = ( 7 + y(k) - 4*x(k) ) /4

end do

do k = 1, Itera

write(*,*) k, x(k), y(k), z(k)

write(7,*) k, x(k), y(k), z(k)

end do

pause

end program

************************************************************************************
************************************************************************************

program Gauss_SeidelG

integer N, Itera, i, j, k
real x(40), y(40), z(40)
real a(3,3) , B(3)

open( unit = 8, file = 'Resultados_GaussSeidel.txt', status = 'unknown' )

Itera = 30

x(1) = 0 ! x(1,1) == x(1) = 0


y(1) = 0 ! x(2,1) == y(1) = 0
z(1) = 0 ! x(3,1) == z(1) = 0

write(*,*) ' Longitud del vector B '


read(*,*) N

! lee Matriz A

write(*,*) ' Digite la matriz A por cofactores '

do i = 1, N
do j = 1, N

write(*,*) ' a (',i,j,') '


read(*,*) a(i,j) ! lee cofactor
end do
end do

! Vector B

write(*,*) ' Digite el vector B '


do i = 1,N

write(*,*) ' B(',i,') '


read(*,*) B(i)
end do

do i = 1, N
write(*,*) ' La matriz A = ', a(i,:)
end do

do i = 1, N
write(*,*) ' El vector B = ', B(i)
end do

! ******************* Método de Gauss_Seidel *****************

do k = 1, Itera

x(k+1) = ( 7 + y(k) - z(k) ) /4


y(k+1) = ( 21 + 4*x(k+1) + z(k) ) /8
z(k+1) = ( 15 + 2*x(k+1) - y(k+1) ) /5

end do

do k = 1, Itera

write(*,*) k, x(k), y(k), z(k)

write(8,*) k, x(k), y(k), z(k)

end do

pause

end program

************************************************************************************
************************************************************************************

program JacobiGeneral
integer itera, N, i , j, m, k
real x(3,40), a(3,3) , B(3)
real suma

open( unit = 9, file = ' Resultados_General_Jacobi.txt', status = 'unknown' )


itera = 30

!x(1,1) = 0
!x(2,1) = 0
!x(3,1) = 0

write(*,*) ' Digite la longitud de vector B '


read(*,*) N

do i = 1, N
x(i,1) = 0
end do

! lee Matriz A

write(*,*) ' Digite la Matriz A por cofactores '

do i =1 , N
do j = 1 , N

write(*,*) 'a(',i,j,')'
read(*,*) a(i,j)

end do
end do

! Veector B

write(*,*) ' Digite el vector B'


do i = 1,N
write(*,*) 'B(',i,')'
read(*,*) B(i)
end do

do i =1,N
write(*,*) ' La matriz A es = ', a(i,:)
end do
do i =1,N
write(*,*) ' El vector B es = ', B(i)
end do

!********************************** Método General de Jacobi


*********************************************

do m = 1, itera ! Esta asociado al numero de iteraciones que deseamos hacer

do j = 1, N ! Respresenta el numero de variables : x, y , z ,...

suma = 0 ! Inicializamos la suma en cero


do k = 1,N

if ( k .NE. j ) then

suma = suma + a(j,k)*x(k,m)

end if

end do

x(j,m+1) = ( b(j) - suma )/a(j,j)

end do

write(*,*) m , x(1,m) , x(2,m), x(3,m)


write(9,*) m , x(1,m) , x(2,m), x(3,m)

end do

pause

end program

Вам также может понравиться