Bonjour tout le monde, j’ai le problème suivant : je veux faire l’intégrale suivante :
Avec est la fonction suivante :
EC et AVG sont des constantes avec EC=900.0 et AVG=90.0
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
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 :
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 !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
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
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
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.
Partager