mvp (version 1.0-8)

horner: Horner's method

Description

Horner's method for multivariate polynomials

Usage

horner(P,v)

Arguments

P

Multivariate polynomial

v

Numeric vector of coefficients

Details

Given a polynomial

$$p(x) = a_0 +a_1+a_2x^2+\cdots + a_nx^n$$

it is possible to express \(p(x)\) in the algebraically equivalent form

$$p(x) = a_0 + x\left(a_1+x\left(a_2+\cdots + x\left(a_{n-1} +xa_n \right)\cdots\right)\right)$$

which is much more efficient for evaluation, as it requires only \(n\) multiplications and \(n\) additions, and this is optimal. But this is not implemented here because it's efficient. It is implemented because it works if \(x\) is itself a (multivariate) polynomial, and that is the second coolest thing ever. The coolest thing ever is the Reduce() function.

See Also

ooom

Examples

Run this code
# NOT RUN {
horner("x",1:5)
horner("x+y",1:3)

w <- as.mvp("x+y^2")
stopifnot(1 + 2*w + 3*w^2 == horner(w,1:3))  # note off-by-one issue

"x+y+x*y" %>% horner(1:3) %>% horner(1:2)
# }

Run the code above in your browser using DataCamp Workspace