Bonjour tout le monde, j’ai le problème suivant : je veux faire l’intégrale suivante :


Avec est la fonction suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
!LA FONCTION DENSITE DE PROBABILITE DE LA LOI NORMALE  
!----------------------------------------------------
 
	FUNCTION DNORM(T)
	INCLUDE 'comm.f'
 
	PI=3.141592654
 
	DNORM=(1/(EC*SQRT(2*PI)))*EXP(-0.5*(((T-AVG)/EC)**2))
 
	RETURN
 
	END
EC et AVG sont des constantes avec EC=900.0 et AVG=90.0

Et la fonction (.) est la fonction avec f est même que avec les paramètre EC1=80.0 et AVG1=850.0

Donc on aura besoin de la fonction suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
!LA FONCTION DENSITE DE PROBABILITE DE LA LOI NORMALE  
!----------------------------------------------------
 
	FUNCTION DNORM1(T)
	INCLUDE 'comm.f'
 
	PI=3.141592654
 
	DNORM1=(1/(EC1*SQRT(2*PI)))*EXP(-0.5*(((T-AVG1)/EC1)**2))
 
	RETURN
 
	END
Pour faire l’intégrale on besoin d’une subroutine d’intégrale QTRAP :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
!CALCUL D'UNE INTEGRALE PAR LA METHODE DU TRAPEZE
!------------------------------------------------
 
	SUBROUTINE QTRAP(FUNC,U,V,S)
	PARAMETER (EPS=1.E-2,JMAX=20)
	EXTERNAL FUNC
	IF ((V-U).LT.1.E-4) THEN
 
	S=1.E-6
 
	RETURN
	ENDIF
 
	IF (V.EQ.0.0) THEN
 
	V=0.001
 
	ENDIF
 
	OLDS=-1.E30
 
	DO 10 J=1,JMAX
 
	 CALL TRAPZD(FUNC,U,V,S,J)
 
	 IF (ABS(S-OLDS).LT.EPS*ABS(OLDS))RETURN
 
	 OLDS=S
 
 10	CONTINUE
 
	 END
 
!SUITE DE LA METHODE DU TRAPEZE
!------------------------------
 
	SUBROUTINE TRAPZD(FUNC,U,V,S,N)
	EXTERNAL FUNC
	IF (N.EQ.1)THEN
	 S=0.5*(V-U)*(FUNC(U)+FUNC(V))
	IT=1
 
	ELSE
	 TNM=IT
	 DEL=(V-U)/TNM
	 G=U+0.5*DEL
	 SUM=0.
 
	 DO 12 J=1,IT
	  SUM=SUM+FUNC(G)
	  G=G+DEL
 
 12	  CONTINUE
	 S=0.5*(S+(V-U)*SUM/TNM)
	 IT=2*IT
 
	ENDIF
	RETURN
	END
Donc la fonction CNORM qui est F = est représentée par la fonction suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
! LA FONCTION DE DISTRIBUTION DE LA LOI NORMALE
!----------------------------------------------
 
	FUNCTION CNORM(T)
	INCLUDE 'comm.f'
	EXTERNAL QTRAP,DNORM1
 
	CALL QTRAP(DNORM,0.0,T,S)
 
	CNORM=S
 
	RETURN
 
	END

Le problème c’est toujours la même valeur que je trouve qui’ est 1.0000E-0.6

Comment faire ?

Merci.