Método de Horner - Horner's method

En matemáticas e informática , el método de Horner (o el esquema de Horner ) es un algoritmo para la evaluación de polinomios . Aunque lleva el nombre de William George Horner , este método es mucho más antiguo, ya que el propio Horner lo atribuyó a Joseph-Louis Lagrange , y se remonta a muchos cientos de años hasta los matemáticos chinos y persas. Después de la introducción de las computadoras, este algoritmo se convirtió en fundamental para la computación eficiente con polinomios.

El algoritmo se basa en la regla de Horner:

Esto permite la evaluación de un polinomio de grado n con solo multiplicaciones y adiciones. Esto es óptimo, ya que hay polinomios de grado n que no se pueden evaluar con menos operaciones aritméticas.

Alternativamente, el método de Horner también se refiere a un método para aproximar las raíces de polinomios, descrito por Horner en 1819. Es una variante del método de Newton-Raphson que se hizo más eficiente para el cálculo manual mediante la aplicación de la regla de Horner. Fue ampliamente utilizado hasta que las computadoras se generalizaron alrededor de 1970.

Evaluación polinomial y división larga.

Dado el polinomio

donde son coeficientes constantes, el problema es evaluar el polinomio en un valor específico de

Para ello, se define de forma recursiva una nueva secuencia de constantes de la siguiente manera:

Entonces es el valor de .

Para ver por qué funciona esto, el polinomio se puede escribir en la forma

Por lo tanto, sustituyendo iterativamente el en la expresión,

Ahora, se puede probar que;

Esta expresión constituye la aplicación práctica de Horner, ya que ofrece una forma muy rápida de determinar el resultado de;

siendo b 0 (que es igual ap (x 0 )) el resto de la división, como se demuestra en los ejemplos siguientes. si x 0 es una raíz de p (x), entonces b 0 = 0 (lo que significa que el resto es 0), lo que significa que puede factorizar p (x) con (xx 0 ).
En cuanto a encontrar los valores b consecutivos, comienza con la determinación de b n , que es simplemente igual a a n . Luego avanza hacia las otras b, usando la fórmula;

hasta llegar a b 0 .

Ejemplos de

Evaluar para

Usamos la división sintética de la siguiente manera:

 x0x3    x2    x1    x0
 3 │   2    −6     2    −1
   │         6     0     6
   └────────────────────────
       2     0     2     5

Las entradas de la tercera fila son la suma de las de las dos primeras. Cada entrada en la segunda fila es el producto del valor x (3 en este ejemplo) con la entrada de la tercera fila inmediatamente a la izquierda. Las entradas de la primera fila son los coeficientes del polinomio a evaluar. Entonces el resto de la división entre es 5.

Pero por el teorema del residuo polinomial , sabemos que el residuo es . Por lo tanto

En este ejemplo, si podemos ver eso , las entradas en la tercera fila. Entonces, la división sintética se basa en el método de Horner.

Como consecuencia del teorema del resto del polinomio, las entradas de la tercera fila son los coeficientes del polinomio de segundo grado, el cociente de una división por . El resto es 5. Esto hace que el método de Horner sea útil para la división larga de polinomios .

Dividir por :

 2 │   1    −6    11    −6
   │         2    −8     6
   └────────────────────────
       1    −4     3     0

El cociente es .

Deja y . Dividir por usando el método de Horner.


  0.5 │ 4  -6   0   3  -5
      │     2  -2  -1   1
└───────────────────────
        2  -2  -1   1  -2


La tercera fila es la suma de las dos primeras filas, dividida por 2. Cada entrada de la segunda fila es el producto de 1 con la entrada de la tercera fila a la izquierda. La respuesta es

Eficiencia

La evaluación utilizando la forma monomial de un polinomio de grado n requiere como máximo n adiciones y ( n 2  +  n ) / 2 multiplicaciones, si las potencias se calculan mediante multiplicación repetida y cada monomio se evalúa individualmente. (Esto se puede reducir a n adiciones y 2 n  - 1 multiplicaciones evaluando las potencias de x de forma iterativa). Si los datos numéricos se representan en términos de dígitos (o bits), entonces el algoritmo ingenuo también implica almacenar aproximadamente 2 n veces el número. de bits de x (el polinomio evaluado tiene una magnitud aproximada x n , y también se debe almacenar x n ). Por el contrario, el método de Horner requiere solo n adiciones yn multiplicaciones, y sus requisitos de almacenamiento son solo n veces el número de bits de x . Alternativamente, el método de Horner se puede calcular con n multiplicaciones-adiciones fusionadas . El método de Horner también se puede extender para evaluar las primeras k derivadas del polinomio con kn adiciones y multiplicaciones.

El método de Horner es óptimo, en el sentido de que cualquier algoritmo para evaluar un polinomio arbitrario debe utilizar al menos la misma cantidad de operaciones. Alexander Ostrowski demostró en 1954 que el número de adiciones necesarias es mínimo. Victor Pan demostró en 1966 que el número de multiplicaciones es mínimo. Sin embargo, cuando x es una matriz, el método de Horner no es óptimo .

Esto supone que el polinomio se evalúa en forma monomial y no se permite el preacondicionamiento de la representación, lo que tiene sentido si el polinomio se evalúa solo una vez. Sin embargo, si se permite el preacondicionamiento y el polinomio se va a evaluar muchas veces, son posibles algoritmos más rápidos . Implican una transformación de la representación del polinomio. En general, un polinomio de grado- n se puede evaluar usando solo n / 2 +2 multiplicaciones yn adiciones.

Evaluación paralela

Una desventaja de la regla de Horner es que todas las operaciones son secuencialmente dependientes , por lo que no es posible aprovechar el paralelismo del nivel de instrucción en las computadoras modernas. En la mayoría de las aplicaciones donde la eficiencia de la evaluación de polinomios es importante, muchos polinomios de bajo orden se evalúan simultáneamente (para cada píxel o polígono en gráficos por computadora, o para cada cuadrado de la cuadrícula en una simulación numérica), por lo que no es necesario encontrar paralelismo dentro de un evaluación polinomial simple.

Sin embargo, si uno está evaluando un solo polinomio de muy alto orden, puede ser útil dividirlo de la siguiente manera:

De manera más general, la suma se puede dividir en k partes:

donde las sumas internas pueden evaluarse utilizando instancias paralelas separadas del método de Horner. Esto requiere un poco más de operaciones que el método básico de Horner, pero permite la ejecución SIMD de k -way de la mayoría de ellas. Los compiladores modernos generalmente evalúan los polinomios de esta manera cuando es ventajoso, aunque para los cálculos de punto flotante esto requiere habilitar las matemáticas reasociativas (inseguras).

Aplicación a la multiplicación y división en coma flotante

El método de Horner es un método rápido y de código eficiente para la multiplicación y división de números binarios en un microcontrolador sin un multiplicador de hardware . Uno de los números binarios a multiplicar se representa como un polinomio trivial, donde (usando la notación anterior) y . Entonces, x ( ox a alguna potencia) se factoriza repetidamente. En este sistema numérico binario (base 2) , entonces las potencias de 2 se factorizan repetidamente.

Ejemplo

Por ejemplo, para encontrar el producto de dos números (0.15625) ym :

Método

Para encontrar el producto de dos números binarios d y m :

1. Un registro que contiene el resultado intermedio se inicializa en d .
2. Comience con el bit distinto de cero menos significativo (más a la derecha) en m .
2b. Cuente (a la izquierda) el número de posiciones de bit hasta el siguiente bit distinto de cero más significativo. Si no hay bits más significativos, tome el valor de la posición actual del bit.
2c. Usando ese valor, realice una operación de desplazamiento a la izquierda por ese número de bits en el registro que contiene el resultado intermedio
3. Si se contaron todos los bits distintos de cero, entonces el registro de resultado intermedio ahora contiene el resultado final. De lo contrario, agregue d al resultado intermedio y continúe en el paso 2 con el siguiente bit más significativo en m .

Derivación

En general, para un número binario con valores de bits ( ) el producto es

En esta etapa del algoritmo, se requiere que los términos con coeficientes de valor cero se eliminen, de modo que solo se cuenten los coeficientes binarios iguales a uno, por lo que el problema de la multiplicación o división por cero no es un problema, a pesar de esta implicación en el ecuación factorizada:

Todos los denominadores son iguales (o el término está ausente), por lo que esto se reduce a

o de manera equivalente (de acuerdo con el "método" descrito anteriormente)

En matemática binaria (base 2), la multiplicación por una potencia de 2 es simplemente una operación de desplazamiento de registro . Por lo tanto, multiplicar por 2 se calcula en base 2 mediante un desplazamiento aritmético . El factor (2 −1 ) es un desplazamiento aritmético a la derecha , a (0) no da como resultado ninguna operación (ya que 2 0 = 1 es el elemento de identidad multiplicativo ) y a (2 1 ) da como resultado un desplazamiento aritmético a la izquierda. El producto de la multiplicación ahora se puede calcular rápidamente usando solo operaciones aritméticas de desplazamiento, suma y resta.

El método es particularmente rápido en procesadores que admiten un cambio-y-acumulación-suma de una sola instrucción. En comparación con una biblioteca de punto flotante C, el método de Horner sacrifica algo de precisión, sin embargo, es nominalmente 13 veces más rápido (16 veces más rápido cuando se usa el formulario de " dígitos canónicos con signo " (CSD)) y usa solo el 20% del espacio de código.

Otras aplicaciones

El método de Horner puede ser utilizado para convertir entre diferentes posicionales sistemas de numeración - en cuyo caso x es la base del sistema de numeración, y los unos i coeficientes son los dígitos de la base- x representación de un número dado - y también se puede utilizar si x es una matriz , en cuyo caso la ganancia en eficiencia computacional es aún mayor. Sin embargo, para tales casos se conocen métodos más rápidos .

Hallazgo de raíz polinomial

Usando el algoritmo de división larga en combinación con el método de Newton , es posible aproximar las raíces reales de un polinomio. El algoritmo funciona de la siguiente manera. Dado un polinomio de grado con ceros, haga una suposición inicial tal que . Ahora repita los siguientes dos pasos:

  1. Usando el método de Newton , encuentre el cero más grande de usar la suposición .
  2. Usando el método de Horner, divida para obtener . Regrese al paso 1 pero use el polinomio y la estimación inicial .

Estos dos pasos se repiten hasta que se encuentran todos los ceros reales para el polinomio. Si los ceros aproximados no son lo suficientemente precisos, los valores obtenidos se pueden usar como conjeturas iniciales para el método de Newton, pero usando el polinomio completo en lugar de los polinomios reducidos.

Ejemplo

Hallazgo de raíces polinomiales usando el método de Horner

Considere el polinomio

que se puede ampliar a

Por lo anterior, sabemos que la raíz más grande de este polinomio es 7, por lo que podemos hacer una estimación inicial de 8. Usando el método de Newton, el primer cero de 7 se encuentra como se muestra en negro en la figura de la derecha. Siguiente se divide por para obtener

que está dibujado en rojo en la figura de la derecha. El método de Newton se usa para encontrar el cero más grande de este polinomio con una estimación inicial de 7. El cero más grande de este polinomio que corresponde al segundo cero más grande del polinomio original se encuentra en 3 y está rodeado en rojo. El polinomio de grado 5 ahora se divide por para obtener

que se muestra en amarillo. El cero para este polinomio se encuentra en 2 nuevamente usando el método de Newton y está marcado con un círculo amarillo. El método de Horner ahora se usa para obtener

que se muestra en verde y tiene un cero en −3. Este polinomio se reduce aún más a

que se muestra en azul y produce un cero de -5. La raíz final del polinomio original se puede encontrar usando el cero final como una suposición inicial para el método de Newton o reduciendo y resolviendo la ecuación lineal. Como puede verse, se encontraron las raíces esperadas de −8, −5, −3, 2, 3 y 7.

Diferencia dividida de un polinomio

El método de Horner se puede modificar para calcular la diferencia dividida Dado el polinomio (como antes)

proceder de la siguiente

Al finalizar, tenemos

Este cálculo de la diferencia dividida está sujeto a menos errores de redondeo que la evaluación y por separado, particularmente cuando . Sustituyendo en este método , se obtiene la derivada de .

Historia

El algoritmo de Qin Jiushao para resolver el resultado de la ecuación polinomial cuadrática : x = 840

El artículo de Horner, titulado "Un nuevo método para resolver ecuaciones numéricas de todos los órdenes, por aproximación continua", se leyó ante la Royal Society de Londres, en su reunión del 1 de julio de 1819, con una secuela en 1823. El artículo de Horner en la Parte II de Philosophical Transactions de la Royal Society de Londres de 1819 fue acogido cálida y ampliamente por un crítico en el número de The Monthly Review: o, Literary Journal de abril de 1820; en comparación, un artículo técnico de Charles Babbage se descarta tajantemente en esta revisión. La secuencia de revisiones en The Monthly Review de septiembre de 1821 concluye que Holdred fue la primera persona en descubrir una solución práctica directa y general de ecuaciones numéricas. Fuller mostró que el método en el artículo de Horner de 1819 difiere de lo que luego se conoció como "método de Horner" y que, en consecuencia, la prioridad para este método debería ir a Holdred (1820).

A diferencia de sus contemporáneos ingleses, Horner se basó en la literatura continental, especialmente en la obra de Arbogast . También se sabe que Horner hizo una lectura atenta del libro de álgebra de John Bonneycastle, aunque descuidó el trabajo de Paolo Ruffini .

Aunque a Horner se le atribuye el mérito de hacer accesible y práctico el método, se conocía mucho antes que Horner. En orden cronológico inverso, el método de Horner ya era conocido por:

Qin Jiushao , en su Shu Shu Jiu Zhang ( Tratado matemático en nueve secciones ; 1247), presenta una carpeta de métodos de tipo Horner para resolver ecuaciones polinomiales, que se basó en trabajos anteriores del matemático de la dinastía Song del siglo XI, Jia Xian ; por ejemplo, un método se adapta específicamente a los bi-quínticos, del cual Qin da un ejemplo, de acuerdo con la costumbre china de entonces de los estudios de casos. Yoshio Mikami en Desarrollo de las matemáticas en China y Japón (Leipzig 1913) escribió:

"... quién puede negar el hecho de que el ilustre proceso de Horner se haya utilizado en China al menos casi seis largos siglos antes que en Europa ... Por supuesto, no pretendemos de ninguna manera atribuir la invención de Horner a un origen chino, pero el paso del tiempo hace que no sea del todo imposible que los europeos pudieran haber conocido el método chino de forma directa o indirecta ".

Ulrich Libbrecht concluyó: Es obvio que este procedimiento es una invención china ... el método no se conocía en la India . Dijo que Fibonacci probablemente se enteró de ello por los árabes, que quizás lo tomaron prestado de los chinos. La extracción de raíces cuadradas y cúbicas a lo largo de líneas similares ya la analiza Liu Hui en relación con los problemas IV.16 y 22 en Jiu Zhang Suan Shu , mientras que Wang Xiaotong en el siglo VII supone que sus lectores pueden resolver cúbicos mediante un método de aproximación descrito en su libro Jigu Suanjing .

Ver también

Notas

Referencias

enlaces externos