interpolacja zrobione ale...

0

Witam! mam pytanie znalazłem na stronie program do interpolcaji hermita oto on:
program Interpolacja_Hermite;
uses crt;
const max = 25;
type tablica = array[0..max] of real;
tabl_q = array[0..max,0..max] of real;
var
x,a : tablica;
fx : tablica;
ffx : tablica;
q : tabl_q;
i, j : integer;
n : integer;

function oblicz_Hermitea(xobl:real) : real;
var temp, temp2 : real;
begin
temp:= q[0,0];
for i:= 1 to 2n+1 do
begin
temp2:= 1;
for j:= 0 to i-1 do
temp2:= temp2 * (xobl-a[j]);
temp:= temp + (q[i,i]
temp2);
end;
oblicz_hermitea:= temp;
end;

procedure interpol_Hermitea;
begin
for i:= 0 to n do
begin
a[2i]:= x[i];
a[2
i+1]:=x[i];
q[2i,0]:= fx[i];
q[(2
i)+1,0]:= fx[i];
q[(2i)+1,1]:= ffx[i];
if i <> 0 then
if a[2
i]-a[2i-1] = 0 then q[2i,1]:= ffx[2i] else
q[(2
i),1]:= ( q[(2i),0]-q[(2i)-1,0] )/(a[2i]-a[(2i)-1]);
end;
for i:= 2 to (2n)+1 do
begin
for j:= 2 to i do
begin
if a[i]-a[i-j] = 0 then q[i,j]:= ffx[i] else
q[i,j]:= ( q[i,j-1] -q[i-1,j-1])/(a[i]-a[i-j]);
end;
end;
for i:= 0 to 2
n+1 do write('H',i,'= ',q[i,i]7,' ');
end;

var k, obl:real;
begin
clrscr;
n:= 1;
x[0]:= 0; fx[0]:= 0; ffx[0]:= 1;
x[1]:= 1; fx[1]:= 3; ffx[1]:= 6;
{ x[0]:= 1.3; fx[0]:= 0.6200860; ffx[0]:= -0.5220232;
x[1]:= 1.6; fx[1]:= 0.4554022; ffx[1]:= -0.5698959;
x[2]:= 1.9; fx[2]:= 0.2818186; ffx[2]:= -0.5811571;
} interpol_Hermitea;
writeln;
write('podaj x: '); readln(obl);
k:=oblicz_hermitea(obl);
write('wartosc wielomianu Hermite''a dla zadanego x= ',obl4,' wynosi: ',k4);
readln;
end.

 


i teraz pytanie:  potrzebuje wynik postaci:

(t)=a(0)<sup>n+a(1)t</sup>n-1+...+a(n-1)t+a(n).

wszystko co potrzebne do wstawienia jest w programie tylko nie wiem jak to wyciągnąć...  czy da rade to przekształcić? tzn dodac nową opcje wyswietlania gdyz pełny wynik taki jak jest generowany przez ten program zostanie naniesiony na wykres...
0

Program liczy źle! Tzn. coś liczy ale na pewno nie funkcję interpolacyjną obliczoną metodą Hermita.

1 użytkowników online, w tym zalogowanych: 0, gości: 1