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.