Publicado el 21 de Junio del 2019
626 visualizaciones desde el 21 de Junio del 2019
16,1 MB
21 paginas
1
Antes:
• Resolución del examen:
• Clase de hoy:
• Funciones intrínsecas
•
¡Aviso!
• Si estáis perdidos, el momento de ponerse al día es
ahora. A partir de la clase de la semana que viene todo se
complica.
• Próxima clase es el 8 de Noviembre. Tenéis casi 15 días.
2
Funciones intrínsecas.
• Son funciones predefinidas que se pueden utilizar sin declarar
previamente.
• Las funciones pueden tener argumentos de tipo:
• Númerico:
• Conversión de tipo
• Truncamiento
• Redondeo
• Matemáticas
• Array
• Matemáticas
• Búsqueda
• Dimensiones
• Character
3
Funciones intrínsecas.
• Funciones numéricas. Conversión de tipo
• Real(x[,k]) convierte x a
real(kind=k)
• Tipo del argumento (x): integer,
real o complex
• Tipo de la función: real
• dble(x) convierte x a real*8
• Tipo del argumento (x): integer,
real o complex
• Tipo de la función: real*8
(Los corchetes significan opcional)
4
Funciones intrínsecas.
• Funciones numéricas. Conversión de tipo
program prueba_intrinsecas
integer :: a
real(8) :: xd
real :: x
a = 2
x = real(a)
xd = real(a,KIND=8)
write(*,*) "a", a
write(*,*) "x", x
write(*,*) "xd", xd
end program
5
Funciones intrínsecas.
• Funciones numéricas. Conversión de tipo
cmplx(x[,y][,k])
Número complejo de parte real x e imaginaria y y kind=k
6
Funciones intrínsecas.
• Funciones numéricas. Conversión de tipo
program test_cmplx
integer :: i = 42
real :: x = 3.14
complex :: z
z = cmplx(i, x)
write(*,*) z, cmplx(x)
end program test_cmplx
7
Funciones intrínsecas.
• Funciones numéricas. Truncamiento y redondeo
8
Funciones intrínsecas.
• Funciones numéricas. Matemáticas
9
Funciones intrínsecas.
• Funciones numéricas. Matemáticas
• abs(x) x si x>=0
• Si x es real abs(x)=
-x si x<0
• Si x es complejo abs(x)=
2
x
r
2
x
i+
• mod(x,y)
• Ambos x e y pueden ser reales o enteros
mod(x,y) = x- int(x/y) y
10
Funciones intrínsecas.
• Funciones numéricas. Matemáticas.
• epsilon(x)
• Devuelve un número del mismo tipo y kind que
x, que es despreciable frente a la unidad.
1.d0 ~ 1.d0 ± epsilon(x)
11
Funciones intrínsecas.
• Funciones para arrays. Búsqueda
• size(A,[dim=i]) (Los corchetes significan
opcional)
• Devuelve el tamaño de la dimensión i del
array A
• Ej.- size(V) devuelve el numero de elementos
del vector V
• Ej.- size(Matriz,dim=1) devuelve el número
de filas del array Matriz
• Ej.- size(Matriz,dim=2) devuelve el número
de columnas del array Matriz
12
Funciones intrínsecas.
• Funciones para arrays. Búsqueda
• maxval(Array)/minval(Array)
• Devuelve el mayor/menor elemento del array.
• maxval(Matriz,dim = i)/minval(Matriz,dim = i)
• i=1 Devuelve un vector cuyos elementos son
el máximo de cada una de las columnas.
• i=2 Devuelve un vector cuyos elementos son
el máximo de cada una de las filas.
• Ej.-
•
A
æ
= ç
è
3
4
2
1
1 6
-
ö
÷
ø
maxval(A,dim = 2) ! (3,6)
13
Funciones intrínsecas.
• Funciones para arrays. Búsqueda
• maxloc(Array)/minloc(Array)
• Devuelve la posición (no el índice – empieza en
1) del mayor/menor elemento del array.
• Ej. minloc(V) ! 2
1 2
-
(
V 3
=
)
• Ej. maxloc(A) ! (2,3)
A
• Ej. minloc(A) ! (2,2)
A
3
æ
= ç
4
è
3
æ
= ç
4
è
2
1
ö
÷
1 6
-
ø
1
2
-
ö
÷
1
6
-
ø
14
Funciones intrínsecas.
• Funciones para arrays. Matemáticas
• transpose(A)
• Devuelve la matriz transpuesta.
• Ej.-
A
æ
= ç
è
3
4
1
2
1 6
-
ö
÷
ø
• B = transpose(A)
B
=
3
æ
ç
2
ç
ç
1
-è
4
1
-
6
ö
÷
÷
÷
ø
15
Funciones intrínsecas.
• Funciones para arrays. Matemáticas
• dot_product(vector_1,vector_2)
• Devuelve el producto escalar de los dos vectores.
• matmul(A,B)
• Devuelve el producto de dos matrices(arrays) con
formas compatibles.
16
Funciones intrínsecas.
program producto
integer
integer
integer
:: V(3), U(3)
:: A(3,2), B(2,3), C(3,3)
:: i,j
A = 0
B = 0
do i = 1,2
A(i,i) = 1
do j = 1,3
B(i,j) = j
enddo
enddo
C = matmul(A,B)
do j = 1,3
write(*,*) C(j,:)
enddo
end program producto
17
Funciones intrínsecas.
program producto
integer
integer
integer
:: V(3), U(3)
:: A(3,2), B(2,3), C(3,3)
:: i,j
A = 0
B = 0
do i = 1,2
A(i,i) = 1
do j = 1,3
B(i,j) = j
enddo
enddo
C = matmul(A,B)
do j = 1,3
write(*,*) C(j,:)
enddo
end program producto
A
æ
ç
= ç
ç
è
1 0
0 1
0 0
ö
÷
÷
÷
ø
B
æ
= ç
è
1 2 3
1 2 3
ö
÷
ø
C
æ
ç
= ç
ç
è
1 2 3
1 2 3
0 0 0
ö
÷
÷
÷
ø
18
Funciones intrínsecas.
program producto
integer
integer
integer
:: V(2), U(3)
:: A(3,2)
:: i
do i =1,3
U(i) = i
enddo
A = 1
V = matmul(U,A)
write(*,*) V
end program producto
19
Funciones intrínsecas.
program producto
:: V(2), U(3)
:: A(3,2)
:: i
(
U 1 2 3
=
integer
integer
integer
do i =1,3
U(i) = i
enddo
)
1 1
A 1 1
1 1
æ
ç
= ç
ç
è
ö
÷
÷
÷
ø
A = 1
V = matmul(U,A)
write(*,*) V
end program producto
V 6 6
=
(
)
20
Funciones intrínsecas.
• Funciones para Character.
• len(string)
• Devuelve la longitud del string (cadena).
• Ej.- len(’ Fortran & magic ’) = 20
• trim(string)
• Devuelve el mismo string quitando los espacios en
blanco a la derecha del mismo.
• Ej.- trim (’ Fortran & magic ’) =
’ Fortran & magic’
21
Comentarios de: Funciones Intrínsecas (0)
No hay comentarios