stringtranslate.com

El método de Horner.

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

El algoritmo se basa en la regla de Horner , en la que un polinomio se escribe en forma anidada :

Esto permite la evaluación de un polinomio de grado n con solo multiplicaciones y sumas. Esto es óptimo, ya que hay polinomios de grado n que no pueden evaluarse con menos operaciones aritméticas. [2]

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 hace 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 de polinomios 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 recursivamente una nueva secuencia de constantes de la siguiente manera:

Entonces es el valor de .

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

Por lo tanto, al sustituir iterativamente the en la expresión,

Ahora bien, se puede comprobar 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 (que es igual a ) el resto de la división, como lo demuestran los ejemplos siguientes. Si es raíz de , entonces (lo que significa que el resto es ), lo que significa que puedes factorizar como .

Para encontrar los valores consecutivos, comience determinando , que es simplemente igual a . Luego trabajas recursivamente usando la fórmula;

hasta llegar a .

Ejemplos

Evaluar para .

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

 x 0x 3  x 2  x 1  x 0 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 de 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 por es5 .

Pero por el teorema del resto polinomial , sabemos que el resto es . De este modo, .

En este ejemplo, si podemos ver eso , las entradas en la tercera fila. Entonces, la división sintética (que en realidad fue inventada y publicada por Ruffini 10 años antes de la publicación de Horner) es más fácil de usar; se puede demostrar que es equivalente al método de Horner.

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

Dividido por :

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

El cociente es .

Deja y . Divida usando el método de Horner.

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

La tercera fila es la suma de las dos primeras filas, dividida por2 . Cada entrada en la segunda fila es el producto de1 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 requiere como máximo sumas y multiplicaciones, si las potencias se calculan mediante multiplicación repetida y cada monomio se evalúa individualmente. El costo se puede reducir a sumas y multiplicaciones evaluando las potencias de por iteración.

Si los datos numéricos se representan en términos de dígitos (o bits), entonces el algoritmo ingenuo también implica almacenar aproximadamente veces el número de bits de : el polinomio evaluado tiene una magnitud aproximada , y también se debe almacenar a sí mismo. Por el contrario, el método de Horner sólo requiere sumas y multiplicaciones, y sus requisitos de almacenamiento son sólo multiplicados por el número de bits de . Alternativamente, el método de Horner se puede calcular con sumas y multiplicaciones fusionadas . El método de Horner también se puede ampliar para evaluar las primeras derivadas del polinomio con sumas y multiplicaciones. [3]

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. [4] Victor Pan demostró en 1966 que el número de multiplicaciones es mínimo. [5] Sin embargo, cuando se trata de 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 ningún precondicionamiento de la representación, lo que tiene sentido si el polinomio se evalúa sólo una vez. Sin embargo, si se permite el precondicionamiento y el polinomio se va a evaluar muchas veces, entonces son posibles algoritmos más rápidos . Implican una transformación de la representación del polinomio. En general, un polinomio de grado se puede evaluar usando solo n /2 +2 multiplicaciones y sumas. [6]

Evaluación paralela

Una desventaja de la regla de Horner es que todas las operaciones dependen secuencialmente , por lo que no es posible aprovechar el paralelismo a 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 una cuadrícula en una simulación numérica), por lo que no es necesario encontrar el paralelismo dentro de un evaluación de un solo polinomio.

Sin embargo, si se evalúa un polinomio único de orden muy alto, puede resultar útil dividirlo de la siguiente manera:

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

donde las sumatorias 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 vías de la mayoría de ellas. Los compiladores modernos generalmente evalúan los polinomios de esta manera cuando son ventajosos, aunque para cálculos de punto flotante esto requiere habilitar matemáticas reasociativas (inseguras) [ cita necesaria ] .

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

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

Ejemplo

Por ejemplo, para encontrar el producto de dos números (0,15625) y m :

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 (el más a la derecha) en m .
2b. Cuente (hacia la izquierda) el número de posiciones de bits 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 con esa cantidad de bits en el registro que contiene el resultado intermedio.
3. Si se contaron todos los bits distintos de cero, entonces el registro de resultados 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 a uno (o el término está ausente), por lo que esto se reduce a

o de manera equivalente (según sea consistente con el "método" descrito anteriormente)

En matemáticas binarias (base 2), la multiplicación por una potencia de 2 es simplemente una operación de cambio de registro . Así, multiplicar por 2 se calcula en base 2 mediante un desplazamiento aritmético . El factor (2 −1 ) es un desplazamiento aritmético hacia la derecha , un (0) no produce ninguna operación (ya que 2 0 = 1 es el elemento identidad multiplicativo ) y un (2 1 ) da como resultado un desplazamiento aritmético hacia la izquierda. El producto de la multiplicación ahora se puede calcular rápidamente utilizando únicamente operaciones aritméticas de desplazamiento, suma y resta.

El método es particularmente rápido en procesadores que admiten una acumulación de desplazamiento y 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 utiliza la forma de " dígito canónico con signo " (CSD)) y utiliza sólo el 20% del espacio de código. [7]

Otras aplicaciones

El método de Horner se puede utilizar para convertir entre diferentes sistemas numéricos posicionales , en cuyo caso x es la base del sistema numérico y los coeficientes a i son los dígitos de la representación en base x de un número determinado, 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 . [8]

Hallazgo de raíz polinómica

Utilizando 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 usando la suposición .
  2. Utilizando 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 encontrar todos los ceros reales para el polinomio. Si los ceros aproximados no son lo suficientemente precisos, los valores obtenidos se pueden utilizar como estimaciones iniciales para el método de Newton, pero utilizando el polinomio completo en lugar de los polinomios reducidos. [9]

Ejemplo

Búsqueda de raíces polinómicas mediante el método de Horner

Considere el polinomio

que se puede ampliar a

De 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. A continuación se divide por para obtener

que está dibujado en rojo en la figura de la derecha. El método de Newton se utiliza 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 por un círculo rojo. El polinomio de grado 5 ahora se divide por para obtener

que se muestra en amarillo. El cero de este polinomio se encuentra nuevamente en 2 usando el método de Newton y está rodeado por un círculo amarillo. Actualmente se utiliza el método de Horner 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 estimació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 manera [10]

Al finalizar, tenemos

Este cálculo de la diferencia dividida está sujeto a menos error de redondeo que evaluar y por separado, particularmente cuando . Al sustituir en este método se obtiene la derivada de .

Historia

Algoritmo de Qin Jiushao para resolver el resultado de la ecuación polinómica cuadrática: x=840 [11]

El artículo de Horner, titulado "Un nuevo método para resolver ecuaciones numéricas de todos los órdenes, mediante aproximación continua", [12] fue leído ante la Royal Society de Londres, en su reunión del 1 de julio de 1819, con una secuela en 1823. [12 ] El artículo de Horner en la Parte II de Philosophical Transactions of the Royal Society of London de 1819 fue recibido calurosamente y ampliamente por un crítico [ enlace muerto permanente ] en la edición de The Monthly Review: or, Literary Journal de abril de 1820; en comparación, en esta revisión se descarta tajantemente un artículo técnico de Charles Babbage . La secuencia de reseñas 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 [13] demostró que el método del artículo de Horner de 1819 difiere de lo que más tarde se conoció como "método de Horner" y que, en consecuencia, la prioridad para este método debería recaer en Holdred (1820).

A diferencia de sus contemporáneos ingleses, Horner se basó en la literatura continental, en particular la obra de Arbogast . También se sabe que Horner leyó atentamente el libro de álgebra de John Bonneycastle, aunque descuidó el trabajo de Paolo Ruffini .

Aunque a Horner se le atribuye haber hecho que el método fuera accesible y práctico, se conocía mucho antes que Horner. En orden cronológico inverso, ya se sabía que el método de Horner:

Qin Jiushao , en su Shu Shu Jiu Zhang ( Tratado matemático en nueve secciones ; 1247), presenta una cartera de métodos de tipo Horner para resolver ecuaciones polinómicas, que se basó en trabajos anteriores del matemático de la dinastía Song del siglo XI, Jia Xian ; por ejemplo, un método es específicamente adecuado para biquínticos, del cual Qin da un ejemplo, de acuerdo con la costumbre china de entonces de estudiar casos de caso. Yoshio Mikami en Development of Mathematics in China and Japan (Leipzig 1913) escribió:

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

Ulrich Libbrecht concluyó: Es obvio que este procedimiento es una invención china... el método no era conocido en la India . Dijo que Fibonacci probablemente se enteró de esto de los árabes, quienes tal vez tomaron prestado de los chinos. [21] Liu Hui ya analiza la extracción de raíces cuadradas y cúbicas de manera similar 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úbicas mediante una aproximación. método descrito en su libro Jigu Suanjing .

Ver también

Notas

  1. ^ 600 años antes, por el matemático chino Qin Jiushao y 700 años antes, por el matemático persa Sharaf al-Dīn al-Ṭūsī
  2. ^ Pan 1966
  3. ^ Pankiewicz 1968.
  4. ^ Ostrowski 1954.
  5. ^ Pan 1966.
  6. ^ Knuth 1997.
  7. ^ Kripasagar 2008, pag. 62.
  8. ^ Higham 2002, sección 5.4.
  9. ^ Kress 1991, pag. 112.
  10. ^ Fateman y Kahan 2000
  11. ^ Libbrecht 2005, págs. 181-191.
  12. ^ ab Horner 1819.
  13. ^ Fuller 1999, págs. 29–51.
  14. ^ Cajori 1911.
  15. ^ ab O'Connor, John J.; Robertson, Edmund F. , "Método de Horner", Archivo MacTutor de Historia de las Matemáticas , Universidad de St Andrews
  16. ^ Análisis por serie Quantitatum, Fluctiones ac Differentias: Cum Enumeratione Linearum Tertii Ordinis, Londini. Ex Officina Pearsoniana. Año MDCCXI, pág. 10, 4º párrafo.
  17. ^ Artículos recopilados de Newton, edición de 1779, en una nota a pie de página, vol. Yo, pág. 270-271
  18. ^ Berggren 1990, págs. 304–309.
  19. ^ Templo 1986, pag. 142.
  20. ^ Mikami 1913, pag. 77
  21. ^ Libbrecht 2005, pag. 208.

Referencias

enlaces externos