________________________________________________________________________________
Inhalt....: Polynome
Kategorie.: Grundkurs
Mathematik: Zahlentheorie, Kryptographie
MuPAD.....: 3.0.0
Datum.....: 2004-03-31
Autoren...: Kai Gehrs <acrowley@mupad.de>
Funktionen: poly, divide, Dom::Integer
________________________________________________________________________________
Polynome
Dieses Arbeitsblatt ist Bestandteil des MuPAD Grundkurses.
Eine der elementarsten Familien von Funktionen in einer Unbestimmten ist die
Familie der Polynomfunktionen (oder kurz Polynome). Der Umgang mit Poly-
nomen soll hier am Beispiel des MuPAD Befehls "poly" demonstriert werden.
Es gibt im wesentlichen zwei Möglichkeiten, in MuPAD mit Polynomen zu rechnen.
Die erste Möglichkeit besteht darin, dass man Polynome als MuPAD Expressions
(MuPAD Ausdrücke) definiert. So kann z.B. das Polynom p = x^2 + 1 mittels
p:= x^2 + 1
![]()
definiert werden. Diese Vorgehensweise ist durchaus sinnvoll, wenn man sich
ausschließlich im Bereich der Analysis bewegt und derartige Polynomfunktionen
mit Mitteln der Differenzial- und Integralrechnung diskutiert. Möchte man jedoch
Polynome eher als algebraische Struktur ("Ring der Polynome") betrachten und
algebraische oder zahlentheoretische Methoden wie z.B. die Berechnung des
größten gemeinsamen Teilers zweier Polynome anwenden, so ist es sinnvoller,
die Funktion poly zur Definition von Polynomen in MuPAD zu benutzen.
Die Funktion "poly" erhält stets zwei oder drei Argumente: Ein polynomialer Aus-
druck in einer Unbestimmten, z.B. in x, dann eine einelementige Liste, die die
Unbestimmte enthält, die in dem polynomialen Ausdruck vorkommt, d.h. hier [ x ].
Als drittes, optionales Argument kann man einen Koeffizientenbereich angeben,
aus dem die Koeffizienten des Polynoms stammen sollen - wird dieser nicht an-
gegeben, so wird der größtmögliche Koeffizientenbereich von MuPAD gewählt
(d.h. Dom::ExpressionField - der Bereich, der alle Zahlen und Variablen umfasst).
Ein Aufruf der Funktion ist also in der Regel entweder von der Form
"poly( polynomialer Ausdruck z.B. in x, [ x ] )"
oder, falls explizit ein bestimmter Koeffizientenbereich R gewünscht ist, von der
Form
"poly( polynomialer Ausdruck z.B. in x, [ x ], R )".
Als Rückgabewert liefert uns poly im ersten Fall ein Polynom in x über dem größt-
möglichen in MuPAD verfügbaren Koeffizientenbereich Dom::ExpressionField().
Im zweiten Fall wird das Polynom so erzeugt, dass seine Koeffizienten aus dem
explizit angegebenen Koeffizientenbereich R stammen.
Wir betrachten einige Beispiele:
p:= poly(x^2 - 5*x + 6, [x])
![]()
q:= poly(x^3 - 2*x^2 - x + 2, [x])
![]()
Wir können nun mit den beiden Polynomen die üblichen arithmetischen
Operationen wie Addition und Multiplikation durchführen. Ein Vorteil besteht
darin, dass wir stets wieder ein Polynom erhalten:
Summe:= p + q
![]()
Differenz:= p - q
![]()
Produkt:= p * q
![]()
p * poly(1/3, [x])
![]()
Das einzige, womit wir vorsichtig sein müssen, ist die Division. Als algebraische
Struktur betrachtet, bildet die Menge der Polynome in einer Unbestimmten über
einem speziellen Koeffizientenbereich einen Ring, aber keinen Körper. Elemente
sind also (abgesehen von konstanten Polynomen, die in dem zugrundeliegenden
Koeffizientenbereich invertierbar sind) nicht invertierbar. Dies teilt uns MuPAD
auch ganz unverblümt mit:
Quotient:= p / q
![]()
Ähnlich wie bei ganzen Zahlen können wir auch "ganzzahlige Division" durchführen
und Reste betrachten. Die Funktion "divide" bestimmt den Quotienten zweier Poly-
nome nach dem Euklidischen Algorithmus.
Die Funktion "divide" erhält stets zwei Argumente: Ein Polynom p in einer Unbe-
stimmten, z.B. in x, und als zweites Argument ein Polynom q in derselben Unbe-
stimmten wie p, hier z.B. in x. Ein Aufruf ist immer von der Form "divide ( p, q )".
Als Rückgabewert liefert uns die Funktion eine Sequenz von zwei Polynomen s
und r. Dabei ist s der Quotient von p und q und r der Rest bei Division von p durch
q, so dass gilt: p = s * q + r.
Die Handhabung der Funktion ist also denkbar einfach. Wir erproben sie am
Beispiel unserer Polynome:
divide(p, q)
![]()
Wir machen die Probe: Auf das erste Polynom der Sequenz (d.h. auf den
Quotienten unserer beiden Polynome) greifen wir wie auf die Elemente einer
Liste mit dem Indexoperator [ ] zu:
s:= divide(p, q)[1]
![]()
Der Rest, d.h. das Polynom r, ist gegeben durch
r:= divide(p, q)[2]
![]()
Die Probe ergibt:
p = s * q + r
![]()
Das Ergebnis ist also korrekt. Wir vertauschen noch einmal die Rollen von p
und q:
divide(q, p)
![]()
s:= divide(q, p)[1]
![]()
r:= divide(q, p)[2]
![]()
q = s * p + r
![]()
Wir führen nun die gleichen Rechnungen noch einmal durch - diesmal wollen wir
aber explizit Polynome mit ganzzahligen Koeffizienten betrachten. Der Bereich
der ganzen Zahlen ist in MuPAD durch Dom::Integer gegeben.
R:= Dom::Integer
![]()
Wir können jetzt p und q als Polynome über R definieren und alle obigen
Rechnungen erneut durchführen:
p:= poly(x^2 - 5*x + 6, [x], R)
![]()
q:= poly(x^3 - 2*x^2 - x + 2, [x], R)
![]()
Summe:= p + q
![]()
Differenz:= p - q
![]()
Produkt:= p * q
![]()
divide(p, q)
![]()
divide(q, p)
![]()
Wo liegt nun der Unterschied zu den Polynomen p und q, die wir zuerst betrachtet
haben? Nun, wir haben eine Rechnung von oben bisher aus gutem Grund nicht
wiederholt: Die Multiplikation von p mit dem konstanten Polynom 1/3.
Da 1/3 keine ganze Zahl ist, können wir das konstante Polynom 1/3 über R erst gar
nicht definieren:
poly(1/3, [x], R)
![]()
MuPAD hält sich also strikt daran, dass alle Koeffizienten tatsächlich ganzzahlig
sein müssen. Dieses Konzept ist vor allem dann wichtig, wenn man sicherstellen
möchte, dass man bei bestimmten Rechnungen nicht aus einem fest vorgege-
benen Koeffizientenbereich "herausfällt".
Die Funktionen "gcd" und "gcdex" zur Berechnung des größten gemeinsamen
Teilers sowie die Funktion "lcm" zur Berechnung des kleinsten gemeinsamen
Vielfaches sind auch für Polynome verwendbar. Wir verzichten hier auf eine
genaue Beschreibung der Funktionen und verweisen auf die entsprechenden
Hilfeseiten.
_______________________________________________________________________________
Anmerkungen:
1. Weitere Anregungen finden Sie in der Buchreihe Mathematik 1 x anders. In dieser Reihe
wird eine Vielzahl unterschiedlichster mathematischer Probleme mit MuPAD gelöst. Die
Bücher können unter www.schule.mupad.de/literatur kostenfrei kopiert werden.
_______________________________________________________________________________