Witam. Mam problem. Napisałem sobie funkcje w Pascalu która będzie obliczać wartość wielomianu danego za pomocą wzoru interpolacyjnego Lagrange'a
oto kod z Pascala:
function Lagrange (n : Integer;
var x,f : vector;
xx : Extended;
var st : Integer) : Extended;
var i,k : Integer;
fx,p : Extended;
begin
if (n<0)
then st:=1
else begin
st:=0;
if (n>0)
then begin
i:=-1;
repeat
i:=i+1;
for k:=i+1 to n do
if x[i]=x[k]
then st:=2
until ((i=n-1) or (st=2))
end;
if st=0
then begin
fx:=0;
for i:=0 to n do
begin
p:=1;
for k:=0 to n do
if k<>i
then p:=p*(xx-x[k])/(x[i]-x[k]);
fx:=fx+f[i]*p
end;
Lagrange:=fx
end;
end;
end;
chciałem to wykonać również w matlabie. oto co mi wyszło:
function f = Lagrange(n,x,f,xx)
if n<0
st=1;
else
st=0;
if n>0
i=-1;
do
i=i+1;
for k=i+1:n
if x(i) == x(k)
st=2;
end
while i==n-1 | st==2
end
if st ==0
w = 0;
for i=0:n
p=1;
for k=0:n
if k!=i
p=p*(xx-x(k))/(x(i)-x(k));
w=w+f(i)*p;
end
f=w;
end
end
end
ktoś może pomóc w zdiagnozowaniu błędów?