polyeval#
Purpose#
Evaluates polynomials. Can either be one or more scalar polynomials or a single matrix polynomial.
Format#
- y = polyeval(x, coefs)#
- Parameters:
x (1xK vector or NxN matrix.) – can either represent K separate scalar values at which to evaluate the (scalar) polynomial(s), or it can represent a single NxN matrix.
c ((P+1)xK or (P+1)x1 matrix) – coefficients of polynomials to evaluate. If x is 1xK, then c must be (P+1)xK. If x is NxN, c must be (P+1)x1. That is, if x is a matrix, it can only be evaluated at a single set of coefficients.
- Returns:
y (Kx1 vector or NxN matrix) –
Kx1 vector (if c is (P+1)xK) or NxN matrix (if c is (P+1)x1 and x is NxN):
\[y =( c[1, .]*x^p + c[2, .]*x^{(p-1)} + ... + c[p+1, .] )';\]
Examples#
Scalar example 1#
// Evaluate 2^4 + 2^3 + 2^1 + 2^0
x = 2;
coefs = { 1, 1, 0, 1, 1 };
y = polyeval(x, coefs);
The result is 27. Note that this is the decimal value of the binary number 11011.
Scalar example 2#
// Evaluate 7*2^3 + 2^1 + 2^0
x = 2;
coefs = { 7, 0, 1, 1 };
y = polyeval(x, coefs);
The result is 59.
Matrix example 1#
// Evaluate A*A*A + 2*A
A = { 2 6,
4 8 };
coefs = { 1, 0, 2, 0 };
A_3 = polyeval(A, coefs);
The above code will set A_3 equal to:
300 660
440 960
Matrix example 2#
// Evaluate A*A*A*A
A = { 1.2 3.1,
1.7 0.8 };
coefs = 1|zeros(4,1);
y = polyeval(A, coefs);
You can raise a matrix to the n’th power with the command:
A_n = polyeval(A, 1|zeros(n, 1));
(e.g: A*A*A*A*…*A).
Remarks#
In both the scalar and the matrix case, Horner’s rule is used to do the evaluation. In the scalar case, the function func:recsercp is called (this implements an elaboration of Horner’s rule).
Source#
poly.src
See also
Functions polymake()
, polychar()
, polymult()
, polyroot()