SUBROUTINE interpol(xinp,yinp,ninp,xout,yout,nout) IMPLICIT NONE c======================================================================= c c objet: c interpolation lineaire c c ATTENTION!: c les tableaux x doivent etre croissants c c Arguments: c ---------- c c entree: c ------- c ninp INT nombre de points des donnes c xinp(ninp) REAL abbcisses des donnees (doivent etre croissantes) c yinp(ninp) REAL valeurs des donnees c c sorties: c -------- c nout INT nombre de points interpolles c xout(nout) REAL abbcisses (doivent etre croissantes) c yout(nout) REAL valeurs interpollees c c======================================================================= c----------------------------------------------------------------------- c 0. Declarations : c ----------------- INTEGER ninp,nout INTEGER iinp,iout,iout0,iout1 REAL xinp(ninp),yinp(ninp) REAL xout(nout),yout(nout) c----------------------------------------------------------------------- c traitement des valeurs telles que xoutxinp(ninp): c ----------------------------------------------- DO 500 iout=iout1,nout yout(iout)=yinp(ninp) c si on veut extrapoler aux bords: c 1 +(xout(iout)-xinp(ninp))* c 2 (yinp(ninp-1)-yinp(ninp))/(xinp(ninp-1)-xinp(ninp)) 500 CONTINUE RETURN END