{ Keszitette: Erdei Szabolcs 1997. erdeisz@dragon.klte.hu } program newton; {A lagrange fele interpolacios alappolinom kiszamitasa Newton I. fromulajaval} uses crt; type valos = extended; const maxy = 50; var n: word; i: word; dy : array [1..maxy,1..maxy] of valos; fil : text; xo,vx,h,t : valos; l : valos; procedure buildy; var q,w : word; begin for w:=2 to n do for q:=1 to (n-w+1) do dy[q,w]:=dy[q+1,w-1]-dy[q,w-1]; end; procedure inputdata; var e : word; begin assign(fil,'newton.inp'); reset(fil); read(fil,n); for e:=1 to n do read(fil,dy[e,1]); readln(fil,xo); readln(fil,vx); read(fil,h); close(fil); end; function fakt( alap : word) : valos; var kuty : valos; var r : word; begin kuty:=1; for r:=1 to alap do kuty:=kuty*r; fakt:=kuty; end; procedure sett; begin t:=((vx-xo)/h); end; function egyutth(tv: valos;kv : word) : valos; var tmp : valos; y : word; begin tmp:=tv; if kv>=2 then for y:=2 to kv do tmp:=tmp*(tv-y+1); tmp:=tmp/fakt(kv); egyutth:=tmp; end; procedure calculate; var u : word; begin buildy; l:=0; for u:= 0 to n-1 do if u=0 then begin l:=l+dy[1,1]; writeln(u,': ',l); end else begin l:=l+egyutth(t,u)*dy[1,u+1]; writeln(u,': ',l); end; end; begin clrscr; inputdata; sett; writeln; writeln('N erteke: ',n); for i:=1 to n do writeln('Y',i,' erteke: ',dy[i,1]:5:3); writeln('X0 erteke: ',xo:5:3);writeln('X erteke: ',vx:5:3);writeln('h erteke: ',h:5:3); writeln; buildy; calculate; writeln; writeln('L(',vx:5:2,')=',l:7:5); writeln; end.