Skocz do zawartości

interpolacja lagrange'a i newtona


Papiq20

Polecane posty

program lagrang;

uses crt;

const nmax=100;

var x,f:array[0..nmax] of real;

i,j,n :integer;

fi,fx,a:double;//real;

begin

clrscr;

Write('Podaj ilosc wezlow n= ');

ReadLn(n);

if n<=0 then

halt;

if n>nmax then

halt;

for i:=1 to n do

begin

Write('Podaj x= ');

ReadLn(x);

Write('Podaj f(',x:6:2,'):');

ReadLn(f);

end;

Write('Oblicz interpolacje w punkcie ');

ReadLn(a);

fx:=0;

for i:=0 to n do

begin

fi:=1;

for j:=0 to n do

 

if j<>i then fi:=fi*(a-x[j])/(x-x[j]);

 

fx:=fx+f*fi;

 

end;

WriteLn('Interpolacja obliczona metoda Lagrange = ',fx:6:2);

for j:=1 to n do

for i:=n downto j do

f:=(f-f[i-1])/(x-x[i-j]);

 

fx:=f[0];

fi:=1;

for i:=1 to n do

begin

fi:=fi*(a-x[i-1]);

fx:=fx+fi*f;

end;

WriteLn('Interpolacja obliczona metoda Newton = ',fx:6:2);

readkey();

end.

 

 

program dziala ale po wprowadzeniu wezlow na przyklad

x=1 F(x)=1

x=2 F(x)=4

x=0 F(x)=0

i po wprowadzeniu przykladowego punktu na przyklad 0.5 program sie wywala i wyskakuje blad

natomiast gdy wprowadzimy inne punkty

x=1 F(x)=1

x=2 F(x)=4

x= inne niz zero na przyklad 3 i F(x)= inne niz zero byle kwadrat z tej liczby na przyklad 9 program dziala dobrze i oblicza poprawna wartosc interpolacji

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...