Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Fortran
Fortran Forum d'entraide sur la programmation en Fortran. Avant de poster -> FAQ Fortran
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 07/09/2010, 03h50   #1
Invité régulier
 
Inscription : décembre 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 35
Points : 5
Points : 5
Par défaut 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:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
suzanne1307 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2010, 08h50   #2
Membre chevronné
 
Avatar de genteur slayer
 
Homme
Développeur informatique
Inscription : juin 2002
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2002
Messages : 692
Points : 758
Points : 758
Envoyer un message via ICQ à genteur slayer Envoyer un message via MSN à genteur slayer
as-tu essayer de remplacer F par GAUS dans la seconde fonction (en mettant GAUS en external)
__________________
il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
Libere-toi hacker, GNU's Not Unix!!!
genteur slayer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2010, 17h50   #3
Modérateur
 
Inscription : août 2006
Messages : 698
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : août 2006
Messages : 698
Points : 900
Points : 900
On ne le répète jamais assez souvent :

implicit none, implicit none, implicit non...

La déclaration implicite des variables est une erreur de design de Fortran. On doit toujours débuter un programme ou sous-programme par un implicit none. Le temps de débogage sauvé en moyenne est nettement supérieur au temps requis pour taper cette instruction, même dans un petit programme.

Ton programme ne fonctionne pas car rien n'indique dans le programme principal que TRAP et GAUS sont double precision. Par défaut, ils sont donc considérés real simple précision.
Sylvain Bergeron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2010, 00h57   #4
Invité régulier
 
Inscription : décembre 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 35
Points : 5
Points : 5
Bonsoir,
j'ai remplacé F dans la fonction TRAP, j'ai mis implicit none au début duprogramme et j'ai déclaré TRAP et GAUS comme double precision comme vous me l'aviez dit mais sans résultat, aucun changement
svp aidez moi
suzanne1307 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2010, 14h17   #5
Membre du Club
 
Inscription : avril 2009
Messages : 51
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 51
Points : 58
Points : 58
Par défaut Appel incorrect à la fonction TRAP

Chez moi cela marche si tu appelles la fonctionde la façon suivante

Code :
1
2
3
4
5
6
       REAL*8 A,B,DX

         A= 1.0
         B= 10.0
         DX = 1.0
         y=TRAP(A,B,GAUS,DX)
l'appel simple y=TRAP(1,10,GAUS,1) ne respecte pas les déclarations de la fonction TRAP.

M.P.
mipicard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2010, 03h50   #6
Invité régulier
 
Inscription : décembre 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 35
Points : 5
Points : 5
Je vous remercie beaucoup pour votre aide
suzanne1307 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 18h39.


 
 
 
 
Partenaires

Hébergement Web