Zählen der Anzahl der reellen Wurzeln eines Polynoms

Ich interessiere mich für die Lösung von Problemen, bei denen es darum geht, die Anzahl der reellen Wurzeln eines beliebigen Polynoms zu finden.

Angenommen, ich nehme eine Funktion

F ( x ) = x 6 + x 5 + x 4 + x 3 + x 2 + x + 1
Dies hat keine wirklichen Wurzeln, aber ich versuche herauszufinden, ob es einen analytischen Weg gibt, der keine grafische Darstellung beinhaltet, um zu diesem Schluss zu kommen.

Unter Verwendung der Vorzeichenregel von Descartes gibt es keine Vorzeichenänderungen F Daher gibt es keine positiven Wurzeln für das Polynom. Angesichts

F ( x ) = x 6 x 5 + x 4 x 3 + x 2 x + 1
Ich kam zu dem Schluss, dass es entweder 6 negative, 4 negative, 2 negative oder null negative Wurzeln gibt. Ich habe also 4 Fälle zu berücksichtigen:

  • 0 positive Wurzeln, 6 negative Wurzeln, 0 komplexe Wurzeln
  • 0 positive Wurzeln, 4 negative Wurzeln, 2 komplexe Wurzeln
  • 0 positive Wurzeln, 2 negative Wurzeln, 4 komplexe Wurzeln
  • 0 positive Wurzeln, 0 negative Wurzeln, 6 komplexe Wurzeln (Der richtige Fall)

Ich habe versucht zu differenzieren F aber die Ableitung ist ebenso schlecht

F ' ( x ) = 6 x 5 + 5 x 4 + 4 x 3 + 3 x 2 + 2 x + 1
Ich kann daraus nichts schließen.

Ich habe versucht, das Problem anders anzugehen. Wenn ein Polynom mit geradem Grad abhängig vom führenden Koeffizienten immer positiv oder negativ ist, hat es keine echten Wurzeln, aber andererseits erweist sich das Finden der Extrema der Funktion als äußerst schwierig.

Ich habe versucht, den Zwischenwertsatz von Bolzano zu verwenden . Es garantiert die Existenz von mindestens einer Wurzel, aber andererseits besteht die Möglichkeit, dass es mehr als eine gibt, die nur durch Monotonie eliminiert werden kann, was mich wieder zur schlechten Ableitung zurückbringt.

Ich glaube, dass es einige allgemeine Regeln geben muss, aufgrund derer wir in der Lage sind, die Anzahl der Wurzeln für jedes Polynom zu berechnen.

  • Ist die grafische Darstellung die beste Technik für Polynome wie diese, und wenn ja, gibt es Möglichkeiten, wie ein schnelles, aber genaues Diagramm gezeichnet werden kann?
  • Beim Lesen über die entsprechende Theorie bin ich auf die Sturm-Methode und die Newton-Raphson-Methode gestoßen , habe diese aber noch nicht berührt. Ist es unbedingt erforderlich, diese Konzepte zu kennen, um effektiv Schlussfolgerungen ziehen zu können?
  • Habe ich etwas verpasst?
Aus irgendeinem Grund weniger bekannt, aber effizienter als der Satz von Sturm, ist der Satz von Vincent .

Antworten (7)

Der beste Weg, dies zu lösen, ist die Verwendung des Satzes von Sturm . Dies ergibt einen Algorithmus zum Berechnen der Anzahl unterschiedlicher reeller Wurzeln eines beliebigen Polynoms. Die Wikipedia-Seite ist ziemlich gut, aber ich werde die Methode hier skizzieren.


Lassen F ( x ) ein Polynom sein. Wir definieren eine Sequenz wie folgt:

P 0 = F
P 1 = F '
P n + 2 = P n  Mod  P n + 1
wo F ' ist die Ableitung des Polynoms und für Polynome P und Q , wir definieren P  Mod  Q der Rest der Division sein P durch Q - das heißt, das eindeutige Polynom R Grad kleiner als Grad Q so dass P = C Q + R für ein anderes Polynom C . (Dies ist auch nur das Ergebnis, das Sie durch Polynom-Long-Division erhalten)

Angenommen, wir möchten wissen, wie viele Wurzeln F ( x ) = x 3 + 2 x + 1 hat mit dieser Methode - natürlich wissen wir, dass die Antwort lautet 1 , aber wir sollten überprüfen. Wir erhalten folgende Kette:

P 0 = x 3 + 2 x + 1
P 1 = 3 x 2 + 2
P 2 = 4 3 x 1
P 3 = 59 16 .

Für jede reelle Zahl ein , wir definieren v ( ein ) die Anzahl der Vorzeichenwechsel in der Folge sein P 0 ( ein ) , P 1 ( ein ) , P 2 ( ein ) , P 3 ( ein ) , wobei wir alle Nullen ignorieren. Angenommen beides nicht ein oder B selbst Wurzeln sind, besagt Sturms Theorem v ( ein ) v ( B ) ist die Anzahl der reellen Wurzeln dazwischen ein und B .

Beachten Sie, dass v ( ) = lim ein v ( ein ) oder v ( ) = lim B v ( B ) sind leicht zu berechnen, indem man sich die führenden Terme jedes Polynoms ansieht. Hier haben wir zum Beispiel das v ( ) = 2 seit, hin wir haben das P 0 neigt dazu , P 1 zu , P 2 zu und P 3 negativ ist - also zwei Vorzeichenwechsel. Dann v ( ) = 1 da P 0 und P 1 sind positiv in der Nähe und P 2 und P 3 sind negativ. Dieses Polynom hat v ( ) v ( ) = 1 Wurzeln, wie erwartet, da es sich um eine zunehmende Funktion handelt.

Dies kann von Hand etwas mühsam sein, aber es funktioniert immer für jedes Polynom.


Der einzige Trick, um dies zu beweisen, besteht zumindest im quadratfreien Fall darin, zu überlegen, was mit Vorzeichenänderungen in dieser Folge passiert, wenn man sich entlang der reellen Linie bewegt: Die Anzahl der Vorzeichenänderungen kann sich nur in der Nähe einer Wurzel von einer der ändern Polynome. Beachten Sie jedoch, dass für einige Polynome C , haben wir folgende Beziehung:

P n = C P n + 1 P n + 2
Beachten Sie, dass wenn P n + 1 hat eine Wurzel an einem Ort, wo P n nicht, dann in der Nähe dieser Wurzel, P n und P n + 2 müssen entgegengesetzte Vorzeichen haben, da P n = P n + 2 an der Wurzel. So lange wie P 0 quadratfrei war (dh keine Mehrfachwurzeln hat), können wir feststellen, dass keine aufeinanderfolgenden Terme eine Wurzel gemeinsam haben, also passiert dies immer. Als Ergebnis wird die Null von P n + 1 hat keinen Einfluss auf die Anzahl der Vorzeichenwechsel. wie auch immer, falls P 0 eine Wurzel hat, dann verringert sich die Anzahl der Vorzeichenwechsel dort um eins, da in der Nähe dieser Wurzel F und F ' haben entgegengesetzte Vorzeichen vor der Wurzel und Gleichheitszeichen danach.

Nur um die Anforderung hinzuzufügen F be squarefree: Die multiplen Wurzeln von F sind nur die Wurzeln des (harmloseren) Polynoms gcd ( F , F ' )
Vielen Dank für Ihre Vorschläge. Ich ging weiter und las über Sturms Theorem. Es ist absolut wunderbar, aber was ich beobachtete, war, als ich es auf ein Polynom anwendete, dass die Schritte, in denen wir den Rest finden müssen, ziemlich lange zur Berechnung brauchten
@AdityaSriram und andere Leser, Sturms Theorem ist nicht "der beste Weg, dies zu lösen". Einige Berechnungen werden immer erforderlich sein, aber eine bessere Methode ist die Verwendung des Satzes von Vincent . Siehe auch Abschnitt Wikipedia . Der Satz von Sturm ist nur aus irgendeinem Grund bekannter.

Ihr Polynom ist ein Faktor x 7 1 = ( x 1 ) ( x 6 + x 5 + x 4 + x 3 + x 2 + x + 1 ) und so sind die Nullen die 7. Wurzeln der Einheiten. Es gibt nur eine siebte Einheitswurzel, die real ist, und das ist 1 . Die anderen sind alle komplex.

Vielen Dank für Ihre Antwort, aber ich suche nach einer generischen Methode, die auf jedes Polynom anwendbar ist, nicht nur auf das obige
@AdityaSriram: Es gibt keine generische Methode (oder zumindest hat niemand eine gefunden). Es gibt generische Methoden für einige Klassen von Polynomen (z. B. zyklotomische Polynome), aber im Allgemeinen ist jeder Fall sui generis.
Scheint eine offene Frage zu sein.
@ NickD Das ist überhaupt nicht der Fall! Dieses Problem ist sehr gelöst. Ich werde eine Antwort schreiben, aber im Grunde lässt Sturms Theorem die Anzahl der reellen Wurzeln eines beliebigen Polynoms berechnen.
@MiloBrandt: Ich freue mich auf deine Antwort! Danke auch für den Link.

Obwohl diese Methode nicht garantiert bei allen Polynomen funktioniert, ist sie manchmal überraschend effektiv: Beachten Sie das

[ x 6 + x 5 + x 4 + x 3 + x 2 + x + 1 ] = x 4 ( x + 1 2 ) 2 + [ 3 4 x 4 + x 3 + x 2 + x + 1 ] = x 4 ( x + 1 2 ) 2 + 3 4 x 2 ( x + 2 3 ) 2 + [ 2 3 x 2 + x + 1 ] = x 4 ( x + 1 2 ) 2 + 3 4 x 2 ( x + 2 3 ) 2 + 2 3 ( x + 3 4 ) 2 + 5 8 .
(Jedes Quadrat wurde gewählt, um die obersten zwei Terme des vorangehenden Polynoms in eckigen Klammern zu eliminieren; das ist wie „das Quadrat vervollständigen“ aus der Mathematik der High School.) In dieser Form ist das Polynom eindeutig immer positiv.

Hinweis: x = 0 ist keine Lösung, damit wir schreiben können

x 3 + 1 x 3 + x + 1 x + x 2 + 1 x 2 + 1
jetzt ersetzen
T = x + 1 x
Also wirst du bekommen
T 2 2 = x 2 + 1 x 2
und
T 3 3 T = x 3 + 1 x 3

Ich weiß Ihre Antwort zu schätzen, aber könnten Sie einige allgemeine Techniken zur Lösung solcher Probleme vorschlagen?
Die Frage stellt sich eindeutig nach dem allgemeinen Fall, wobei das gegebene Polynom nur als Beispiel verwendet wird. Das beantwortet die Frage überhaupt nicht.

Es gibt eine leichte Mehrdeutigkeit in Ihrer Problemstellung. "Die Anzahl der echten Wurzeln" kann mehrere Wurzeln mit Multiplizität zählen oder nicht. Zum Beispiel x 2 = ( x 0 ) 2 , hat zwei ununterscheidbare Wurzeln bei 0 , also müssen Sie entscheiden, wie Sie wiederholte Wurzeln berücksichtigen.

Sie könnten dies mit der Vorzeichen- und Halbierungsregel von Descartes fortsetzen, indem Sie Ihr Polynom horizontal verschieben. Aber Sturm-Sequenzen sind ein viel besserer Weg nach vorne.

Unabhängig von Ihrer Wahl sollten Sie dafür sorgen, dass alle Wurzeln des Polynoms einfache Wurzeln sind (dh alle haben Multiplizität 1 ). Also erkennen und eliminieren wir zuerst wiederholte Wurzeln. Berechnen

g ( x ) = gcd ( F ( x ) , F ' ( x ) ) .
Wenn g ist dann eine Konstante F hat keine wiederholten Wurzeln. Wenn g keine Konstante ist, dann spalten wir uns in zwei Teilprobleme auf: die eigentlichen Wurzeln von g sind echte Wurzeln von F (mit verschiedenen Multipliziten) und die wahren Wurzeln von h ( x ) = F ( x ) / g ( x ) sind einfache echte Wurzeln von F . Zum g , führen Sie den Algorithmus, den wir beschreiben, von Anfang an darauf aus. Zum h , fahren Sie mit dem nächsten Schritt fort.

Nun gibt es zwei Möglichkeiten weiter vorzugehen.

Methode 1:

Verschieben Sie Ihr Polynom nach links und rechts und verwenden Sie die Vorzeichenregel von Descarte, um herauszufinden, wie viele Wurzeln links und rechts von Null liegen. Zum Beispiel,

h ( x 1 ) = x 6 5 x 5 + 11 x 4 13 x 3 + 9 x 2 3 x + 1
hat sechs Vorzeichenwechsel. Also alle echten Wurzeln von h dazwischen liegen 1 und 0 . h ( x 1 / 2 ) hat vier Vorzeichenwechsel, also liegen höchstens zwei echte Nullen drin ( 1 , 1 / 2 ) und höchstens vier echte Nullen liegen darin ( 1 / 2 , 0 ) .

Nun schau zu h ' ( x ) auf dem Intervall ( 1 / 2 , 0 ) . Wir wollen wissen, ob h ' irgendwelche Wurzeln in diesem Intervall hat, ihre Multiplizität und ihre Orte, so dass wir bestimmen können, ob der Graph von h sieht eher aus ± ( x 2 + 1 ) oder ± ( x 2 1 ) in diesem Intervall. (Ich habe keinen Versuch unternommen, diese zu skalieren und auf dieses Intervall zu verschieben. Stattdessen wollen wir wissen, ob h hat null oder zwei Wurzeln und wir werden es herausfinden h in diesem Intervall konkav nach oben oder unten konkav ist.) Wenn Sie dies tatsächlich tun, kann dies zu einem schrecklichen Baum von bedingten Fällen führen.

Methode 2:

Verwenden Sie den Satz von Sturm . Konstruieren Sie die (Sturm-) Restfolge, indem Sie den Euklidischen Divisionsalgorithmus anwenden h und h ' . Lassen v ( ξ ) sei die Anzahl der Vorzeichenwechsel (ohne Nullen) in der Sturm-Folge, wenn ihre Mitglieder ausgewertet werden x = ξ . Dann v ( ein B ) v ( B ) ist die Anzahl der reellen Wurzeln im Intervall ( ein , B ] .

Ich glaube das wäre v ( ein ) v ( B ) , zumindest nach der Antwort von Milo Brandt und Wikipedia .
@tomsmeding: Danke! Ich hätte diesen Tippfehler wahrscheinlich nie bemerkt.

Hinweis:

( x 1 ) F ( x ) = x 7 1

Also die Wurzeln von F ( x ) = 0 sind e 2 m π ich / 7 wo m 1 , 2 , 3 , 4 , 5 , 6 ( Mod 7 )

Nun der Imaginärteil von e 2 m π ich / 7 wird sein 0 wenn 2 m π / 7 = n π für eine ganze Zahl n

m = 7 n 2 n muss eben sein = 2 R (sagen) 7 m

was einen Widerspruch ergibt.

Vielen Dank für Ihre Antwort, aber ich suche nach einer generischen Methode, die auf jedes Polynom anwendbar ist, nicht nur auf das obige
Die Frage stellt sich eindeutig nach dem allgemeinen Fall, wobei das gegebene Polynom nur als Beispiel verwendet wird. Das beantwortet die Frage überhaupt nicht.

Die Regel von Descarte gibt Ihnen nur eine Obergrenze. Die Methode, nach der Sie suchen, ist die der Sturm-Folgen (dh wenden Sie den euklidischen Algorithmus auf das Paar an ( F ( x ) , F ' ( x ) ) und zähle die Vorzeichenwechsel über die Zwischenpolynome hinweg).

Wenn Sie die Anzahl der echten Wurzeln in möchten ( , ) , genügt es, die Vorzeichen der führenden Terme zu beachten.