> #==================================

> # Uebung 9 Aufgabe 3: Interpolation

> #=================================

> # hier duerfen auch Ableitungen auftreten

> #

> restart: with(linalg):

Warning, new definition for norm

Warning, new definition for trace

> n:=5; x:=vector([1,1,1,2,2,3]); f:=vector([-4,-7,-8, -14,-8, 14]);

[Maple Math]

[Maple Math]

[Maple Math]

> NT:=matrix(n+1,n+1): for id from 1 to n+1 do NT[id,1]:=f[id]: od:

> for jd from 1 to n do for id from 1 to n+1 - jd do h:=x[id+jd]-x[id]: if (h <> 0) then NT[id,jd+1]:=(NT[id+1,jd]-NT[id,jd])/h: else NT[id,jd+1]:=NT[id+1,jd]/jd: NT[id+1,jd]:=NT[id,jd]: fi: od:od:

> for id from 1 to n+1 do printf(`%8.5f | `,x[id]); for jd from 1 to n+2-id do printf(`%9.5f `, NT[id,jd]); od; printf(`\n`); od;

1.00000 | -4.00000 -7.00000 -4.00000 1.00000 4.00000 1.00000

1.00000 | -4.00000 -7.00000 -3.00000 5.00000 6.00000

1.00000 | -4.00000 -10.00000 2.00000 17.00000

2.00000 | -14.00000 -8.00000 36.00000

2.00000 | -14.00000 28.00000

3.00000 | 14.00000

> np(x):=NT[1,n+1]: for id from n to 1 by -1 do np(x):=np(x)*(x-x[id])+NT[1,id]: od:

> np(x); simplify(np(x));

[Maple Math]

[Maple Math]

> plot(np(x), x=1..3);

>