Sie sind auf Seite 1von 18

Prof. Dr.

Ulrich Rüde
Lehrstuhl für Systemsimulation
FAU Erlangen-Nürnberg

Algorithmik kontinuierlicher Systeme — 23. Juli 2021

Angaben zur Person (Bitte in DRUCKSCHRIFT ausfüllen!):

Name, Vorname:

Geburtsdatum:

Matrikelnummer:

Studienfach:

Raum, Sitzplatz:

Nicht von der Kandidatin bzw. vom Kandidaten auszufüllen!

Aufgabe 1 2 3 4 5 6 7 8 9

Max. Punktzahl 10 12 11 12 7 9 10 7 12

Erreichte Punkte

Gesamtpunktzahl

Note
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 2

Organisatorische Hinweise
Die folgenden Hinweise bitte aufmerksam lesen und die Kenntnisnahme durch Unterschrift bestätigen!

• Bitte legen Sie Ihren Studentenausweis und einen Lichtbildausweis zur Personenkontrolle bereit.

• Hilfsmittel (außer Schreibmaterial und Lineal) sind nicht zugelassen. Elektronische Geräte sind auszu-
schalten.
• Fragen zu den Prüfungsaufgaben werden grundsätzlich nicht beantwortet.
• Die Lösung einer Aufgabe muss auf das jeweilige Aufgabenblatt geschrieben werden. Sollte der Platz
nicht reichen, verwenden Sie die Zusatzseiten am Ende der Klausur. Fügen Sie einen Hinweis in Ihre
Lösung ein, wenn die Lösung auf den Zusatzseiten fortgesetzt wurde und beschriften Sie diese mit der
richtigen Aufgabennummer.
• Es können durch die Aufsicht zusätzlich Seiten eingeheftet werden, sollte mehr Platz benötigt werden.
Bitte beschriften Sie den Kopf dieser Seiten mit Ihrem Namen und Matrikelnummer. Streichen Sie alles
was nicht verwendet werden soll doppelt aus.
• Die Programmieraufgaben sind in der Programmiersprache Python 3 zu bearbeiten.
• Bei allen Programieraufgaben kann angenommen werden, dass numpy als np importiert worden ist.
• Wenn Sie die Prüfung aus gesundheitlichen Gründen abbrechen müssen, so muss Ihre Prüfungsunfähig-
keit durch eine Untersuchung bei einem Vertrauensarzt nachgewiesen werden. Melden Sie sich bei der
Aufsicht und lassen Sie sich das entsprechende Formular aushändigen.
• Die Bearbeitungszeit beträgt 90 Minuten.
• Überprüfen Sie die Prüfungsaufgaben auf Vollständigkeit (20 Seiten inklusive Deckblatt) und einwand-
freies Druckbild.
• Vergessen Sie nicht, auf dem Deckblatt die Angaben zur Person einzutragen und die Erklärungen auf
dieser Seite zu unterschreiben.
• Viel Erfolg!

Erklärungen
Durch meine Unterschrift bestätige ich den Empfang der vollständigen Klausurunterlagen und die Kenntnis-
nahme der obigen Informationen.

Erlangen, 23. Juli 2021


(Unterschrift)
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 3

Aufgabe 1 — Theoriefragen (10 Punkte)


a)
• Wie nennt man Algorithmen, die Fehler in Eingabedaten verstärken?

• In der Vorlesung wurden zwei verschiedene Klassen von Verfahren zum Lösen von linearen Gleichungs-
sytemen behandelt. Nennen Sie diese!

• Aus welchen beide Teilen, außer dem Vorzeichen, besteht eine IEEE 754 Gleitpunktzahl?

• Nennen Sie eine Polynom-basis die sich für die Interpolation eignet.

• Nennen Sie eine beliebige Formeigenschaften von Bézier-Kurven.

• Geben Sie die Formel zur Berechnung des Residuums an.

• Was wird mit der LBM aus der Vorlesung simuliert?

b) Geben Sie eine beliebige 2x2 Matrix an, die keine 0 Einträge enthält und jeweils die folgende Eigenschaft
erfüllt:

strikt diagonaldominant positiv symmetrisch definit singulär


     
     
     
     
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 4

Aufgabe 2 — Matrix Faktorisierung (12 Punkte)


a) Bestimmen Sie für die Matrix A die LR-Zerlegung mit Spalten-Pivotsuche, d.h., eine Permutationsmatrix
P , eine untere Dreiecksmatrix L und eine obere Dreiecksmatrix R, sodass gilt A = P LR.
 
4 2
A=
8 1

 
∗ ∗
b) Gegen ist eine Matrix B und eine Rotationsmatrix S, sodass S · B = gilt.
0 ∗
   
6 5 0.6 0.8
B= ,S =
8 5 −0.8 0.6
Bestimmen Sie die QR-Zerlegung der Matrix B indem Sie die Rotationsmatrix S verwenden.
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 5

c) Von der Matrix C ist folgende QR-Zerlegung bekannt:


     
3 4 0.6 0.8 5 −4
C= = ·
−4 8 −0.8 0.6 0 8
| {z } | {z }
Q R

Lösen Sie das lineare Gleichungssystem Cx = b für b = [10, 10]T .

d) Nennen Sie zwei verschiedene Algorithmen zur Berechnung der QR Zerlegung:


Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 6

Aufgabe 3 — Interpolation (11 Punkte)


a) Beschreiben Sie knapp den Unterschied zwischen Interpolation und Approximation.

b) Lagrange Polynome Geben Sie die drei Lagrangepolynome L1 (x), L2 (x), L3 (x) zu den Stützstellen
x1 = −0.5, x2 = 0, x3 = 0.5 an. Vereinfachen Sie die Darstellung bis zu einer Polynomdarstellung (ax2 +
bx + c).
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 7

c) Bilineare Interpolation Gegeben ist ein rechteckiges Gebiet, das in x-Richtung durch x1 und x2 mit
x1 < x2 und in y-Richtung durch y1 und y2 mit y1 < y2 begrenzt ist. An den Ecken sind folgende Werte
gegeben:

Ecke (x1 ,y1 ) (x1 ,y2 ) (x2 ,y1 ) (x2 ,y2 )


Wert v11 v12 v21 v22

Geben Sie die bilineare Interpolationsfunktion f (x, y) für x1 ≤ x ≤ x2 und y1 ≤ y ≤ y2 an.


Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 8

Aufgabe 4 — Python (12 Punkte)


a) Lösen Sie die folgenden Probleme mit je einer Funktion in Python!

Hinweis: Vergessen Sie nicht, Ihren Code richtig einzurücken! Orientieren Sie sich dabei an den gepunkteten
Hilfslinien.
• Beispiel: Prüfen, ob eine Zahl größer 5 ist.

def bigger_than_five(n):
return n > 5

• Zählen wie of ein Element e in einer liste L vorkommt.

def count(e, L):


.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .

• Eine Kopie der Liste L1 zurückgeben, wobei nur die Elemente der Liste L2 vorkommen dürfen.

def filter_elements(L1, L2):


.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .

• Den Median einer Liste L zurückgeben. Bei einer geraden Anzahl an Elementen wird nicht Interpoliert,
sondern das kleinere genommen. Hinweis: Es handelt sich um eine Liste von Zahlen. Median ist nicht
der Mittelwert.

def median_low(L):
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 9

• Den Index des Elements e in einer Liste L zurück geben. Falls das Elemente e nicht in der Liste L
vorkommt, soll −1 zurückgegeben werden.

def index(e, L):


.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .

b) Was geben folgende Codeschnipsel aus?

print([i for i in range(10) if i % 2 == 0])

Ausgabe:

import numpy as np
A = np.ones((2,2))
print((A @ A)[0,0])

Ausgabe:

l1 = [1,2,3,4]
l2 = l1.copy()
print(l1 is l2)

Ausgabe:
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 10

Aufgabe 5 — Matrixformate (7 Punkte)


a) CRS Überführen sie die Matrix A in das CRS Format.
 
2 0 4
A = 0 0 0
1 3 0

b) Für das Speichern der Matrixeinträge werden jeweils 8 Byte verwendet.


Für das Speichern der Einträge in den Index Arrays werden jeweils 4 Byte verwendet.
Wie groß ist die Speicherersparnis für die Matrix A in Byte durch das CRS Format?

c) BCRS Beschreiben Sie das BCRS Format und dessen Vorteile im Vergleich zum CRS Format.
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 11

Aufgabe 6 — Nichtlineare Optimierung (7 Punkte)


Gegeben seien Funktionen f : Rn → R und g : Rn → Rn mit Jacobi- und Hessematrizen J g , J f und H f .

a) Nullstellensuche mittels Newtonverfahren: Es sollen Nullstellen x ∈ Rn von g gefunden werden, so


dass gilt g(x) = 0. Hierfür soll das Newtonverfahren verwendet werden. Wie lautet die Iterationsvorschrift
unter Verwendung der o.g. Notation?

b) Notwendige Bedingung für Optimalität: Für die Funktion f werden nun lokale Extremstellen
x ∈ Rn gesucht. Auch hierfür kann das Newtonverfahren verwendet werden. Welcher Zusammenhang wird
dabei genutzt?

f (x) ist lokales Minimum/Maximum ⇒

c) Optimierung mittels Newtonverfahren: Wie lautet die Iterationsvorschrift des Newtonverfahrens


zur Suche solcher Extremstellen von f ?

d) Partielle Ableitungen: Geben Sie für den Fall n = 3, d.h. f : [x y z]T 7→ f (x, y, z), J f und H f mit
allen Matrixeinträgen an.
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 12

Aufgabe 7 — Numerik in der Praxis (9 Punkte)


Ziel dieser Aufgabe ist es, die Auslenkung der Membran eines Lautsprechers zu bestimmen. Der Einfachheit
halber modellieren Sie die Membran durch nur 5 diskrete x-Koordinaten x0 , . . . , x4 .

a) Gleichungssystem Aufstellen Sie erinnern sich daran, dass die Position aller Punkte auf der Membran
durch die Poisson-Gleichung −∆u = f beschrieben wird, und dass man die Poisson-Gleichung mit folgender
Formel diskretisieren kann:

−2xi + xi+1 + xi−1 = fi , i ∈ {1, 2, 3}

Die Seiten der Membran sind bei x = 2 fixiert, d.h., x0 = x4 = 2. Durch den Magneten wird in der Mitte der
Membran eine Kraft mit Stärke 4 ausgeübt, d.h., f1 = f3 = 0, f2 = 4. Stellen Sie mit diesen Informationen
das Gleichungssystem auf, das die Auslenkung der Membran beschreibt.
     
x1
     
     
   x2 = 
     
     
x3

b) Konvergenz Sie beschließen zur Lösung eines ähnlichen Problems den SOR Algorithmus zu verwenden.
Für welche Werte des Relaxationsparameter ω ist die Konvergenz des SOR-Verfahrens garantiert, wenn A
eine positiv definite Matrix ist?
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 13

c) Jacobi-Verfahren Sie wollen nun das Jacobi-Verfahren auf folgendes Gleichungssystem anwenden:
     
−4 2 0 x1 2
 2 −2 1  x2  =  3 
0 2 −1 x3 −5

Führen Sie zwei Iterationen des Jacobi-Verfahrens mit dem Startwert x0 = [x1 , x2 , x3 ]T = [1, 1, 1]T durch.
Geben Sie die resultierenden Vektoren x1 und x2 an.
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 14

Aufgabe 8 — Lineare Algebra: SVD (10 Punkte)


Das Kulturphänomen “Meme” ist seit vielen Jahren ein bedeutender Teil der Netzkultur. Diese werden im
großen Maße im Internet weitergereicht. Da die grafische Qualität der Memes zweitrangig ist, können diese
stark komprimiert werden, um die Last der Server und Bandbreite der Internetleitungen nicht zu strapazieren.

a) Kompression Nennen Sie zwei Verfahren außer der SVD, die sich ebenfalls zur Bildkompression eignen.

b) SVD Kompression Schreiben Sie eine Funktion compress die ein 2D-Numpy-Array picture mithilfe
von k-Rank Approximation komprimiert. Die Funktion compress gibt drei Objekte zurück: Die kompri-
mierten Arrays u, s, vt.
Die Beispielgrafiken zeigen die Anwendung der Kompression und deren erneuten Zusammensetzung (i.e.
from_compress(*compress(picture, k))) für verschiedene Werte von k.
Die SVD einer Matrix A = U ΣV H wird mit u, s, vh = np.linalg.svd(A) berechnet und ist schon vor-
gegeben. Dabei sind u und vh die unitären Matrizen als 2D-Numpy-Arrays. s ist ein 1D-Numpy-Array, das
aus den Singulärwerten besteht.
Das Array des schwarzweißen Bildes ist stets n × n groß.

(a) k = N = rank(picture) (b) k = 100 (c) k = 15


Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 15

def compress(picture, k)
u, s, vh = np.linalg.svd(picture)
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .

c) Bilderzeugung aus komprimierten Daten Schreiben Sie eine Funktion from_compress, welche die
k-Rank SVD Approximation u, s, vh zu einem 2D-Numpy-Array (e.g. Bild) transformiert. Das so trans-
formierte Bild hat Dabei die gleiche Größe wie das nicht komprimierte Ursprungsbild.
Hinweis: Nutzen Sie np.diag um as einem 1D-Numpy-Array eine Diagonalmatrix zu erzeugen.

def from_compress(u, s, vh)


.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
 
0 2
d) SVD bestimmen Bestimmen Sie die Matrizen der Singulärwertzerlegung U ΣV T von .
1 0
   
1 0
 __ __ __ __
 
 
   
0 1 __ __ __ __
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 16

Aufgabe 9 — Game of Life (12 Punkte)


Hinweis: Das grid in dieser Aufgabe ist stets ein 2D-Numpy-Array, das ausschließlich aus 0 und 1 besteht.

a) Game of Life Schreiben Sie eine Funktion next_step, die für ein grid den nächsten Zeitschritt des
Zellulären Automaten ”Game of Life“ bestimmt. Die Randbedingungen seien dabei periodisch, d.h., eine Zelle
am oberen Rand hat als oberen Nachbarn die zugehörige Zelle am unteren Rand. Die anderen drei Randfälle
seien analog.
Die Regeln:
1. Eine tote Zelle mit genau drei lebendigen Nachbarn erwacht zum Leben (d.h., wird auf den Wert 1
gesetzt).
2. Eine lebendige Zelle mit weniger als zwei lebendigen Nachbarn stirbt (d.h., wird auf den Wert 0 gesetzt).

3. Eine lebendige Zelle mit zwei oder drei lebendigen Nachbarn lebt weiter.
4. Eine lebendige Zelle mit mehr als drei lebenden Nachbarn stirbt.

def next_step(grid):
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 17

b) Periodic Life Schreiben Sie eine Funktion is_periodic, die für ein grid und einer Iterationsanzahlt N
bestimmt, ob das grid innerhalb der N Schritten in sein Initialzustand zurückkehrt.
Hinweis: np.array_equal(a1, a2) gibt zurück, ob Zwei Numpy-Arrays a1, a2 gleich sind.

def is_periodic(grid, N):


.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .

c) Static Life Schreiben Sie eine Funktion is_static, die für ein grid bestimmt, ob das grid statisch
bleibt, i.e. sich nicht unter der Anwendung von ”Game of Life“ verändert.

def is_static(grid):
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
.
. .
. .
. .
. .
.
. . . . .
Klausur: Algorithmik kontinuierlicher Systeme, 23. Juli 2021 18

Das könnte Ihnen auch gefallen