INTERPOLACE A EXTRAPOLACE RACIONÁLNÍ FUNKCÍ

PROBLÉM
Jsou dány hodnoty funkce v bodech A.1<A.2<...<A.N. Odhadněte hodnotu funkce v libovolném bodě V.

ALGORITMUS
V případě interpolace (tj. když A.1<=V<A.N) je racionální funkce konstruována tak, aby procházela všemi zadanými hodnotami. Pro případ extrapolace, V je mimo interval [A.1,A.N], se používá algoritmus objevený J. Stoerem a R. Bulirshem.

IMPLEMENTACE
Jednotka: vnitřní funkce
 
Globální proměnné: rostoucí posloupnost A.1,...,A.N, pole funkčních hodnot B.
 
Parametry: přirozené číslo N, reálné číslo V
 
Vrací: dvojici hodnot oddělených mezerou - Y a odhad chyby Dy

 

RATINT: procedure expose A. B.
parse arg N, V
Tiny = 1E-25; Ns = 1; Hh = ABS(V - A.1)
do I = 1 to N
  H = ABS(V - A.I)
  if H = 0
    then do; Y = B.I; Dy = 0; end
    else if H < Hh
           then do; Ns = I; Hh = H; end
  C.I = B.I; D.I = B.I + Tiny
end
Y = B.Ns; Ns = Ns - 1
do M = 1 to N - 1
  do I = 1 to N - M
    Ip1 = I + 1; W = C.Ip1 - D.I
    IpM = I + M; H = A.IpM - V
    T = (A.I - V) * D.I / H
    Dd = T - C.Ip1
    if Dd = 0 then
      call ERROR "RATINT: Chyba - dělení nulou"
    Dd = W / Dd; D.I = C.Ip1 * Dd; C.I = T * Dd
  end
  if 2 * Ns < (N - M)
    then do; Nsp1 = Ns + 1; Dy = C.Nsp1; end
    else do; Dy = D.Ns; Ns = Ns - 1; end
  Y = Y + Dy
end
return Y Dy
 
ERROR: say ARG(1); exit

 

SOUVISLOSTI

Literatura
Press W.H., Teukolsky S.A., Vetterling W.T., Flannery B.P. Numerical Recipes in C : the art of scientific computing
- 2nd ed. University Press, Cambridge, 1992


Obálka Obsah Index Hlavní stránka Rexx   Mail

změněno 8. srpna 2000
Copyright © 2000-2001 Vladimír Zábrodský, RNDr.