Die Methode von Horner

In der Mathematik ist die Methode von Horner (auch bekannt als Schema von Horner im Vereinigten Königreich oder die Regierung von Horner in den Vereinigten Staaten) irgendein zwei Dinge: (i) ein Algorithmus, um Polynome zu berechnen, der im Umwandeln der Monom-Form in eine rechenbetont effiziente Form besteht; oder (ii) eine Methode, für den Wurzeln eines Polynoms näher zu kommen. Der Letztere ist auch bekannt als die Methode von Ruffini-Horner.

Diese Methoden werden nach dem britischen Mathematiker William George Horner genannt. Es wird jetzt gegründet, dass beide Methoden vor ihm bekannt waren.

Beschreibung des Algorithmus

In Anbetracht des Polynoms

:

wo reelle Zahlen sind, möchten wir das Polynom an einem spezifischen Wert von x bewerten, x sagen.

Um das zu vollbringen, definieren wir eine neue Folge von Konstanten wie folgt:

:

\begin {richten }\aus

b_n &: = a_n \\

b_ {n-1} &: = a_ {n-1} + b_n x_0 \\

& {}\\\\vdots \\

b_0 &: = a_0 + b_1 x_0.

\end {richten }\aus

</Mathematik>

Dann ist b der Wert von p (x).

Um zu sehen, warum das arbeitet, bemerken Sie, dass das Polynom in der Form geschrieben werden kann

:

So, durch das wiederholende Ersetzen in den Ausdruck,

: \begin {richten }\aus

p (x_0) & = a_0 + x_0 (a_1 + x_0 (a_2 + \cdots + x_0 (a_ {n-1} + b_n x_0) \cdots)) \\

& = a_0 + x_0 (a_1 + x_0 (a_2 + \cdots + x_0 (b_ {n-1}) \cdots)) \\

& {} \\\vdots \\

& = a_0 + x_0 (b_1) \\

& = b_0.

\end {richten }\aus</Mathematik>

Beispiele

Bewerten Sie

: dafür.

Wir verwenden synthetische Abteilung wie folgt:

x  x ³ x ² x ¹ x

3  2 6 2 1

 6 0 6



2 0 2 5

Die Einträge in der dritten Reihe sind die Summe von denjenigen in den ersten zwei. Jeder Zugang in der zweiten Reihe ist das Produkt des X-Werts (3 in diesem Beispiel) mit dem Zugang der dritten Reihe sofort nach links. Die Einträge in der ersten Reihe sind die Koeffizienten des zu bewertenden Polynoms. Dann ist der Rest auf der Abteilung dadurch 5.

Aber durch den Rest-Lehrsatz wissen wir, dass der Rest ist. So

In diesem Beispiel, wenn wir dass, die Einträge in der dritten Reihe sehen können. Also, synthetische Abteilung basiert auf der Methode von Horner.

Demzufolge des polynomischen Rest-Lehrsatzes sind die Einträge in der dritten Reihe die Koeffizienten des zweiten Grades Polynoms, der Quotient auf der Abteilung dadurch.

Der Rest ist 5. Das macht die Methode von Horner nützlich für die polynomische lange Abteilung.

Teilen Sie sich durch:

2  1 - 6 11 - 6

 2 - 8 6



1 - 4 3 0

Der Quotient ist.

Lassen Sie und. Teilen Sie sich, indem Sie die Methode von Horner verwenden.

2  4 - 6 0 3 -5



1  2 - 2 - 1  1

 



2 - 2 - 1 1 -4

Die dritte Reihe ist die Summe der ersten zwei Reihen, die durch 2 geteilt sind. Jeder Zugang in der zweiten Reihe ist das Produkt 1 mit dem Zugang der dritten Reihe nach links. Die Antwort ist

:

Das Schwimmen der Punkt-Multiplikation und Abteilung

Die Methode von Horner ist eine schnelle, codeeffiziente Methode für die Multiplikation und Abteilung von Binärzahlen auf einem Mikrokontrolleur ohne Hardware-Vermehrer. Eine der zu multiplizierenden Binärzahlen wird als ein triviales Polynom, wo, (das Verwenden der obengenannten Notation) vertreten: = 1, und x = 2. Dann, x (oder x zu etwas Macht) wird wiederholt ausgeklammert. In diesem binären Ziffer-System (stützen 2), x = 2, so werden Mächte 2 wiederholt ausgeklammert.

Beispiel

Zum Beispiel, um das Produkt von zwei Zahlen, (0.15625) und M zu finden:

:

\begin {richten }\aus

(0.15625) M & = (0.00101_b) M = (2^ {-3} + 2^ {-5}) M = (2^ {-3}) M + (2^ {-5}) M \\[4pt]

& = 2^ {-3} (M + (2^ {-2}) m) = 2^ {-3} (M + 2^ {-2} (m)).

\end {richten }\aus</Mathematik>

Methode

Das Produkt von zwei Binärzahlen, "d" und "m" zu finden.

  • 1. Ein Register, das das Zwischenergebnis hält, wird zu (d) initialisiert.
  • 2. Beginnen Sie in (m) mit dem am wenigsten bedeutenden (niedrigstwertigen) Nichtnullbit,
  • 2b. Graf (nach links) die Zahl von Bit-Positionen zum folgenden bedeutendsten Nichtnullbit. Wenn es nicht mehr - bedeutende Bit gibt, dann den Wert der aktuellen Bit-Position nimmt.
  • 2c. Mit diesem Wert, führen Sie eine Operation der richtigen Verschiebung durch diese Zahl von Bit auf dem Register durch, das das Zwischenergebnis hält
  • 3. Wenn alle Nichtnullbit aufgezählt wurden, dann hält das Zwischenergebnis-Register jetzt das Endresultat. Tragen Sie sonst (d) zum Zwischenergebnis bei, und machen Sie im Schritt #2 mit dem folgenden bedeutendsten Bit in (m) weiter.

Abstammung

Im Allgemeinen, für eine Binärzahl mit Bit-Werten: das Produkt ist:

:

In dieser Bühne im Algorithmus ist es erforderlich, dass Begriffe mit nullgeschätzten Koeffizienten fallen gelassen sind, so dass nur binäre einem gleiche Koeffizienten so aufgezählt wird, ist das Problem der Multiplikation oder Abteilung durch die Null nicht ein Problem trotz dieser Implikation in der factored Gleichung:

:

Die Nenner alle kommen einem gleich (oder der Begriff fehlt), so nimmt das ab zu:

:

oder gleichwertig (als im Einklang stehend mit der "Methode", die oben beschrieben ist):

:

Im binären (stützen 2), Mathematik ist die Multiplikation durch eine Macht 2 bloß eine Register-Verschiebungsoperation. So wird das Multiplizieren mit 2 in der Basis 2 durch eine arithmetische Verschiebung berechnet. Der Faktor (2) ist eine richtige arithmetische Verschiebung, (0) läuft auf keine Operation hinaus (da 2 = 1, das multiplicative Identitätselement ist), und (2) auf eine linke arithmetische Verschiebung hinausläuft.

Das Multiplikationsprodukt kann jetzt mit nur arithmetische Verschiebungsoperationen, Hinzufügung und Subtraktion schnell berechnet werden.

Die Methode ist auf Verarbeitern besonders schnell, die shift-and-addition-accumulate der einzelnen Instruktion unterstützen. Im Vergleich zu einer C Schwimmpunkt-Bibliothek opfert die Methode von Horner etwas Genauigkeit, jedoch ist es nominell 13mal schneller (16mal schneller, wenn die "kanonische unterzeichnete Ziffer" (CSD) Form verwendet wird), und nur 20 % des Coderaums verwendet.

Polynomische Wurzelentdeckung

Mit der Methode von Horner in der Kombination mit der Methode von Newton ist es möglich, den echten Wurzeln eines Polynoms näher zu kommen. Der Algorithmus arbeitet wie folgt. In Anbetracht eines Polynoms des Grads mit Nullen

1. Das Verwenden der Methode des Newtons, finden Sie die größte Null, die Annahme zu verwenden.

2. Das Verwenden der Methode von Horner, teilen Sie aus, um vorzuherrschen. Kehren Sie zum Schritt 1 zurück, aber verwenden Sie das Polynom und die anfängliche Annahme.

Diese zwei Schritte werden wiederholt, bis alle echten Nullen für das Polynom gefunden werden. Wenn die näher gekommenen Nullen nicht genau genug sind, können die erhaltenen Werte als anfängliche Annahmen für die Methode von Newton, aber das Verwenden des vollen Polynoms aber nicht der reduzierten Polynome verwendet werden.

Beispiel

Denken Sie das Polynom,

:

p_6 (x) = (x-3) (x+3) (x+5) (x+8) (x-2) (x-7)

</Mathematik>

der zu ausgebreitet werden kann

:

p_6 (x) = x^6 + 4x^5 - 72x^4 - 214x^3 + 1127x^2 + 1602x-5040.

</Mathematik>

Vom obengenannten wissen wir, dass die größte Wurzel dieses Polynoms 7 ist, so sind wir im Stande, eine anfängliche Annahme 8 zu machen. Mit der Methode des Newtons wird die erste Null 7, wie gezeigt, im Schwarzen in der Zahl nach rechts gefunden. Als nächstes wird geteilt durch, </br> vorzuherrschen

:

p_5 (x) = x^5 + 11x^4 + 5x^3 - 179x^2 - 126x + 720 \,

</Mathematik>

der im Rot in der Zahl nach rechts gezogen wird. Die Methode des Newtons wird verwendet, um die größte Null dieses Polynoms mit einer anfänglichen Annahme 7 zu finden. Die größte Null dieses Polynoms, das der zweitgrößten Null des ursprünglichen Polynoms entspricht, wird an 3 gefunden und wird im Rot umkreist. Der Grad 5 Polynom wird jetzt geteilt durch, </br> vorzuherrschen

:

p_4 (x) = x^4 + 14x^3 + 47x^2 - 38x - 240 \,

</Mathematik>

der im Gelb gezeigt wird. Die Null für dieses Polynom wird an 2 wieder Verwenden-Methode von Newton gefunden und wird im Gelb umkreist. Die Methode von Horner wird jetzt verwendet, um, </br> vorzuherrschen

:

p_3 (x) = x^3 + 16x^2 + 79x + 120 \,

</Mathematik>

der im Grün gezeigt und gefunden wird, eine Null an &minus;3 zu haben. Dieses Polynom wird weiter auf reduziert

:

p_2 (x) = x^2 + 13x + 40 \,

</Mathematik>

der im Blau gezeigt wird und eine Null &minus;5 nachgibt. Die Endwurzel des ursprünglichen Polynoms kann entweder durch das Verwenden der Endnull als eine anfängliche Annahme für die Methode von Newton, oder durch das Reduzieren und das Lösen der geradlinigen Gleichung gefunden werden. Wie gesehen werden kann, wurden die erwarteten Wurzeln &minus;8, &minus;5, &minus;3, 2, 3, und 7 gefunden.

Oktave-Durchführung

Der folgende Oktave-Code wurde im Beispiel oben verwendet, um die Methode von Horner durchzuführen.

Funktion [y b] = horner (a, x)

% Geben Sie ein des polynomischen mitwirkenden Vektoren, x der Wert zu sein, der daran zu bewerten ist.

% Die Produktion y ist das bewertete Polynom und b der geteilte mitwirkende Vektor.

b (1) = (1);

weil ich = 2:length (ein)

b (i) = (i) +x*b (i-1);

Ende

y = b (Länge (a));

b = b (1:length (b)-1);

Ende

</Quelle>

Pythonschlange-Durchführung

Der folgende Pythonschlange-Code führt die Methode von Horner durch.

def horner (x, *args):

" ""Eine Funktion, die das Schema von Horner durchführt, für einen zu bewerten

Polynom von Koeffizienten *args in x. """

resultieren Sie = 0

für den Koeffizienten in args:

resultieren Sie = Ergebnis * x + Koeffizient

geben Sie Ergebnis zurück

</Quelle>

Anwendung

Die Methode von Horner kann verwendet werden, um sich zwischen verschiedenen Stellungsziffer-Systemen umzuwandeln - in welchem Fall x die Basis des Zahl-Systems, und ist, sind Koeffizienten die Ziffern der Grund-X-Darstellung einer gegebenen Zahl - und können auch verwendet werden, wenn x eine Matrix ist, in welchem Fall der Gewinn in der rechenbetonten Leistungsfähigkeit noch größer ist. Tatsächlich, wenn x eine Matrix ist, ist weitere Beschleunigung möglich, der die Struktur der Matrixmultiplikation ausnutzt, und nur statt n multipliziert, sind (auf Kosten des Verlangens von mehr Lagerung) das Verwenden der 1973-Methode von Paterson und Stockmeyer erforderlich.

Leistungsfähigkeit

Die Einschätzung mit der Monom-Form eines Polynoms des Grads-n verlangt bei den meisten n Hinzufügungen und (n + n)/2 Multiplikationen, wenn Mächte durch die wiederholte Multiplikation berechnet werden und jedes Monom individuell bewertet wird. (Das kann auf n Hinzufügungen und 2n &minus reduziert werden; 1 Multiplikationen durch das Auswerten der Mächte von x wiederholend.), Wenn numerische Daten in Bezug auf Ziffern (oder Bit) vertreten werden, dann hat der naive Algorithmus auch Speicherung ungefähr 2n Zeiten die Zahl von Bit von x zur Folge (hat das bewertete Polynom ungefähren Umfang x, und muss man auch x selbst versorgen). Im Vergleich verlangt die Methode von Horner nur n Hinzufügungen und n Multiplikationen, und seine Lagerungsvoraussetzungen sind nur n Zeiten die Zahl von Bit von x. Wechselweise kann die Methode von Horner mit verschmolzenem n geschätzt werden multiplizieren - trägt bei. Die Methode von Horner kann auch erweitert werden, um die ersten k Ableitungen des Polynoms mit kn Hinzufügungen und Multiplikationen zu bewerten.

Die Methode von Horner ist im Sinn optimal, dass jeder Algorithmus, um ein willkürliches Polynom zu bewerten, mindestens als viele Operationen verwenden muss. Alexander Ostrowski hat 1954 bewiesen, dass die Zahl von erforderlichen Hinzufügungen minimal ist. Victor Pan hat 1966 bewiesen, dass die Zahl von Multiplikationen minimal ist. Jedoch, wenn x eine Matrix ist, ist die Methode von Horner nicht optimal.

Das nimmt an, dass das Polynom in der Monom-Form bewertet wird und keinem Vorbedingen der Darstellung erlaubt wird, der Sinn hat, wenn das Polynom nur einmal bewertet wird. Jedoch, wenn dem Vorbedingen erlaubt wird und das Polynom oft bewertet werden soll, dann sind schnellere Algorithmen möglich. Sie schließen eine Transformation der Darstellung des Polynoms ein. Im Allgemeinen kann ein Polynom des Grads-n mit nur Multiplikationen und n Hinzufügungen bewertet werden (sieh Knuth: Die Kunst der Computerprogrammierung, des Vol.2).

Geschichte

Gemäß Augustus De Morgan hat Horner seine Methode bekannt in einer Zeitung betitelt "Eine neue Methode gemacht, numerische Gleichungen aller Ordnungen durch die dauernde Annäherung zu lösen", die am 1. Juli 1819 von Davies Gilbert vor der Königlichen Gesellschaft Londons gelesen wurde. Dieses Papier wurde nachher in demselben Jahr in den "Philosophischen Transaktionen" veröffentlicht.

Die Befürwortung von De Morgan für den Vorrang von Horner in der Entdeckung hat "zur Methode von Horner" geführt so genannt in Lehrbüchern zu sein. Jedoch war diese Methode lange vorher bekannt. In der zeitlichen Rückreihenfolge war die Methode von Horner bereits bekannt:

  • Paolo Ruffini 1809 (sieh die Regierung von Ruffini)
  • Isaac Newton 1669
  • der chinesische Mathematiker Zhu Shijie im 14. Jahrhundert
  • der chinesische Mathematiker Qin Jiushao in seiner Mathematischen Abhandlung in Neun Abteilungen im 13. Jahrhundert
  • der persische Mathematiker Sharaf al-Dīn al-Tūsī im 12. Jahrhundert
  • der chinesische Mathematiker Jia Xian im 11. Jahrhundert (Lieddynastie)
  • Die Neun Kapitel über die Mathematische Kunst, eine chinesische Arbeit der Han-Dynastie (202 v. Chr. - 220 n.Chr.) editiert von Liu Hui (fl. Das 3. Jahrhundert).

Siehe auch

  • Algorithmus von Clenshaw, um Polynome in Tschebyscheff zu bewerten, bildet
  • Der Algorithmus von De Boor, um Fugenbretter im B-Fugenbrett zu bewerten, bildet
  • Der Algorithmus von De Casteljau, um Polynome in Bézier zu bewerten, bildet
  • Das Schema von Estrin, parallelization auf modernen Computerarchitekturen zu erleichtern
  • Die Methode von Lill, Wurzeln grafisch näher zu kommen
  • Die Regierung von Ruffini, ein Polynom durch ein Binom der Form x  r zu teilen

Bibliografie

Links


Hoosier / Hapworth 16, 1924
Impressum & Datenschutz