INTERPOLACE A EXTRAPOLACE POLYNOMY

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
Je dáno pole A.1,...,A.N a odpovídající funkční hodnoty B.1,...,B.N, je dána hodnota V. Pro polynom P. stupně N-1 takový, že AI=A.I;P.AI=B.I, pro I=1,...,N, určíme hodnotu Y=P.V

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
 

POLINT: procedure expose A. B.
parse arg N, V
Ns = 1; Dif = ABS(V - A.1)
do I = 1 to N
  Dift = ABS(V - A.I)
  if Dift < Dif
    then do; Ns = I; Dif = Dift; end
  C.I = B.I; D.I = B.I
end
Y = B.Ns; Ns = Ns - 1;
do M = 1 to N - 1
  do I = 1 to N - M
    Ho = A.I - V
    IpM = I + M; Hp = A.IpM - V
    Ip1 = I + 1; W = C.Ip1 - D.I
    Den = Ho - Hp
    if Den = 0 then
      call ERROR "POLINT: Chyba - dvě po sobě",
        "následující hodnoty pole A.",
        "jsou shodné"
    Den = W / Den; D.I = Hp * Den
    C.I = Ho * Den
  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

 

PŘÍKLAD
Následující program

 

N = 5
do J = 1 to 5; A.J = J; end
B.1 = 1.8;  B.2 = 2.27; B.3 = 3.18
B.4 = 4.01; B.5 = 4.91
say POLINT(N, 2.25)
exit
POLINT: procedure expose A. B.
...

 

zobrazí 2.48801270 0.0114501953.

 

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

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