Fecha y hora actual: Sab 31 Jul, 2010 06:08 am
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Programar en Fortran el metodo compuesto de Milne.

Responder al Tema

Índice del Foro > Programación en general > Programar en Fortran el metodo compuesto de Milne.

Autor Mensaje
dual



Registrado: 08 May 2009
Mensajes: 3

Mensaje Publicado: Vie 08 May, 2009 22:38 pm

Título del mensaje: Programar en Fortran el metodo compuesto de Milne.

Responder citando

Hola a todos. Os explico. Nos han pedido programar en Force (variante del Fortran) un programa que calcule una aproximación de la integral de una función por el método compuesto de milne. La verdad es que llevamos muchos dias peleando sin descanso, rompiéndonos la cabeza Y OOBSESIONADOS con el programita en cuestión y el tiempo se nos hecha encima. La cuestión es que nos da una serie de errores que no sonseguimos solucionar y mi petición es si, por favor, alguien puede echarme un cable y ayudarme a ver qué falla, a que se deben los errores. Os pongo el código del programa y la subrutina de la función, a ver si alguien más experimentado se da cuenta, ya que yo ya no sé ni qué probar!
Lo dicho, primero el código del programa:

include "func.f"
Program Milne
dimension a(20),b(20),sum1(20),n(20)

integer n,i
real a,b,sum1,func
write (*,*) "Escribe el primer valor del intervalo"
read (*,*) a
write (*,*) "Escribe el segundo valor del intervalo"
read (*,*) b
write (*,*) "Escribe el valor de n m£ltiple de 4"
read (*,*) n
h=(b-a)/n
call funcx
do i=0,n
x(i)=a+h*i
y(i)=func(i)
end do
sum1=7*(y(0)+y(n))

do i=1, n-1,mod(i,4)
if (mod(i,4).eq.1)then
sum1=sum1+32*y(i)
else if (mod(i,4).eq.3)then
sum1=sum1+32*y(i)

else if(mod(i,4).eq.2) then
sum1=sum1+12*y(i)
else
sum1=sum1+14*y(i)
end if
end do
sum1=sum1*2*h/45
write (*,*) "L'aproximacio en l'interval",a,b, "es",sum1
end


Y ahora el código de la subrutina donde está la función. Veréis que es simple, para probar, la función es F(x)=x:


real function funcx
real x
func=x
return
end



A priori dar mil y una gracias a la ayuda que me podáis prestar, sea mucha o poca. Cualquier cosilla me será vital para llegar a solucionar el problema. De veras, gracias! Guiño

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 890
Ubicación: y*width+x

Mensaje Publicado: Lun 11 May, 2009 15:43 pm

Título del mensaje: Re: Programar en Fortran el metodo compuesto de Milne.

Responder citando

mira Dual, me he bajado el Force y es una m... pinchada en un palo, dículpame mi atrevimiento, PERO ES IMPOSIBLE PROGRAMAR CON ESA COSA jajjajajaj Risa sólo un nostálgico del Fortran usaría semejante cosa... Vamos hacer un trato, si te instalas en el DEV-C, http://www.megaupload.com/?d=NK7KVHYW o si quieres el Visual C# (el cual comencé a desentrañar hace un mes y creo que es una buena apuesta de Ms con vista al Vista)

con gusto te ayudaré a transladar esa formula y otras a el gran y maravilloso lenguaje de Keny y Dennis, ok? cuando éstes listo postea en aquí...http://lospillaos.es/foro/c-c-visual-c--vf33.html

nos vemos Fumao


http://www.youtube.com/watch?v=DzLKIW86hmM
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
dual



Registrado: 08 May 2009
Mensajes: 3

Mensaje Publicado: Lun 11 May, 2009 16:29 pm

Título del mensaje: Re: Programar en Fortran el metodo compuesto de Milne.

Responder citando

gracias por tu ayuda, pero el profesor lo quiere en force. Soy estudiante de arquitectura y lo que quieren es que aprendamos unas bases para el dia de mañana si nos hace falta, programar alguna chorrada para los calculos de edificios supongo. Ok

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 890
Ubicación: y*width+x

Mensaje Publicado: Lun 11 May, 2009 23:17 pm

Título del mensaje: Re: Programar en Fortran el metodo compuesto de Milne.

Responder citando

jajajaja sabes que? hice un Copy/Paste al force, en este caso la v2.0, y y una vez que ejecutado, me salieron errores a punta pala, y casi todos de sintaxis... en otras palabras, quizás el código sea fortran, pero force es posible que tenga el suyo propio... aunque por ejemplo el write (*,*) no tenía ningún sentido en esa parte, así que para ayudarte tendría que aprender Force... si no te corre prisa haré un esfuerzo, de lo contrario me resultará difícil trabajar a contra reloj


http://www.youtube.com/watch?v=DzLKIW86hmM
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Vila
Usuario Iniciado


Registrado: 14 May 2010
Mensajes: 22

Mensaje Publicado: Mie 07 Jul, 2010 21:11 pm

Título del mensaje: Re: Programar en Fortran el metodo compuesto de Milne.

Responder citando

dual escribió:
Hola a todos. Os explico. Nos han pedido programar en Force (variante del Fortran) un programa que calcule una aproximación de la integral de una función por el método compuesto de milne. La verdad es que llevamos muchos dias peleando sin descanso, rompiéndonos la cabeza Y OOBSESIONADOS con el programita en cuestión y el tiempo se nos hecha encima. La cuestión es que nos da una serie de errores que no sonseguimos solucionar y mi petición es si, por favor, alguien puede echarme un cable y ayudarme a ver qué falla, a que se deben los errores. Os pongo el código del programa y la subrutina de la función, a ver si alguien más experimentado se da cuenta, ya que yo ya no sé ni qué probar!
Lo dicho, primero el código del programa:

include "func.f"
Program Milne
dimension a(20),b(20),sum1(20),n(20)

integer n,i
real a,b,sum1,func
write (*,*) "Escribe el primer valor del intervalo"
read (*,*) a
write (*,*) "Escribe el segundo valor del intervalo"
read (*,*) b
write (*,*) "Escribe el valor de n m£ltiple de 4"
read (*,*) n
h=(b-a)/n
call funcx
do i=0,n
x(i)=a+h*i
y(i)=func(i)
end do
sum1=7*(y(0)+y(n))

do i=1, n-1,mod(i,4)
if (mod(i,4).eq.1)then
sum1=sum1+32*y(i)
else if (mod(i,4).eq.3)then
sum1=sum1+32*y(i)

else if(mod(i,4).eq.2) then
sum1=sum1+12*y(i)
else
sum1=sum1+14*y(i)
end if
end do
sum1=sum1*2*h/45
write (*,*) "L'aproximacio en l'interval",a,b, "es",sum1
end


Y ahora el código de la subrutina donde está la función. Veréis que es simple, para probar, la función es F(x)=x:


real function funcx
real x
func=x
return
end



A priori dar mil y una gracias a la ayuda que me podáis prestar, sea mucha o poca. Cualquier cosilla me será vital para llegar a solucionar el problema. De veras, gracias! Guiño


Nunca he usado el susodicho "Force". En un pasado, creo que ya remoto, programé en Fortran IV en Mainframes. Intento acordarme de aquel antediluviano lenguaje para poder resolver este problema.

Primer error:
Se han declarado arreglos con el mismo nombre que variables que vienen a continuación:

dimension a(20),b(20),sum1(20),n(20)

En esta línea se están definiendo arreglos a, b y n de dimensión 20, pero acto seguido aparece en el mismo programa principal la declaración:

integer n,i
real a,b,sum1,func

Donde aparecen declarados n, a y b como si fuesen variables simples de tipo entero, lo que a mi entender debe dar error de doble declaración.
Además, si las variables antes declaradas mediante Dimension son arreglos, donde quiera que se utilicen debe ser con sus subíndices, así:

a(i)

Con respecto a la función, si pretende al ser llamada pasarle un parámetro así:

y(i)=func(i)

Entonces en su declaración debe aparecer el parámetro al cual se le dará valor en el llamado, sin embargo la función aparece así declarada:

real function funcx

O sea declarada sin parámetro, a menos que el parámetro sea X en cuyo caso debería ir entre paréntesis.

Finalmente, noto que en el programa principal (main) se hace referencia a unos arreglos X y Y, como en las siguientes instrucciones:

x(i)=a+h*i
y(i)=func(i)

Pero en ninguna parte veo declaradas a X y Y como arreglos. Debería aparecer antes la línea:

Dimension X(20), Y(20)

Pero en ninguna parte la veo.

Sin ánimo de defender al Force (que coincido con WhiteSkull que es una porquería), no me extraña que cuando intenten compilarla les den errores a pasto.
Saludos

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

programar el juego scrabble

judith Programación de juegos o videojuegos 4 Jue 08 Jul, 2010 20:54 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda con metodo Radix

sagdec Java 1 Mar 08 Jun, 2010 06:55 am Ver último mensaje
El foro no contiene ningún mensaje nuevo

Aprender a programar haciendo juegos

choza1 Programación de juegos o videojuegos 12 Vie 09 Abr, 2010 12:46 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda Programar automatas

cypres_snk Java 2 Vie 26 Mar, 2010 22:26 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Mejores paginas para aprender a programar

Ale992 Programación en general 1 Dom 14 Feb, 2010 22:35 pm Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,