Está en la página 1de 2

Algoritmo de Horner

En el campo matemático del análisis numérico, el Algoritmo de Horner, llamado así por
William George Horner, es un algoritmo para evaluar de forma eficiente funciones polinómicas
de una forma monomial.

Dado el polinomio

{\displaystyle p(x)=a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}+\cdots +a_{n}x^{n},} {\displaystyle


p(x)=a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}+\cdots +a_{n}x^{n},}

donde {\displaystyle a_{0},\ldots ,a_{n}} {\displaystyle a_{0},\ldots ,a_{n}} son números reales,
queremos evaluar el polinomio a un valor específico de {\displaystyle x\,\!} x\,\!, digamos
{\displaystyle x_{0}\,\!} {\displaystyle x_{0}\,\!}.

Para llevar a cabo el procedimiento, definimos una nueva secuencia de constantes como se
muestra a continuación:

{\displaystyle b_{n}\,\!} {\displaystyle b_{n}\,\!} {\displaystyle :=\,\!} {\displaystyle :=\,\!}


{\displaystyle a_{n}\,\!} {\displaystyle a_{n}\,\!}

{\displaystyle b_{n-1}\,\!} {\displaystyle b_{n-1}\,\!} {\displaystyle :=\,\!} {\displaystyle


:=\,\!} {\displaystyle a_{n-1}+b_{n}x_{0}\,\!} {\displaystyle a_{n-1}+b_{n}x_{0}\,\!}

{\displaystyle \vdots } \vdots

{\displaystyle b_{0}\,\!} {\displaystyle b_{0}\,\!} {\displaystyle :=\,\!} {\displaystyle :=\,\!}


{\displaystyle a_{0}+b_{1}x_{0}\,\!} {\displaystyle a_{0}+b_{1}x_{0}\,\!}

Entonces {\displaystyle b_{0}\,\!} {\displaystyle b_{0}\,\!} es el valor de {\displaystyle


p(x_{0})\,\!} {\displaystyle p(x_{0})\,\!}.

Para ver como funciona esto, nótese que el polinomio puede escribirse de la forma

{\displaystyle p(x)=a_{0}+x(a_{1}+x(a_{2}+\cdots x(a_{n-1}+a_{n}x)\cdots ))} {\displaystyle


p(x)=a_{0}+x(a_{1}+x(a_{2}+\cdots x(a_{n-1}+a_{n}x)\cdots ))}

Después, sustituyendo iterativamente la {\displaystyle b_{i}} {\displaystyle b_{i}} en la


expresión,

{\displaystyle p(x_{0})\,\!} {\displaystyle p(x_{0})\,\!} {\displaystyle =\,\!} {\displaystyle =\,\!}


{\displaystyle a_{0}+x_{0}(a_{1}+x_{0}(a_{2}+\cdots x_{0}(a_{n-1}+b_{n}x_{0})\dots ))}
{\displaystyle a_{0}+x_{0}(a_{1}+x_{0}(a_{2}+\cdots x_{0}(a_{n-1}+b_{n}x_{0})\dots ))}
{\displaystyle =\,\!} {\displaystyle =\,\!} {\displaystyle a_{0}+x_{0}(a_{1}+x_{0}(a_{2}+\cdots
x_{0}(b_{n-1})\dots ))} {\displaystyle a_{0}+x_{0}(a_{1}+x_{0}(a_{2}+\cdots x_{0}(b_{n-1})\dots
))}

{\displaystyle \vdots } \vdots

{\displaystyle =\,\!} {\displaystyle =\,\!} {\displaystyle a_{0}+x_{0}(b_{1})\,\!} {\displaystyle


a_{0}+x_{0}(b_{1})\,\!}

{\displaystyle =\,\!} {\displaystyle =\,\!} {\displaystyle b_{0}\,\!} {\displaystyle b_{0}\,\!}

Índice

1 Aplicación

2 Eficiencia

3 Historia

4 Véase también

5 Referencias

Aplicación

El algoritmo de Horner se usa a menudo para convertir entre distintos sistemas numéricos
posicionales — en cuyo caso x es la base del sistema numérico, y los coeficientes ai son los
dígitos de la representación del número dado en la base x — y puede usarse también si x es
una matriz, en cuyo caso la carga computacional se reduce aún más.

Eficiencia

La evaluación usando la forma monomial del polinomio de grado-n requiere al menos n sumas
y (n2+n)/2 multiplicaciones, si las potencias se calculan mediante la repetición de
multiplicaciones. El algoritmo de Horner sólo requiere n sumas y n multiplicaciones. (Minimizar
el número de multiplicaciones es lo más deseable porque necesitan mucha carga
computacional y son inestables comparadas con la suma).

Se han demostrado que el algoritmo de Horner es óptimo, de modo que cualquier algoritmo
que se use para evaluar un polinomio requerirá como mínimo el mismo número de
operaciones. El hecho de que el número de operaciones requeridas es mínimo fue demostrado
por Alexander Ostrowski en 1954, y que el número de multiplicaciones es mínimo por Victor
Pan en 1966. Cuando x es una matriz, el algoritmo de Horner no es óptimo.

Historia

También podría gustarte