Está en la página 1de 5

1)

! Este programa resuelve el ejemplo 3.12 del Libro de Mathews


program Backsub

integer N, i , j, k

real a(4,4), x(4), b(4), suma

write(*,*) ' Digite las filas para la matriz A '


read(*,*) N

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

write(*,*) ' La Matriz A es '

do i = 1,N
write(*,*) a(i,:)
end do

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

do i = 1, N

write(*,*) ' b(',i,' ) '


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

! Comienza la sustitución regresiva

x(N) = b(N)/a(N,N)

do k = N-1,1,-1

suma = 0
do j = k+1,N

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

end do

x(k) = ( b(k) - suma )/a(k,k)

end do

do i = 1, N

write(*,*) ' x(',i,') = ', x(i)

end do

pause

end program

2)
! Este programa resuelve el ejemplo 3.12 del Libro de Mathews
program BacksubGeneral

integer i , j, k
integer :: M,N

real suma
real, allocatable :: a(:,:)
real, allocatable :: x(:)
real, allocatable :: b(:)

write(*,*) ' Digite las filas para la matriz A '


read(*,*) N
write(*,*) ' Digite las columnas para la matriz A '
read(*,*) M

allocate( a(N,M) )
allocate( x(N) )
allocate ( b(N) )

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

write(*,*) ' La Matriz A es '

do i = 1,N
write(*,*) a(i,:)
end do

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

do i = 1, N

write(*,*) ' b(',i,' ) '


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

! Comienza la sustitución regresiva

x(N) = b(N)/a(N,N)

do k = N-1,1,-1

suma = 0

do j = k+1,N

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

end do

x(k) = ( b(k) - suma )/a(k,k)

end do

do i = 1, N

write(*,*) ' x(',i,') = ', x(i)


end do

pause

end program

3)

program jacobi_Gen

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

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 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

end do

do k = 1, Itera

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

end do

pause

end program

También podría gustarte