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