Escribir un programa para calcular una tabla de valores de la función Fortran 95

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
suazo100
Forista Nuevo
Forista Nuevo
Mensajes: 3
Registrado: Dom May 27, 2012 10:41 am

Escribir un programa para calcular una tabla de valores de la función Fortran 95

Mensaje por suazo100 » Dom May 27, 2012 10:55 am

Escribir un programa para calcular una tabla de valores de la funci´on
f(x) =2/sqrt(2pi) *e^(-2((x-1)^2))
en el intervalo [-1, 3]. El programa calculara 2 vectores x(0:40) e y(0:40) que se escribiran en
un ?chero datos.txt.
Muchisimas gracias

Editado -- Dom May 27, 2012 2:55 am --

Es en fortran 95

Editado -- Dom May 27, 2012 2:55 am --

Es en fortran 95
Última edición por mcun el Dom May 27, 2012 4:14 pm, editado 1 vez en total.
Razón: Titulo editado por contener dichos como Ayuda para un examen por favor! , Por favor revisa el reglamento
Avatar de Usuario
doc
Forista Ancestral
Forista Ancestral
Mensajes: 3301
Registrado: Mié Ago 11, 2010 10:32 am
Ubicación: Oviedo-es_ES
Contactar:

Re: Ayuda para un examen por favor!

Mensaje por doc » Dom May 27, 2012 11:28 am

me temo, amigo, que en este foro no está bien visto pedir que te resuelvan los deberes de la escuela.
Bueno, a ver si tienes suerte y alguien 'se apiada' y te ayuda a aprobar el examen.
Avatar de Usuario
niky45
Forista Ancestral
Forista Ancestral
Mensajes: 9186
Registrado: Jue Abr 12, 2007 7:00 am
Ubicación: tras la pantalla (...)
Contactar:

Re: Ayuda para un examen por favor!

Mensaje por niky45 » Dom May 27, 2012 1:05 pm

te mandaria mis apuntes pero no los tengo escaneados, asi que va esto:
http://www.ibiblio.org/pub/languages/fortran/

mas alla de eso, o hay dinero de por medio :P o nada. asi que leetelo, postea tu codigo, y dinos en que falla, y te echamos un cable.

:)
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]
suazo100
Forista Nuevo
Forista Nuevo
Mensajes: 3
Registrado: Dom May 27, 2012 10:41 am

Re: Ayuda para un examen por favor!

Mensaje por suazo100 » Dom May 27, 2012 3:30 pm

program
implicit none
integer::i
integer,parameter::n=40
real*8::x(0:n),y(0:n),pi
pi=ACOS(-1.)
do i=1,n
y=(2/sqrt(2*pi))*exp(-2*((x-1)**2))
if(x.lt.-1.or.x.gt.3)exit
end do
print*,x(0:40),y(0:40)
end program

supongo que sera mas o menos asi aunque no estoy muy seguro,lo unico que me falla algo donde la sentencia if y no se que es
Avatar de Usuario
niky45
Forista Ancestral
Forista Ancestral
Mensajes: 9186
Registrado: Jue Abr 12, 2007 7:00 am
Ubicación: tras la pantalla (...)
Contactar:

Re: Ayuda para un examen por favor!

Mensaje por niky45 » Dom May 27, 2012 4:27 pm

tu mismo codigo pero en bonito:

Código: Seleccionar todo

program
implicit none
integer::i
integer,parameter::n=40
real*8::x(0:n),y(0:n),pi

pi=ACOS(-1.)

do i=1,n
    y=(2/sqrt(2*pi))*exp(-2*((x-1)**2))
    if(x.lt.-1.or.x.gt.3) exit
end do

print*,x(0:40),y(0:40)

end program
ahora si me disculpas, le echo un ojo a la version legible, edito, y te miro lo que le pasa. :D

PD: en seri, la etiqueta code sirve para evitar que lo tenga que hacer yo :P aka, para que podamos entender algo. (leer codigo sin un minimo de orden suele ser imposible.... asi que, si estas parendiendo a programar, dos lecciones basicas e imprescindibles: abusa de los comentarios todo lo que puedas, y trata de mantenerlo legible definiendo (y respetando) la indentacion. )

Editado -- hace menos de un minuto --

ahora veo algo!!! :D

para empezar... defines la i, pero luego trabajas con la x. eso no tiene ni pies ni cabeza.

la funcion en pseudocodigo (mezcla de no tengo ganas de pensar, bash, y spanglish), vendria a ser asi:

Código: Seleccionar todo

do i=0,n ## n=40
  z=i*4/n ## z e [0,4]  -> escalamos a la longitud del intervalo
  x=z -1 ## x e [-1,3]  -> centramos en el intervalo
  y(i) = f (x) ## copiala tu que no tengo ganas
end do
el resto... mi fortran esta muy oxidado. traducelo tu, y si ves que algo falla, avisa. :wink:

Editado -- hace menos de un minuto --

por cierto, en el print: si defines n, no pongas 40. ;) (y por cierto: define TODO como variables, incluidos limites del intervalo. )
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]
suazo100
Forista Nuevo
Forista Nuevo
Mensajes: 3
Registrado: Dom May 27, 2012 10:41 am

Re: Escribir un programa para calcular una tabla de valores de la función Fortran 95

Mensaje por suazo100 » Dom May 27, 2012 4:29 pm

Muchas gracias,ya lo hice,si apruebo sera en parte gracias a ti ;)
Avatar de Usuario
doc
Forista Ancestral
Forista Ancestral
Mensajes: 3301
Registrado: Mié Ago 11, 2010 10:32 am
Ubicación: Oviedo-es_ES
Contactar:

Re: Escribir un programa para calcular una tabla de valores de la función Fortran 95

Mensaje por doc » Dom May 27, 2012 4:52 pm

lo malo es que, si apruebas, no te vas a poder llevar a Niky a tu próxima prueba, o a tu trabajo como programador. ¿captas la sutileza...?
Avatar de Usuario
cerenkov
Forista Medio
Forista Medio
Mensajes: 402
Registrado: Jue Jun 17, 2010 5:23 am
Ubicación: Venezuela

Re: Escribir un programa para calcular una tabla de valores de la función Fortran 95

Mensaje por cerenkov » Dom May 27, 2012 5:15 pm

Tal como está ese código no va a escribir nada a un archivo datos.txt y no dará salidas formateadas. Este si lo hace:

Código: Seleccionar todo

c Este programa determina valores de y para 41 valores entre -1 y 3
c Los escribe en datos.txt

      REAL::x,y,pi
      INTEGER::i
      OPEN (UNIT= 1, FILE= "datos.txt", STATUS= "REPLACE")
      
      x  = -1
      pi = acos(-1.)

      DO i=0,40

         y =2./sqrt(2 * pi) * exp(-2*((x-1)**2)) 

         WRITE (1,900) x,y
900      FORMAT (F15.2, F15.9)
         x = x + 0.1

      END DO
  
      CLOSE (1)

      END
Se compila como f95 programa.for -o programa, se ejecuta con ./programa y la salida, en datos.txt, es:

Código: Seleccionar todo

          -1.00    0.000267660
          -0.90    0.000583894
          -0.80    0.001223804
          -0.70    0.002464439
          -0.60    0.004768179
          -0.50    0.008863701
          -0.40    0.015830910
          -0.30    0.027165946
          -0.20    0.044789076
          -0.10    0.070949212
           0.00    0.107981950
           0.10    0.157900348
           0.20    0.221841708
           0.30    0.299454987
           0.40    0.388372153
           0.50    0.483941466
           0.60    0.579383135
           0.70    0.666449308
           0.80    0.736540318
           0.90    0.782085419
           1.00    0.797884524
           1.10    0.782085299
           1.20    0.736540139
           1.30    0.666449070
           1.40    0.579382896
           1.50    0.483941197
           1.60    0.388371855
           1.70    0.299454689
           1.80    0.221841425
           1.90    0.157900125
           2.00    0.107981816
           2.10    0.070949145
           2.20    0.044789053
           2.30    0.027165946
           2.40    0.015830917
           2.50    0.008863709
           2.60    0.004768186
           2.70    0.002464446
           2.80    0.001223808
           2.90    0.000583896
           3.00    0.000267662
Por otra parte, esto:

Código: Seleccionar todo

if(x.lt.-1.or.x.gt.3) exit
es de fortran 77 y me parece que estás trabajando en fortran 95.
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje