Hidrológiai Közlöny 1987 (67. évfolyam)
2-3. szám - Gauzer Balázs: Néhány FORTRAN szubrutin hidrológiai adatok elsődleges feldolgozásához
154 HIDROLÓGIAI! KÖZLÖNY 1987. 67. ÉVFOLYAM, 2—3. SzA M «STORAGE :2 FUNCTION NTMDIF(ITM1,ITM2 ) DIMENSION ITMl(l), ITM2(1) C NDAYS-NDTDIF(ITM1(3),ITM2(3)) NTMDIF^14 40*NDAYS+ ITH1(1)*60+1 TM1(2) (ITM2(1) «60+ITM2(2)) RETURN END «STORAGE: 2 SUBROUTINE NTMSHFtMINUTE ,ITM1 ,ITM2 ) DIMENSION ITMl(l), ITM2{1) C ITM2 (1)=ITM1 (1) ITM2 (2)=ITM1 (2) CALL NDTSHF(0,ITM1 (3),ITM2 (3)) NN-ITM2 (2)+MINUTE IF(NN) 1, 10, 5 1 ITM2(1)-ITM2(1)-1 IF(ITM2(1) ) 2, 3, 3 2 ITM2(1)-23 CALL NDTSHF(-1,ITM1(3) ,ITM2(3) ) 3 NN=NN+60 IF(NN) 1, 10, 10 C 5 MlN=NN-60 IF(MIN) 10, 6, 6 6 NN=MIN ITM2(1)= ITM2(1)+1 IF( ITM2(1)-24) 5, 7, 7 7 ITM2(l)-0 CALL NDTSHF( 1,ITM1 (3),ITM2 (3)) GOTO 5 C 10 ITM2 (2)=NN RETURN END 8. ábra. Az NTMDIF és az NTMSHF szubrutin hó, év formában megadott időpontokkal végezzük (8. ábra). 6, Spline interpoláció Befejezésül a „spline" interpolációt végrehajtó szubrutinokat mutatjuk be. Az alkalmazott matematikai módszer a következő (9. ábra): Adott az Y = f(X) függvény N+l pontjával X(0), X(l), X(2), ... X(N) 7(0), 7(1), 7(2), ... Y(N) Az eljárás során ezt az 7=f(x) függvényt az x(I—1), x(I). 1 = 1, 2, 3, ... N intervallumban az alábbi feltételeket kielégítő S(X (/)) harmadfokú polinommal közelítjük: -f(X s(I)) = S(X(I) — az intervallumok kezdőpontjában a két szomszédos intervallumban érvényes harmadfokú polinomok első és második deriváltjai megegyezzenek. Az 8(X(I)) harmadfokú polinom alakja a következő: (X(i)-X)°-L(iy (X(i)-X) S(X) = M(I—l)v7(7-1) X(I)L(I) 6 7,(7) X + + M(i) W-W-W-HD 1 (X-X(I-1) ) + + 7(/) 6 7,(7) X—X(I—1) iád -1) ahol: L(I) = X(1)-X(IM(I) = S"(X(I)) M(I—1)=S"(X(I—1)) M(I) meghatározására megoldva következő egyenletet: L(l) L(I) + L(I +1) L(I +1) + L(I) + L(I + 1) 7(/ + l)-7(/) 7(7) M(I—1)+ 23/(7)-f M(I + 1) = -7(7-1) = 6L(I +1) L(I) L(I) + L(I +1) (7=1,2,3, ... N), ós figyelembe véve: N(0) = 0és M (N) = 0, a harmadfokú polinom előállítható. Sfx) közeli fii harmadfokú polinom f(x(i)) =S(x(D) f'(m) -S'(m) f'M =s"(m) *M „. x(T) X(l+1) ^ LJU X(N) 9. ábra. A spline interpoláció