yofxcu
C YOFXCU SOURCE CHAT 05/01/13 04:20:13 5004 C C============================================================ C Routine qui lit la valeur d'une courbe et de sa derivee C quand on lui donne l'abscisse C C ENTREES: C NCURV : Nombre de points de la courbe C X : Abscisse C CURVE : Courbe C C SORTIES C Y : Valeur de la fonction en X C DYSDX : Valeur de la derivee en X C C WARNING : On suppose que les abscisses varient de facon monotone C (croissante OU decroissante) C============================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) DIMENSION CURVE(2,NCURV) C IF(CURVE(1,2)-CURVE(1,1).GT.0.D0)THEN C C CAS X CROISSANT C IF (X.LT.CURVE(1,1)) THEN KERRE=32 Y=0.D0 DYSDX=ZERO ELSE KERRE=0 IF (X.EQ.CURVE(1,1)) THEN Y=CURVE(2,1) DYSDX=(CURVE(2,2)-CURVE(2,1))/(CURVE(1,2)-CURVE(1,1)) ELSEIF(X.GE.CURVE(1,NCURV))THEN Y=CURVE(2,NCURV) DYSDX=ZERO ELSE DO IE1=2,NCURV IF (X.LE.CURVE(1,IE1)) GOTO 1 ENDDO 1 DYSDX=(CURVE(2,IE1)-CURVE(2,IE1-1))/ > (CURVE(1,IE1)-CURVE(1,IE1-1)) Y=CURVE(2,IE1)+DYSDX*(X-CURVE(1,IE1)) ENDIF ENDIF C ELSE C C CAS X DECROISSANT C IF (X.GT.CURVE(1,1)) THEN KERRE=32 Y=0.D0 DYSDX=ZERO ELSE KERRE=0 IF (X.EQ.CURVE(1,1)) THEN Y=CURVE(2,1) DYSDX=(CURVE(2,2)-CURVE(2,1))/(CURVE(1,2)-CURVE(1,1)) ELSEIF(X.LE.CURVE(1,NCURV))THEN Y=CURVE(2,NCURV) DYSDX=ZERO ELSE DO IE1=2,NCURV IF (X.GE.CURVE(1,IE1)) GOTO 2 ENDDO 2 DYSDX=(CURVE(2,IE1)-CURVE(2,IE1-1))/ > (CURVE(1,IE1)-CURVE(1,IE1-1)) Y=CURVE(2,IE1)+DYSDX*(X-CURVE(1,IE1)) ENDIF ENDIF C ENDIF C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales