Fortran - Parabola 3d en Fortran

 
Vista:

Parabola 3d en Fortran

Publicado por depa (1 intervención) el 12/02/2014 02:09:58
Hola, quiero hacer traducir este programa de Matlab a Fortran, es una Parabola en 3d y no se como hacer el arreglo:
1
2
3
4
5
6
7
8
pts=100;
x=linspace(-5,5,pts);
y=x;
for ii=1:length(x)
for jj=1:length(y)
kbot2(ii,jj)=x(ii).^2 + y(jj).^2;
end
end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Parabola 3d en Fortran

Publicado por Sebastian (10 intervenciones) el 29/04/2014 03:28:34
Hola, en FORTRAN no existe una función intrínseca equivalente a "linspace", pero no es difícil crearla. El código anterior en fortraan sería:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PROGRAM exa1
     IMPLICIT NONE
 
     INTEGER, PARAMETER :: n = 100
     REAL(KIND=4)                  :: x_min, x_max, dx
     REAL(KIND=4), DIMENSION(100) :: x, y, kbot2
 
     x_min  = -5    ! limite inferior
     x_max =  5    ! limite superoir
     dx  = (x_max - x_min) / (n - 1.0)  ! tamaño del paso
 
    x = [ (x_min + i * dx, i=0, n-1) ]     ! constructor implicito
    y = x
    kbot2 = x**2 + y**2
 
END PROGRAM exa1

A la hora de construir la variable kbot2 no se necesitan ciclos ya que las operaciones en FORTRAN son por default elemento a elemento...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Parabola 3d en Fortran

Publicado por Sebastian (10 intervenciones) el 29/04/2014 03:55:30
Sorry me equivoque no leí bien, el código correcto es este

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
PROGRAM exa1
     IMPLICIT NONE
 
     INTEGER, PARAMETER :: n = 100
     REAL(KIND=4)  :: x_min, x_max, dx
     REAL(KIND=4), DIMENSION(n) :: x, y
     REAL (KIND=4), DIMENSION(n,n) :: kbot2
     INTEGER :: i,j
 
     x_min = -5    ! limite inferior
     x_max =  5    ! limite superoir
     dx  = (x_max - x_min) / (n - 1.0)  ! tamaño del paso
 
    x = [ (x_min + i * dx, i=0, n-1) ]     ! constructor implicito
    y = x
 
    DO i = 1, n
          DO j = 1, n
                kbot2(i,j) = x(i)**2 + y(j)**2
          END DO
    END DO
 
END PROGRAM exa1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar