|  |  D.15.14.2 polyInterpolation Procedure from libraryffmodstd.lib(see  ffmodstd_lib).
 
Example:Usage:
polyInterpolation(d, e[, n, L]); d list, e list, n int, L list
Return:
a list l_p where f:=l_p[1] is a polynomial of degree at most size(d)-1
which satisfies the conditions f(d[i])=e[i] for all i, l_p[2] is the product
of all (var(n)-d[i]) for 1 <= i <= size(d) and l_p[3]=d.
Note:
The procedure applies the Newton interpolation algorithm to the pair (d,e)
and returns the output w.r.t. the first variable (default) of the ground
ring. If an optional parameter n, 1<=n<=N (N is the number of variables in the
current basering), is given, then the procedure returns the list l_p w.r.t. the
n-th variable. Moreover, if the number of points (d'[i],e'[i]) is not large enough
to obtain the target polynomial, L = polyInterpolation(d', e', n) can be provided
as an optional parameter to add more interpolation points.
The elements in the first list must be distinct.
 |  | LIB "ffmodstd.lib";
ring rr = 23,(x,y),dp;
list d = 1,2,3,4;
list e = -1,10,3,8;
polyInterpolation(d,e);
==> [1]:
==>    5x3+7x2+x+9
==> [2]:
==>    x4-10x3-11x2-4x+1
==> [3]:
==>    [1]:
==>       1
==>    [2]:
==>       2
==>    [3]:
==>       3
==>    [4]:
==>       4
polyInterpolation(d,e,2)[1];
==> 5y3+7y2+y+9
list d1 = 5,6;
list e1 = -7,6;
list L = polyInterpolation(d,e);
L = polyInterpolation(d1,e1,1,L); // add points
L;
==> [1]:
==>    10x5-5x4+3x3+3x2-x-11
==> [2]:
==>    x6+2x5-9x4+x3-9x2+7x+7
==> [3]:
==>    [1]:
==>       1
==>    [2]:
==>       2
==>    [3]:
==>       3
==>    [4]:
==>       4
==>    [5]:
==>       5
==>    [6]:
==>       6
ring R = (499,a),x,dp;
list d2 = 2,3a,5;
list e2 = (a-2), (9a2-8a), (a+10);
polyInterpolation(d2,e2);
==> [1]:
==>    x2-3*x+(a)
==> [2]:
==>    x3+(-3a-7)*x2+(21a+10)*x+(-30a)
==> [3]:
==>    [1]:
==>       2
==>    [2]:
==> (3a)
==>    [3]:
==>       5
 | 
 
 |