You are on page 1of 6

Jacobi

program relajacion_jacobi
real::A(100,100),B(100),X(100,100),s,n,es,ea,k
integer::i,j
print*,'metodo de relajacion de jacobi'
print*,'insertar valor de orden de matriz '
read*,n
print*,'insertar tolerancia'
read*,es

!elementos de matriz A...

print*,'insertar valores de matriz A'
do i=1,n
read*,(A(i,j),j=1,n)
end do

!elementos de B...

print*,'insertar valores de B'
do i=1,n
read*,B(i)
end do

!insertar vector de prueba X ...

print*,'insertar valores de matriz X'
k=1
do i=1,n
read*,X(k,i)
end do

!operaciones

10 do i=1,n
s=0
do j=1,n
if(j.ne.i)then
s=s+(A(i,j))*(X(k,j))
end if
X(k+1,i)=(B(i)-s)/A(i,i)
end do

es.ea.k+1 Print*.n print*.i)) if(ea. interaciones:'.'metodo de relajacion de jacobi' print*.j print*.n) print*..gt.'x orden'. print*.':' write(*.'' end do print*.100).ea.4))) end program gauss program relajacion_Gauss_Seidel real::A(100.B(100). end do do i=1..' num.j=1.'insertar valor de orden de matriz ' read*.j).k integer::i.100).n) end do !elementos de B.'insertar valores de matriz A' do i=1.k 9 format( 1000(1x.s2.(i-1).es)then k=k+1 goto 10 else end if end do ! salida de dator Print*.es !elementos de matriz A.(A(i.(f8.n ea=abs((x(k+1.n read*.n. .i))-X(k.j).X(100.'el valor de x' do i=1.j=1.9)(X(i...'tolerancia'.'insertar tolerancia' read*.s1.

n s1=0 s2=0 do j=1.'insertar valores de B' do i=1.'insertar valores de matriz X' k=1 do i=1..gt.B(i) end do !insertar vector de prueba X .'el valor de x' .n read*.n read*. print*.gt.i)=(B(i)-s1-s2)/A(i.j)) end if X(k+1.lt.i)then s2=s2 +(A(i.n ea=abs((x(k+1.j))*(X(k+1.i) end do !operaciones 10 do i=1.i)) if(ea.X(k. print*..j)) end if if(j.i) end do end do do i=1.es)then k=k+1 goto 10 else end if end do ! salida de dator Print*.n if(j.i)then s1=s1+ (A(i.j))*(X(k.i))-X(k.

print*.n read*.n print*.w integer::i.k+1 Print*.ea.'x orden'.j).n) print*.'insertar valor de orden de matriz ' read*.k 9 format( 1000(1x.X(100.n.es.(f8.4))) end program sobre relajacion program sobre_relajacion_sucesiva real::A(100.k ...s.(A(i.':' write(*. print*.es.w !elementos de matriz A.s1.B(100).(i-1). print*.ea.100).'tolerancia'.B(i) end do !insertar vector de prueba X .'insertar valores de matriz X' k=1 do i=1.i) end do !operaciones .'insertar valores de B' do i=1. do i=1. interaciones:'...j).j=1..9)(X(i.'' end do print*.'metodo de sobre relajacion sucesiva' print*.s2..X(k.'num.j=1.n read*.'insertar valores de matriz A' do i=1.100).n) end do !elementos de B.'insertar tolerancia y el parametro de relajacion' read*.j print*.n read*.

n) print*.10 do i=1.(f8.i)then s1=s1+ (A(i.lt.'num.'' end do print*.n s1=0 s2=0 s=0 do j=1.i) end do end do do i=1.j)) end if if(j.n s=s+(1-w)*(A(i.j).':' write(*.j)) if(j.j))*(X(k+1.i)) if(ea.i))-X(k.j=1.j))*(X(k.i)=(w*B(i)-s1-s2+s)/A(i. interaciones:'.9)(X(i.4))) end program .j)) end if X(k+1.'x orden'.i)then s2=s2 +(A(i.k+1 Print*.ea.(i-1).gt.gt.j))*(X(k.k 9 format( 1000(1x.'tolerancia'.es)then k=k+1 goto 10 else end if end do ! salida de dator Print*.n ea=abs((x(k+1.'el valor de x' do i=1.