soumaya2012
Messages postés1Date d'inscriptionmardi 6 novembre 2007StatutMembreDernière intervention 6 novembre 2007
-
6 nov. 2007 à 12:36
lol -
24 févr. 2008 à 13:36
Bonjour,
je dois programmer une equation j'ai réalisé ce programme mais je n'ai pas obtenue des resultats corrects,
voici le programme réalisé sur fortran:
!programme principal
External taux,rzero,Vun,QTRAP,run,rdeux
Include 'comm.f'
delta=0.33
DNun=6.0
DNdeux=24.0
W=2.0
DL=8.0
ALPHA=2.0
PLMD=2.0
tauxun=delta*(DNun)
tauxdeux=delta*(DNun+1)
tauxtrois=delta*(DNdeux)
Do 50 Dm=1.0,5.0,1.0
if(Dm.EQ.1.0) then
deltam=0.74
Cm=10.0
ENDIF
if(Dm.EQ.2.0) then
deltam=0.41
Cm=30.0
ENDIF
if(Dm.EQ.3.0) then
deltam=0.20
Cm=60.0
ENDIF
if(Dm.EQ.4.0) then
deltam=0.09
Cm=100.0
ENDIF
if(Dm.EQ.5.0) then
deltam=0.04
Cm=160.0
ENDIF
!2éme terme de NB(W,L)
do 100 s=DNun+1.0,DNdeux-1.0,1.0
tauxj= delta*s
tauxNun= delta*(s+1)
do 90 Dj=0.0,s,1.0
if (Dj.EQ.0) then
V=0
else
V=V+ (deltam)*(taux(Dj)-taux(Dj-1))
endif
90 continue
Vj=V
A=Vj-tauxj
call QTRAP(rzero,tauxj,tauxNun,C)
if (s.EQ.0.0) then
somme=0.0
else
somme=C+somme
endif
100 continue
!1er terme de NB(W,L)
do 80 Dk=0.0,DNun,1.0
if (Dk.EQ.0) then
VNun=0
else
VNun=VNun+ (deltam)*(taux(Dk)-taux(Dk-1))
endif
80 continue
call QTRAP(run,W,tauxdeux,D)
!3éme terme de NB(W,L)
do 70 B=0.0,DNdeux,1.0
if (B.EQ.0.0) then
VNdeux=0.0
else
VNdeux=VNdeux+ (deltam)*(taux(B)-taux(B-1))
endif
70 continue
call QTRAP(rdeux,tauxtrois,DL,E)
G=C+D+E
do 60 Cr=20.0,500.0,20.0
R=(Cm*DNdeux)+(Cr*G)
write(6,*)Dm,Cr,R
60 continue
50 continue
END
!LA FONCTION DE tauxj
FUNCTION taux(X)
INCLUDE 'comm.f'
!L’intégrateur QTRAP (calcul d’une intégrale simple à l’aide de la méthode du trapèze) :
SUBROUTINE QTRAP(FUNC,A,B,S)
PARAMETER (EPS=1.E-2, JMAX=20)
IF((B-A).LT.1.E-4) THEN
S = 1.E-6
RETURN
ENDIF
IF(B.EQ.0.0) THEN
B = 0.001
ENDIF
OLDS=-1.E30
DO 11 J=1,JMAX
CALL TRAPZD(FUNC,A,B,S,J)
IF (ABS(S-OLDS).LT.EPS*ABS(OLDS)) RETURN
OLDS=S
11 CONTINUE
! PAUSE 'Too many steps.'
END
!La méthode du trapèze : Méthode utilisée par l’intégrateur QTRAP
SUBROUTINE TRAPZD(FUNC,A,B,S,N)
! This routine computes the N'th stage of refinement of an extended
! trapezoidal rule. FUNC is input as the name of the function to be
! integrated between limits A and B, also input. When called with N=1
! the routine returns as S the crudest estimate of the integral.
! Subsequent calls with N=2,3,.. will improve the accuracy of S by
! adding 2**N-2 additional interior points. S should not be modified
! BETWEEN SEQUENTIAL CALLS.
! EXTERNAL FUNC
IF (N.EQ.1) THEN
S=0.5*(B-A)*(FUNC(A)+FUNC(B))
IT = 1
ELSE
TNM=IT
DEL=(B-A)/TNM
X=A+0.5*DEL
SUM=0.
DO 11 J=1,IT
SUM=SUM+FUNC(X)
X=X+DEL
11 CONTINUE
S=0.5*(S+(B-A)*SUM/TNM)
IT=2*IT
END IF
RETURN
END
bonjour:
je doit faire un programme fortran d'une equation thermodynamique qui me permetre de calculer x1,x2,x3 sachant que x1+x2+x3=1 et k=x2/x3 avec k=cost, aidez moi svp et merci à tous
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.