pdf-File

Werbung
Lineare Algebra:
Maple 2 - Polynome
WS 2004/05
Eingabe. Ein Variablennamen besteht aus einer Folge von Buchstaben und Zahlen, die
mit einem Buchstaben beginnen muß.
Beispiele von Polynomen (mit T als Variablenname):
> f:= 2*T∧ 2 + 4*T;
> g:= (T∧ 3+T+1)*(T+2);
Achtung: Man vergesse nicht das Produktzeichen ∗ bei der Produktbildung
von Polynomen wie auch beim Skalarprodukt. (Bei der Eingabe 4T erscheint
eine Fehlermeldung (Syntax error), dagegen würde T4 als zweite Variable
interpretiert! )
Ist ein Polynom f als Produkt anderer Polynome gegeben, so erfolgt das Ausmultiplizieren
durch einen der Befehle
> collect(f,T);
> expand(f);
Bei collect ist der Variablenname (zum Beispiel also T ) anzugeben. Beispiel: Die
Eingaben collect((T+2)∗(1+T∧ 2),T); und expand((T+2)∗(1+T∧ 2)); können beide die
Ausgabe 2T 2 +2+T 3 +T liefern (also eine unsortierte Ausgabe). Zum Sortieren verwendet
man den Befehl:
> sort(f);
Die Eingabe sort(2T∧ 2+2+T∧ 3+T); liefert die Ausgabe T 3 + 2T 2 + T + 2.
Teilen mit Rest. Seien f, g zwei Polynome in Q[T ]. Man erhält Polynome q, r mit
f = qg + r und grad r < grad g durch die Befehle:
> q:= quo(f,g,T);
> r:= rem(f,g,T);
Größter gemeinsamer Teiler (greatest common divisor). Seien f, g zwei Polynome in
Q[T ]. Man erhält den ggT durch
> gcd(f,g);
> gcdex(f,g,T,0 a 0 ,0 b 0 );
Beim zweiten Befehl ist der Variablenname (zum Beispiel T ) anzugeben, unter
den Namen a und b werden dabei Polynome mit ggT(f, g) = af +bg gespeichert
(falls a oder b schon anderweitig verwendet wurden, ist die Verwendung von
Apostrophen 0 (= Shift #) wichtig). Beispiel:
> f:=T∧ 4-T∧ 3+T-1:
> g:=T∧ 3-1:
> gcdex(f,g,T,0 u 0 ,0 v 0 );
T −1
> u;
1
2
> v;
1
2
− 12 T
Denn der ggT der beiden Polynome f, g ist T − 1 und es gilt
T −1=
1
2
· f + ( 12 − 12 T ) · g
Achtung: Verwendet man den Befehl gcd(f,g,0 a0 ,0 b0 ), so wird unter den
Namen a und b etwas ganz anderes gespeichert, nämlich a = f / ggT(f, g) und
b = g/ ggT(f, g).
Faktorisieren. Zur Faktorisierung eines Polynoms f gibt es den Befehl
> factor(f);
So erhält man nach der Eingabe factor(6∗x∧ 2+18*x-24); die Ausgabe
6(x + 4)(x − 1)
Will man wissen, ob ein Polynom f ∈ Q[T ] irreduzibel ist, so gibt man
> irreduc(f);
ein, man erhält als Antwort true oder false.
Zusatz. Will man beim Faktorisieren von Polynomen auch Wurzeln oder andere “algebraische Zahlen” zulassen, so kann man diese als zweiten Parameter
(einzeln oder als Menge oder Liste) hinzufügen:
> factor(f,K)
So liefert zum Beispiel die Eingabe factor(x∧ 3+5,5∧ (1/3)); die Ausgabe
(x2 − 51/3 x + 52/3 )(x + 51/3 )
√
Hier haben wir mit 3 5 gearbeitet. Die komplexe Zahl i (mit i2 = −1) wird in
Maple mit I bezeichnet. Geben wir factor(x∧ 2+1,I) ein, so erhalten wir
(x + I)(x − I)
Will man ein Polynom f im Polynomring Z/pZ[T ] faktorisieren, so lautet der
entsprechende Befehl Factor(f) mod p. Hier ein Beispiel im Fall p = 2 (man
beachte den Großbuchstaben F):
> Factor(T∧ 6+T∧ 5+T∧ 4+T∧ 3+1) mod 2
Man erhält:
(T 4 + T + 1)(T 2 + T + 1)
Nullstellen von Polynomen. Um die Nullstellen des Polynoms f zu bestimmen, verwendet man den Befehl
> solve(f);
Zum Beispiel liefert die Eingabe a:=solve(T∧ 2+T-1); die Ausgabe
√
√
a := 12 5 − 12 , − 12 − 12 5
das Komma zeigt, daß es sich um eine Aufzählung der Lösungen handelt, um eine “Liste”.
Auf den i-ten Term einer Liste mit Namen a greift man mit dem Befehl a[i] zu. In unserem
erhält man bei der Eingabe a[2]; die Ausgabe
√
− 12 − 12 5
Rechnen in Z.
Teilen mit Rest.
Seien x, y positive ganze Zahlen. Man erhält ganze Zahlen q, r mit f = qg + r
und 0 ≤ r < y durch die Befehle:
> q:= iquo(x,y);
> r:= irem(x,y);
Größter gemeinsamer Teiler (greatest common divisor). Seien x, y ganze
Zahlen. Man erhält den ggT durch
> igcd(x,y);
> igcdex(x,y,0 a 0 ,0 b 0 );
(Das i steht für “integer”, ex steht für “extended”).
Beim zweiten Befehl werden zusätzlich unter den Namen a und b ganze Zahlen
mit ggT(f, g) = af + bg gespeichert.
Primfaktorzerlegung. Um die Primfaktorzerlegung einer ganzen Zahl n zu
erhalten, gibt man ein:
> ifactor(n);
Primzahl. Will man wissen, ob eine Zahl n eine Primzahl ist, so gibt man
> isprime(n);
ein, man erhält als Antwort true oder false.
Herunterladen