Beruflich Dokumente
Kultur Dokumente
CONTAINS
FUNCTION AREA_CIRCULO(R) RESULT(A)
REAL::R,A
REAL,PARAMETER::PI=3.1416
A=PI*R*R PROGRAM AREA
REAL::RADIO,A1
RETURN PRINT*,"INGRESE RADIO DEL CIRCULO"
END FUNCTION AREA_CIRCULO READ*,RADIO
PRINT*
END PROGRAM AREA PRINT*,"AREA DEL CIRCULO= ",AREA_CIRCULO(RADIO, A )
END PROGRAM AREA
FUNCTION cent(temperatura)
REAL:: cent !declaracion del nombre de la funcion
REAL,INTENT(IN):: temperatura !declaracion del argumento formal
REAL,PARAMETER:: CTE=5./9. !parametro local a la funcion
cent= CTE*(temperatura-32.)
END FUNCTION cent
ingrese temperatura en grados F
32
32.000000 es = 0.000000E+00
2016-I
METODO DE NEWTON RAPHSON
function f(x0)
real::x0
real,parameter::pi=3.1416
f=exp(x0)-pi*x0
return
end function f
function df(x0)
real::x0
real,parameter::pi=3.1416
df=exp(x0)-pi
return
end function df
program valor_raiz
real::x0,x1
real::f,df !f =la funcion, df =derivada de la funcion
real::E,Error
integer::i
x0=0.5 !valor inicial
E=0.0001
Do i=1,100
call newton(x0,f,df)
x1=x0-f/df !algortimo newton raphson
Error=abs((x1-x0)/x1)*100
if (Error<E) then
print 10,x1
stop "Chauuuu"
end if
x0=x1
end do
10 format(1x,"Encontramos la raiz =",1x,f8.4)
end program valor_raiz
!end function df
subroutine newton(x0,f,df)
real::x0
real,parameter::pi=3.1416
f=exp(x0)-pi*x0
df=exp(x0)-pi
return
end subroutine newton
!altura del vertedero
!f(h)=3.33(b-0.2h)(h^3)^(1/2)-Q
!df=3.33(b-0.2h)(1.5)(h^(1/2)+(h^(2))^(1/2)(3.33)(-0.2)
program valor_raiz
real::x0,x1
real::f,df !f =la funcion, df =derivada de la funcion
real::E,Error
real::Q,B
integer::i
x0=1.5 !valor inicial
E=0.0001
Q=12
B=3
Do i=1,100
x1=x0-f(x0,Q,B)/df(x0,B) !algortimo newton raphson
Error=abs((x1-x0)/x1)*100
if (Error<E) then
print 10,x1
stop "AL SUSTIII"
end if
x0=x1
end do
10 format(1x,"Encontramos la raiz =",1x,f8.4)
end program valor_raiz
function f(x0,Q,B)
real::x0,Q,B
f=3.33*(B-0.2*X0)*(X0**3)**(1./2)-Q
return
end function f
function df(x0,B)
real::x0,B
df=3.33*(b-0.2*X0)*(1.5)*(X0**(1./2))+((X0**2)**(1./2))*(3.33)*(-0.2)
return
end function df
MODULOS
La sintaxis general de un mdulo es:
MODULE nombre_modulo
[SAVE]
Declaracin e inicializacin datos
compartidos Cuerpo del mdulo
END MODULE nombre_modulo
PROGRAM principal
USE comparte_datos
IMPLICIT NONE
INTEGER :: j
PRINT*, 'v1', v1
PRINT*, 'v2',v2
v1=v1+v2
PRINT*, 'v1',v1
CALL sub
PRINT*, MATRIZ'
DO i=1,TM
PRINT*, (m(i,j),j=1,2)
END DO
END PROGRAM principal
SUBROUTINE sub
USE comparte_datos
IMPLICIT NONE
m( : , 1 ) = v1
m( : , 2 ) = v2
END SUBROUTINE sub
MODULE comparte_datos
IMPLICIT NONE
SAVE
INTEGER, PARAMETER:: TM=5
INTEGER:: i
INTEGER, DIMENSION(TM) :: v1=1,v2=(/ (i, i=10,14) /)
INTEGER, DIMENSION(TM,2) :: m
END MODULE comparte_datos
EJEMPLO DE UN PROGRAMA EN LA QUE EXISTEN VARIAS UNIDADES
PROGRAMAS QUE UTILIZAN LAS CONSTANTES RAIZ CUADRADA DE 2 Y
RAIZ CUADRADA DE 3 CUYOS VALORES RESPECTIVOS SON 1.41421 Y
1.73205 Y COMPARTEN OTRAS VARIABLES ES COORD_X, COORD_U,
COORD_Z UTILIZAMOS PARA ELLO UN MODULO
PROGRAM PAQUETES
USE COMPARTIDAS
PRINT*,"VALOR DE COORD_X "
CALL SUB1
PRINT*,COORD_X
PRINT*,"VALOR DE COORD_Y"
CALL SUB2
PRINT*,COORD_Y
PRINT*
PRINT*,"RAIZ = ",SUB3(COORD_X,COORD_Y)
END PROGRAM PAQUETES
SUBROUTINE SUB1
USE COMPARTIDAS
IMPLICIT NONE
COORD_X=RAIZ2
RETURN
END SUBROUTINE SUB1
SUBROUTINE SUB2
USE COMPARTIDAS
IMPLICIT NONE
COORD_Y=RAIZ3
RETURN
END SUBROUTINE SUB2
FUNCTION SUB3(X,Y)
REAL::X,Y
SUB3=SQRT(X**2+Y**2)
RETURN
END FUNCTION SUB3
MODULE COMPARTIDAS
IMPLICIT NONE
SAVE
REAL,PARAMETER::RAIZ2=1.41421,RAIZ3=1.73205
REAL::COORD_X,COORD_Y,COORD_Z
END MODULE COMPARTIDAS
PROGRAM PAQUETES
USE COMPARTIDAS
PRINT*,"VALOR DE COORD_X "
CALL SUB1(raiz2,coord_x)
PRINT*,COORD_X
PRINT*,"VALOR DE COORD_Y"
CALL SUB2(raiz3,coord_y)
PRINT*,COORD_Y
PRINT*
PRINT*,"RAIZ =
",SUB3(COORD_X,COORD_Y)
END PROGRAM PAQUETES
MODULE COMPARTIDAS
real,parameter::RAIZ2=1.42421,RAIZ3=1.73205
contains
SUBROUTINE SUB1(raiz2,coord_x)
REAL::COORD_X,raiz2
COORD_X=RAIZ2
RETURN
END SUBROUTINE SUB1
SUBROUTINE SUB2(raiz3,coord_y)
real::COORD_Y,raiz3
COORD_Y=RAIZ3
RETURN
END SUBROUTINE SUB2
FUNCTION SUB3(X,Y)
REAL::X,Y
SUB3=SQRT(X**2+Y**2)
RETURN
END FUNCTION SUB3