Ubungen zur Computeralgebra — Blatt 2

Werbung
Übungen zur Computeralgebra — Blatt 2
Dr. D. Vogel
Dr. A. Maurischat
Sommersemester 2012,
Abgabe: Mi 2.5.2012, 9.00 Uhr
5. Aufgabe: (4 Punkte)
(a) Zeigen Sie, dass für alle x, y ∈ Z die Gleichheit x · y = 14 ((x + y)2 − (x − y)2 ) gilt.
(b) Unter Verwendung der Gleichung in (a) erhält man aus einem Algorithmus zum Quadrieren (und Additions- bzw. Subtraktionsalgorithmen) einen Algorithmus zum Multiplizieren
zweier Zahlen. Berechnen Sie den Aufwand θ(m, n) zur Multiplikation zweier ganzer Zahlen
der (Bit-)längen m und n mittels dieses Algorithmus, wenn das Quadrieren einer ganzen
Zahl der (Bit-)länge n den Aufwand Q(n) hat.
(c) Berechnen Sie den Aufwand, wenn man rekursiv auf diese Weise 2k Zahlen der (Bit-)längen
≤ n multiplizieren möchte.
6. Aufgabe: (4 Punkte) (Strassen-Algorithmus zur Matrixmultiplikation)
Analog zur Karatsuba-Multiplikation zweier ganzer Zahlen, berechnen wir für beliebiges k ≥ 1
das Produkt zweier 2k × 2k -Matrizen nach folgendem Schema (die Aij , Bij und Mi bezeichnen
2k−1 × 2k−1 -Matrizen):
A11 A12
B11 B12
M1 + M2 − M4 + M6
M4 + M5
=
,
A21 A22
B21 B22
M6 + M7
M2 − M3 + M5 − M7
wobei
M1 = (A12 − A22 )(B21 + B22 ) M2 = (A11 + A22 )(B11 + B22 ) M3 = (A11 − A21 )(B11 + B12 )
M4 = (A11 + A12 )B22
M5 = A11 (B12 − B22 )
M6 = A22 (B21 − B11 )
M7 = (A21 + A22 )B11 .
Auch die Produkte Mi werden dabei rekursiv nach diesem Schema berechnet, und 1×1-Matrizen
werden gewöhnlich multipliziert.
Analysieren Sie den Aufwand dieses Algorithmus und vergleichen Sie ihn mit der üblichen“
”
Matrixmultiplikation.
7. Aufgabe: (4 Punkte)
(a) Bestimmen Sie eine primitive 8-te Einheitswurzel w im Körper F17 .
(b) Berechnen Sie von Hand die diskrete Fouriertransformierte DF Tw (f ) von
f (T ) = T 6 + 2T 4 − 3T 3 − 2T 2 + T + 1 ∈ F17 [T ]
mit der im Beweis von Satz 2.3 verwendeten rekursiven Methode. Führen Sie dabei über
die Anzahl der benötigten Ringadditionen und Ringmultiplikationen in F17 buch.
8. Aufgabe: (4 Punkte)
(a) Implementieren Sie Algorithmus 2.13 (schnelle Polynomdivision mit Rest) in Magma:
Schreiben Sie dazu eine Funktion SchnellePolyDiv(f,g), die als Argumente f,g zwei
Polynome besitzt und den Quotienten q und den Rest r (ebenfalls Polynome) zurückgibt.
Für die Multiplikation zweier Polynome a und b soll eine Funktion Mal(a,b) verwendet
werden.
(b) Lassen Sie mit Hilfe Ihrer Funktion Quotient und Rest der folgenden Polynome berechnen:
(i)
f = T 20 + T 3 − T 2 + 1,
g = T 7 − T + 1 ∈ Q[T ]
(ii)
f = T 20 + T 3 + T 2 + 1,
g = T 7 + T + 1 ∈ F2 [T ]
Bemerkung: Verwenden Sie von Magma bereitgestellte Funktionen zur Umwandlung von Polynome in Arrays und umgekehrt, um Polynome modulo T -Potenzen zu berechnen. Die Funktion mod
(u.ä.) darf nicht verwendet werden.
Für Teil (b) soll man die Funktion Mal(a,b) als die von Magma vordefinierte Polynommultiplikation a*b definieren.
Die Übungsblätter sowie weitere Informationen zur Vorlesung Computeralgebra finden Sie unter
http://www.iwr.uni-heidelberg.de/~Andreas.Maurischat/compalg-ss2012
Herunterladen