procedura Newton()
>
Newton := proc(k,body)
global N;
local A,B,a,i,j,n,m,y,f;
with(linalg):
A:=array(1..k,1..k):
for i from 1 by 1 to k do
A[i,1]:=1:
end do:
for i from 1 by 1 to k do
for j from 2 by 1 to k do
A[i,j]:=0:
end do:
end do:
f(y):=1:
for j from 2 by 1 to k do
f(y):=f(y)*(y-body[j-1][1]):
for i from j by 1 to k do
A[i,j]:=eval(f(y),y=body[i][1]):
end do:
end do:
B:=array(1..k):
for i from 1 by 1 to k do
B[i]:=body[i][2]:
end do:
a:=linsolve(A,B):
N(x):=sum(a[n]*product((x-body[m][1]),m=1..n-1), n=1..k);
N(x):=simplify(N(x));
end: