Hola a todos. Antes que nada presentarme a todos. Es de buena educación presentarse antes de pedir nada. Invito a birritas!
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!