Finden Sie den Wert des Polynoms mithilfe der Horner-Regel in C++
- Ermitteln Sie den Wert des Polynoms mithilfe der Horner-Regel in C++, indem Sie die Schleife rückwärts durchlaufen
- Ermitteln Sie den Wert des Polynoms mithilfe der Horner-Regel in C++, indem Sie die Vorwärtsschleife durchlaufen
- Verwenden Sie die Rekursion, um den Wert des Polynoms mithilfe der Horner-Regel in C++ zu finden
- Abschluss
Die Horner-Regel ist ein effizienter Algorithmus zur Berechnung des Werts eines Polynoms.
Betrachten Sie das Polynom p(x) = 6x^3 - 2x^2 + 7x + 5
bei x = 4
. Um ihn mit der Horner-Regel in C++ zu berechnen, wird der erste Koeffizient, 6, mit dem Wert bei x multipliziert, der 4 ist, und das Produkt der beiden, 24, wird zum nächsten Koeffizienten -2 addiert.
Das Ergebnis wird mit 4 multipliziert und zum nächsten Koeffizienten addiert.
Dieser Vorgang wird für die Anzahl der Koeffizienten in der Gleichung wiederholt. Das verbleibende Endprodukt ist der Wert des Polynoms.
In diesem Artikel wird erläutert, wie Sie den Wert eines Polynoms mithilfe der Horner-Regel in C++ finden, indem Sie die obigen Regeln in Computercode konvertieren.
Betrachten wir ein Polynom:
Wenn x = 4 ist, ist der Wert des Polynoms 385.
Ermitteln Sie den Wert des Polynoms mithilfe der Horner-Regel in C++, indem Sie die Schleife rückwärts durchlaufen
Schauen wir uns das Programm an, das den Wert eines Polynoms mithilfe der Horner-Regel in C++ durch Rückwärtsschleifen findet.
-
Die erste Codezeile importiert das Bibliothekspaket
iostream
; in der zweiten Zeile ist der Namensraum alsstd
definiert. -
Eine Methode
int Horner()
wird mit drei Parametern erstellt – ein Zeigerarraya
, das die Liste der Koeffizienten übergibt, eine ganzzahlige Variablen
, die den Grad des Polynoms speichert, und eine weitere ganzzahlige Variablex
die den Wert des Polynoms beix
speichert.int Horner(int* a, int n, int x)
-
Hier wird erklärt, wie man das Produkt von Polynomen addiert. Es wird eine Integer-Variable
Ergebnis
erstellt, die mit dem letzten Element des Arraysa[n]
initialisiert wird.int result = a[n];
Hinweis: Verwechseln Sie es nicht mit der Größe des Arrays; es initialisiert die Variable
result
mit dem Element im Arraya
an der n-ten Position. -
Es wird eine
for
-Schleife erstellt, die die Schleife vom letzten Element des Arraysa
bis zum 0. Index umkehrt. Der Wert der VariableErgebnis
wird bei jedem Schleifendurchlauf aktualisiert.for (int i = n - 1; i >= 0; --i)
In der ersten Iteration wird der Wert von
a[n]
mitx
multipliziert und dann zum vorherigen Element im Array addiert –a[n-1]
. Bei einem Array –{2,3,4}
nimmt die Schleife das letzte Elementa[n]
, also 4, multipliziert es mitx
und fügt es dann zumn-1
-Element hinzu des Arrays, das ist 3.Aus diesem Grund müssen die Koeffizienten beim Initialisieren in der Funktion
main
umgekehrt werden. Der Wert vonresult
wird am Ende der Methode zurückgegeben. -
Innerhalb der Funktion
main
wird ein Array erstellt, um es an den ersten Parameter der MethodeHorner
zu übergeben. Beachten Sie, dass der Wert der Koeffizienten innerhalb des Arrays umgekehrt wird, da die Schleife rückwärts iteriert. -
Eine Integer-Variable
sol
wird erstellt, um das Ergebnis zu speichern, das von der Methode namensHorner
zurückgegeben wird.Im ersten Parameter wird das zu erstellende Array übergeben. Der zweite Parameter übergibt den Grad der Polynome in der Gleichung, 3, und der dritte Parameterwert bei
x
wird übergeben.int sol = Horner(arr, 3, 4);
Code:
#include <iostream>
using namespace std;
int Horner(int* a, int n, int x) {
int result = a[n];
for (int i = n - 1; i >= 0; --i) result = result * x + a[i];
return result;
}
int main() {
int arr[4] = {5, 7, -2, 6};
int sol = Horner(arr, 3, 4);
cout << sol;
}
Ausgabe (Rückwärtsschleifen der Horner-Regel in C++):
385
Ermitteln Sie den Wert des Polynoms mithilfe der Horner-Regel in C++, indem Sie die Vorwärtsschleife durchlaufen
Wenn wir die Schleife im Gegensatz zum letzten Beispiel vorwärts laufen lassen müssen, können wir den Zeiger des Arrays dereferenzieren, um sein erstes Element zu erhalten, und die Schleife vorwärts laufen lassen, anstatt sie umzukehren. Es ist eine weitere Möglichkeit, Schleifen zu verwenden, um die Horner-Regel in C++ zu implementieren.
Lassen Sie uns verstehen, was der Code tut:
-
Die erste Codezeile importiert das Bibliothekspaket
iostream
. -
Ähnlich wie im vorherigen Beispiel wird eine Methode
Horner
mit drei Parametern erstellt.int Horner(int a[], int n, int x)
-
Durch Dereferenzieren des Pointers wird eine Variable
result
erzeugt und mit dem ersten Element des Arrays initialisiert. Der Zeiger*a
entspricht dem Schreiben vonarr[0]
.int result = *a;
Im vorherigen Beispiel benötigte die Methode
Horner
eine an ihr Array angehängte Grössenkomponente:int result = a[n];
um auf das letzte Element zu zeigen. Hier wird nur dereferenziert. -
Es wird eine
for
-Schleife erstellt, die von 1 bisn
iteriert. Bei jeder Iteration wird der Wert der VariableErgebnis
mit dem Wert des Polynoms aktualisiert.Der Wert von
result
wird am Ende der Methode zurückgegeben.for (int i = 1; i < n; i++) result = result * x + a[i]; return result;
-
Innerhalb der Funktion
main
wird ein Array mit dem Wert der Koeffizienten erstellt. Das hier verwendete Polynom lautet:$$
p(x) = 5x^4 + 3x^3 - 2x^2 + 4x - 6; x=-2
$$Das Array wird erstellt, indem die Koeffizienten der Polynome genommen werden -
int arr[] = {5,3,-2,4,-6};
. -
Die Variable
n
enthält den Grad des Polynoms. Der Wert vonn
errechnet sich aus:n = Größe des Arrays -1
.int n = (*(&arr + 1) - arr) - 1; // n = size of the array - 1;
-
Die Methode
Horner
wird aufgerufen, indem das Array, der Wert vonn
und der Wert vonx
übergeben werden. Das zurückgegebene Ergebnis wird in einer neuen Integer-Variablen gespeichert und gedruckt.int sol = Horner(arr, n, -2); std::cout << "Value of polynomial = " << sol;
Code:
#include <iostream>
int Horner(int a[], int n, int x) {
int result = *a;
for (int i = 1; i < n; i++) result = result * x + a[i];
return result;
}
int main() {
int arr[] = {5, 3, -2, 4, -6};
int n = (*(&arr + 1) - arr) - 1;
int sol = Horner(arr, n, -2);
std::cout << "Value of polynomial = " << sol;
}
Ausgabe (Vorwärtsschleifen-Horner-Regel in C++):
Value of polynomial = -20
Verwenden Sie die Rekursion, um den Wert des Polynoms mithilfe der Horner-Regel in C++ zu finden
Bisher haben wir gelernt, wie man den Wert eines Polynoms mit der Horner-Regel in C++ findet. Dies wurde durch Iterieren von Schleifen und Aktualisieren der Zählung unter Verwendung einer Akkumulatorvariablen durchgeführt.
In diesem Beispiel wird der Wert des Polynoms durch Rekursion berechnet. Schauen wir uns den Code an.
-
Die erste Codezeile importiert das Paket
iostream
und definiert den Namespace alsstd
.#include <iostream> using namespace std;
-
Eine Methode
Horner
wird erstellt, die drei Parameter hat – einen ganzzahligen Zeiger*pi
, eine weitere ganzzahlige VariableGrad
, die der Grad des Polynoms ist (im vorherigen Beispiel alsn
verwendet), undx
für die Wertübergabe beix
.int Horner(int* pi, int degree, int x)
-
Das Merkmal der rekursiven Funktion besteht darin, sich selbst wie eine Schleife aufzurufen, bis eine Bedingung erfüllt ist, was die Zeitkomplexität reduziert. Für die Bedingung gibt eine
if
-Anweisung den Wert vonpi
am 0. Index nur dann zurück, wenn der Gradwert auf 0 gesunken ist.if (degree == 0) { return pi[0]; }
-
Um Rekursion anzuwenden, wird die Methode
Horner
erneut aufgerufen, anstatt einen Wert zurückzugeben.return Horner(pi, degree - 1, x) * x + pi[degree];
Die obige Syntax behält die
Horner
-Methode bei, sich selbst wiederholt für den Grad des Polynoms aufzurufen. In einer Gleichung ist der Grad des Polynoms sein höchster Exponent.Betrachtet man die im letzten Beispiel verwendete Gleichung:
$$ p(x) = 5x^4 + 3x^3 - 2x^2 + 4x - 6; x=-2 $$Der Grad des Polynoms ist 4.
Dies bedeutet, dass die Rekursion sich selbst für
n+1
= 5 Mal (Größe des Arrays) iteriert. Bei jeder Iteration ruft sich die Methode selbst auf, bis der Gradwert auf0
reduziert ist.Sobald es
0
erreicht, nimmt die Rekursion das Element*p[0]
und übergibt es an den vorherigen Methodenaufruf.return Horner(pi, degree - 1, x) * x + pi[degree];
Es ist dasselbe, als würde man einen Umschlag in einem Umschlag öffnen, bis der letzte Umschlag erreicht ist und dann wieder zurückgefaltet werden. Der Wert beim letzten Methodenaufruf wird an den vorherigen Methodenaufruf übergeben, und die Berechnungen werden ausgeführt.
-
Innerhalb der Funktion
main
wird ein Integer-Array erstellt, um die Koeffizienten der Gleichung an die MethodeHorner
zu übergeben. Dann wird der Wert des Parameters an die Methode übergeben.int sol = Horner(arr, 4, -2);
Das Array ist
arr
, Grad -4
und Wert beix
, was-2
ist. -
Zuletzt wird das zurückgegebene Ergebnis in einer Integer-Variablen
sol
gespeichert und ausgedruckt.
Code:
#include <iostream>
using namespace std;
int Horner(int* pi, int degree, int x) {
if (degree == 0) {
return pi[0];
}
return Horner(pi, degree - 1, x) * x + pi[degree];
}
int main() {
int arr[] = {5, 3, -2, 4, -6};
int sol = Horner(arr, 4, -2);
cout << "Value of Polynomial using recursion = " << sol;
}
Ausgang:
Value of Polynomial using recursion = 34
Abschluss
In diesem Artikel wird erläutert, wie Sie den Wert von Polynomen mithilfe der Horner-Regel in C++ finden. Die drei Methoden haben unterschiedliche zeitliche Komplexitäten, was ein großartiges Lernwerkzeug für den Leser sein kann.
Es wird empfohlen, zu versuchen, die Codes selbst zu schreiben und dann zurückzukommen, um Hinweise zu erhalten. Der Leser wird die Konzepte zum Ermitteln des Werts von Polynomen unter Verwendung der Horner-Regel in C++ leicht verstehen.