MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

Inhalt....: Polynome in MuPAD

Kategorie.: Handwerkskasten

Mathematik: Zahlentheorie, Kryptographie, Lineare Algebra, Analysis, Numerik

MuPAD.....: 3.0.0

Datum.....: 2002-08-14

Autoren...: Kai Gehrs <acrowley@mupad.de>

Funktionen: poly, divide, Dom::Integer

________________________________________________________________________________

 

Elementare MuPAD-Funktionen:

Polynome in MuPAD

 

Eine der elementarsten Familien von Funktionen in einer Unbestimmten ist die Familie der

Polynomfunktionen (oder kurz Polynome). Der Umgang mit Polynomen 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

math

 

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:

 

1. Argument: Ein polynomialer Ausdruck in einer Unbestimmten, z.B. in x

          

2. Argument: Eine einelementige Liste, die die Unbestimmte enthält, die

                       in dem polynomialen Ausdruck vorkommt, d.h. hier [ x ]

 

3. Argument: Als drittes, optionales Argument kann man einen Koeffizienten-

                      bereich angeben, aus dem die Koeffizienten des Polynoms

                      stammen sollen - wird dieser nicht angegeben, so wird der

                      größtmögliche Koeffizientenbereich von MuPAD gewählt

                      (d.h. Dom::ExpressionField - der Bereich, der alle Zahlen

                               und Variablen umfaßt).  

                      

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ößtmö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. Für den interessierten

Leser weisen wir darauf hin, dass im Handwerkskasten einige wichtige mögliche

Koeffizientenbereiche in dem Notebook "Zahlbereiche_in_MuPAD" vorgestellt

werden.   

 

Wir betrachten einige Beispiele:

 

p:= poly(x^2 - 5*x + 6, [x])

math

q:= poly(x^3 - 2*x^2 - x + 2, [x])

math

 

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

math

Differenz:= p - q

math

Produkt:= p * q

math

p * poly(1/3, [x])

math

 

Das einizige, 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

math

 

Ähnlich wie bei ganzen Zahlen können wir auch "ganzzahlige Division" durchführen

und Reste betrachten. Die Funktion divide bestimmt den Quotienten zweier

Polynome nach dem Euklidischen Algorithmus.

 

Die Funktion divide erhält stets zwei Argumente:

 

1. Argument: Ein Polynom p in einer Unbestimmten, z.B. in x

 

2. Argument: Ein Polynom q in derselben Unbestimmten wie p, hier z.B. in x

 

d.h. also 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)

math

 

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]

math

 

Der Rest, d.h. das Polynom r, ist gegeben durch

 

r:= divide(p, q)[2]

math

 

Die Probe ergibt:

 

p = s * q + r

math

 

Das Ergebnis ist also korrekt. Wir vertauschen noch einmal die Rollen von p und q:

 

divide(q, p)

math

s:= divide(q, p)[1]

math

r:= divide(q, p)[2]

math

q = s * p + r

math

 

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

math

 

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)

math

q:= poly(x^3 - 2*x^2 - x + 2, [x], R)

math

Summe:= p + q

math

Differenz:= p - q

math

Produkt:= p * q

math

divide(p, q)

math

divide(q, p)

math

 

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)

math

 

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 vorgegebenen

Koeffizietenbereich "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 - sie lassen sich ganz analog beschreiben

wie die in dem Notebook "ggT_und_kgV" angegebenen entsprechenden

Funktionen igcd, igcdex und ilcm für ganzen Zahlen.

 

_______________________________________________________________________________

 

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. 

 

_______________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.