Mathematisches Institut Düsseldorf, 11. November 2009

Werbung
Düsseldorf, 11. November 2009
Mathematisches Institut
Dr. Achim Schädle
Achim Winkelhaus
Computergestützte Mathematik zur Linearen Algebra – 5. Übungsblatt
Aufgabe 24:
(1 Punkt, Umrechnung von Temperaturen)
Befehl: for
Schreiben Sie ein Matlab-Script temperatur.m, welches eine Matrix mit 3 Spalten erzeugt, die in der
ersten Spalte die Temperaturen von −20◦ bis 40◦ Celsius in Schritten von 5◦ enthält. In der zweiten
und dritten Spalte sollen die Temperaturen in ◦ Kelvin und ◦ Fahrenheit eingetragen werden. Schreiben
Sie eine Version mit for-Schleife und eine ohne.
Hinweis: C = 59 (F − 32), C = K − 273
Aufgabe 25:
(1 Punkt)
(a) Schreiben Sie eine Matlab-Funktion [flag] = sudokutest(S,i,j,z), die für eine N × N
Sudokumatrix S, eine Zahl z und Indices i, j ∈ {1, 2, . . . , N } testet, ob die Zahl z nach den Regeln
(i) − (iii) in die Position Si,j eingetragen werden darf. Falls z in der Position Si,j eingetragen
werden darf, soll flag = 1 zurückgegeben werden, andernfalls flag = 0.
(b) Schreiben Sie zwei Matlab-Skripte, die die Matlab-Funktion [flag] = sudokutest(S,i,j,z)
für die beiden unten angegeben Beispielen mit i = 1, j = 1 und z = 4 testet.
1
2
9
3 2
2
3
5
7
8
5
7
2 1 4
4
6 4
7 4
4
6 2
3
8
Hinweis: Auf der Homepage der Vorlesung stehen zwei Dateien mit den Beispielen zur Verfügung
Aufgabe 26:
( 1 Punkt)
Erweitern Sie Ihr Programm aus Aufgabe 25 so, dass zusätzlich die Bedingung (iv) überprüft wird.
Sudokuregeln: Bei einem Sudokuspiel der Größe N müssen in eine N ×N Matrix S natürliche Zahlen
z zwischen 1 und N eingetragen werden. Es ist zulässig die Zahl z in die Position Si,j einzutragen,
falls die vier folgenden Bedingungen erfüllt sind:
(i) Die Position Si,j ist unbesetzt.
(ii) Die Zahl z steht nicht bereits in der j-ten Spalte von S.
(iii) Die Zahl z steht nicht bereits in der i-ten Zeile von S.
(iv) Die Zahl z steht nicht bereits in einem der Unterblöcke von S, wie sie in der Abbildung für
N = 4 und N = 9 markiert sind.
1
Aufgabe 27:
(1 Punkt, while-Schleife)
(a) Schreiben Sie ein Skript aufgabe26a.m, das einen Vektor von Anfang bis Ende durchsucht und
die erste Position k findet und ausgibt, bei an der eine Zahl kleiner als 1 auftritt. Der Vektor
soll danach nicht weiter durchsucht werden. Tritt keine negative Zahl auf, soll Null ausgegeben
werden.
(b) Kopieren Sie das Skript nach aufgabe26b.m und erweitern Sie dieses so, dass Produkt, Summe,
Minimum, Maximum, Durchschnitt und Median der im Teil (a) gefundenen Zahlen (also der
Zahlen an Positionen 1 bis k − 1) berechnet werden.
Aufgabe 28:
(1 Punkt, Fakultät)
Befehle: if, else, round, error, for, while, prod
Schreiben Sie vier Matlab-Funktionen fac1(n), fac2(n), fac3(n), fac4(n) zur Berechnung n!,
der Fakultät von n.
(a) unter Verwendung einer for-Schleife,
(b) unter Verwendung einer while-Schleife,
(c) ohne Schleife mit Hilfe von prod.
(d) rekursiv
Stellen Sie sicher, dass das Eingabeargument n eine natürliche Zahl ist und geben Sie sonst eine
Fehlermeldung aus.
Abgabe bis Mittwoch, dem 18. November 2009
2
Herunterladen