Calcul intégrale sur fortran
Bonsoir,
j'ai programmé un programme sur fortran qui calcule une intégrale simple
il ne génère aucune erreur mais il donne toujours comme résultat 0.
svp aidez moi à détecter l'erreur je bloque
voici le programme:
external GAUS,TRAP
double precision y
y=TRAP(1,10,GAUS,1)
print *, y
end
double precision FUNCTION GAUS (T)
GAUS=EXP(T)
return
end
double precision FUNCTION TRAP (A,B,F,DX)
! A et B sont les bornes de l'intégrale
!F est la fonction à intégrer
!DX est le pas d'intégration
!N est le nombre de pas nécessaires
implicit none
integer N,I
double precision B,A,DX,F,X
N=(B-A)/DX-.5
TRAP=F(A)+F(B)/2.0
X=A
DO 10 I=1,N
X=X+DX
TRAP=TRAP+F(X)
10 CONTINUE
TRAP=TRAP*DX
RETURN
end
merci d'avance
j'ai programmé un programme sur fortran qui calcule une intégrale simple
il ne génère aucune erreur mais il donne toujours comme résultat 0.
svp aidez moi à détecter l'erreur je bloque
voici le programme:
external GAUS,TRAP
double precision y
y=TRAP(1,10,GAUS,1)
print *, y
end
double precision FUNCTION GAUS (T)
GAUS=EXP(T)
return
end
double precision FUNCTION TRAP (A,B,F,DX)
! A et B sont les bornes de l'intégrale
!F est la fonction à intégrer
!DX est le pas d'intégration
!N est le nombre de pas nécessaires
implicit none
integer N,I
double precision B,A,DX,F,X
N=(B-A)/DX-.5
TRAP=F(A)+F(B)/2.0
X=A
DO 10 I=1,N
X=X+DX
TRAP=TRAP+F(X)
10 CONTINUE
TRAP=TRAP*DX
RETURN
end
merci d'avance
1 réponse
-
Bonjour,
Pourquoi définis-tu B,A,DX,F,X en double precision ?
Apparemment ce sont des entiers: integer B,A,DX,F,X
En les déclarant integer j'obtiens y = 56995072 ce n'est peut-être pas le résultat escompté mais on passe dans la boucle DO, ce qui n'est pas le cas avec B, A, DX, F, X en double précision.
Cordialement.
Cchristian.