Polynomial evaluation

From Wikipedia, the free encyclopedia

In mathematics and computer science, polynomial evaluation refers to computation of the value of a polynomial when its indeterminates are substituted for some values. In other words, evaluating the polynomial at consists of computing See also Polynomial ring § Polynomial evaluation

For evaluating the univariate polynomial the most naive method would use multiplications to compute , use multiplications to compute and so on for a total of multiplications and additions. Using better methods, such as Horner's rule, this can be reduced to multiplications and additions. If some preprocessing is allowed, even more savings are possible.

Background[]

This problem arises frequently in practice. In computational geometry, polynomials are used to compute function approximations using Taylor polynomials. In cryptography and hash tables, polynomials are used to compute k-independent hashing.

In the former case, polynomials are evaluated using floating-point arithmetic, which is not exact. Thus different schemes for the evaluation will, in general, give slightly different answers. In the latter case, the polynomials are usually evaluated in a finite field, in which case the answers are always exact.

General methods[]

Horner's Rule[]

Horner's Method evaluates a polynomial using repeated bracketing:

This method reduces the number of multiplications and additions to just

Horner's method is so common that a computer instruction, Multiply–accumulate operation, has been added to many computer processors, which allow doing the addition and multiplication operations in one combined step.

Multivariate[]

If the polynomial is multivariate, Horner's Rule can be applied recursively over some ordering of the variables. E.g.

can be written as

An efficient version of this approach was described by Carnicer and Gasca.[1]

Evaluation with preprocessing[]

Arbitrary polynomials can be evaluated with fewer operations than Horner's rule requires if we first "preprocess" the coefficients .

An example was first given by Motzkin[2] who noted that

can be written as

where the values are computed in advance based on . Motzkin's method uses just 3 multiplications compared to Horner's 4.

The values for each can be easily computed by expanding and equating the coefficients:

Example[]

To compute the Taylor expansion , we can upscale by a factor 24, apply the above steps, and scale back down. That gives us the three multiplication computation

Improving over the equivalent Horner form (that is ) by 1 multiplication.

Multipoint evaluation[]

Evaluate of a -degree polynomial in multiple points can be done with multiplications by using Horner's method times. Using above preprocessing approach, this can be reduced that by a factor of two, that is, to multiplications. However, using the Fast Fourier Transform it is possible to reduce the time requirement to just .[3]

In the case where the points in which we wish to evaluate the polynomials have some structure, simpler methods exists. For example, Knuth[4] gives a method for tabulating polynomial values of the type

.

Dynamic evaluation[]

In the case where are not known in advance, Kedlaya and Umans[5] gave a data structure for evaluating polynomials over a finite field of size in time per evaluation after some initial preprocessing. This was shown by Larsen[6] to be essentially optimal.

The idea is to transform of degree into a multivariate polynomial , such that and the individual degrees of is at most . Since this is over , the largest value can take (over ) is . Using the Chinese Remainder Theorem it suffices to evaluate modulo different primes with a product at least . Each prime can be taken to be roughly and the number of primes needed, , is roughly the same. Doing this process recursively we can get the primes as small as . That means we can compute and store on all the possible values in time and space. If we take we get , so the time/space requirement is just

Kedlaya and Umans further show how to combine this preprocessing with fast (FFT) multipoint evaluation. This allows optimal algorithms for many important algebraic problems, such as polynomial .

Specific polynomials[]

While general polynomials require operations to evaluate, some polynomials can be computed much faster. For example, the polynomial can be computed using just one multiplication and one addition since

Evaluation of Powers[]

A particularly interesting type of polynomial is powers like . Such polynomials can always be computed in operations. Suppose, for example, that we need to compute ; we could simply start with and multiply by to get . We can then multiply that by itself to get and so on to get and in just four multiplications. Other powers like can similarly be computed efficiently by first computing by 2 multiplications and then multiplying by .

The most efficient way to compute a given power is provided by addition-chain exponentiation. However this requires designing a specific algorithm for each exponent, and the computation needed for designing these algorithms are difficult (NP-complete). So, exponentiation by squaring is generally preferred for effective computations.

Polynomial families[]

Often polynomials show up in a different form than the well known . For polynomials in Chebyshev form we can use Clenshaw algorithm. For polynomials in Bézier form we can use De Casteljau's algorithm, and for B-splines there is De Boor's algorithm.

Hard polynomials[]

The fact that some polynomials can be computed significantly faster than "general polynomials" suggests the question: Can we give an example of a simple polynomial that cannot be computed in time much smaller than its degree? Volker Strassen has shown[7] that the polynomial

cannot be evaluated by with less than multiplications and additions. At least this bound holds if only operations of those types are allowed, giving rise to a so-called "polynomial chain of length ".

The polynomial given by Strassen has very large coefficients, but by probabilistic methods, one can show there must exist even polynomials with coefficients just 0's and 1's such that the evaluation requires at least multiplications.[8]

For other simple polynomials, the complexity is unknown. The polynomial is conjectured to not be computable in time for any . This is supported by the fact, that if it can be computed fast then Integer factorization can be computed in polynomial time, breaking the RSA cryptosystem.[9]

Matrix polynomials[]

Sometimes the computational cost of scalar multiplications (like ) is less than the computational cost of "non scalar" multiplications (like ). The typical example of this is matrices. If is an matrix, a scalar multiplication takes about arithmetic operations, while computing takes about (or using fast matrix multiplication).

Matrix polynomials are important for example for computing the Matrix Exponential.

Paterson and Stockmeyer [10] showed how to compute a degree polynomial using only non scalar multiplications and scalar multiplications. Thus a matrix polynomial of degree n can be evaluated in time. If this is less than that is, faster than a single matrix multiplication with the standard algorithm.

This method works as follows: For a polynomial

let k be the least integer not smaller than The powers are computed with matrix multiplications, and are then computed by repeated multiplication by Now,

,

where for in. This requires just more non-scalar multiplications.

We can write this succinctly using the Kronecker product:

.

See also[]

References[]

  1. ^ Carnicer, J.; Gasca, M. (1990). "Evaluation of Multivariate Polynomials and Their Derivatives". Mathematics of Computation. 54 (189): 231–243. doi:10.2307/2008692.
  2. ^ Motzkin, T. S. (1955). "Evaluation of polynomials and evaluation of rational functions". Bulletin of the American Mathematical Society. 61 (163): 10.
  3. ^ Von Zur Gathen, Joachim; Jürgen, Gerhard (2013). Modern computer algebra. Cambridge University Press. Chapter 10. ISBN 9781139856065.
  4. ^ Knuth, Donald (2005). Art of Computer Programming. Volume 2: Seminumerical Algorithms. Addison-Wesley. ISBN 9780201853926. |volume= has extra text (help)
  5. ^ Kedlaya, Kiran S.; Umans, Christopher (2011). "Fast Polynomial Factorization and Modular Composition". SIAM Journal on Computing. 40 (6): 1767–1802. doi:10.1137/08073408x. hdl:1721.1/71792.
  6. ^ Larsen, K. G. (2012). "Higher Cell Probe Lower Bounds for Evaluating Polynomials". Symposium on Foundations of Computer Science. IEEE. 53: 293–301. doi:10.1109/FOCS.2012.21.
  7. ^ Strassen, Volker (1974). "Polynomials with Rational Coefficients Which are Hard to Compute". SIAM Journal on Computing. 3 (2): 128–149. doi:10.1137/0203010.
  8. ^ Schnorr, C. P. (1979), "On the additive complexity of polynomials and some new lower bounds", Theoretical Computer Science, Springer, 67, pp. 286–297, doi:10.1007/3-540-09118-1_30
  9. ^ Chen, Xi, Neeraj Kayal, and Avi Wigderson. Partial derivatives in arithmetic complexity and beyond. Now Publishers Inc, 2011.
  10. ^ Paterson, Michael S.; Stockmeyer, Larry J. (1973). "On the Number of Nonscalar Multiplications Necessary to Evaluate Polynomials". SIAM Journal on Computing. 2 (1): 60–66. doi:10.1137/0202007.
Retrieved from ""