UE Mathematische Software SS 2009 Blatt 3 15) Plotten von Stammfunktion und Ableitungen Schreiben Sie eine Funktion intAblPlot[ f HxL,{x,a,b}], die die Funktion f , zusammen mit ihren ersten 3 Ableitungen sowie einer Stammfunktion im Intervall @a, bD grafisch darstellt. intAblPlot soll z.B. wie folgt aufgerufen werden können: intAblPlot @Sin@2 xD, 8x, 0, π<D intAblPlot B a , 8a, .1, 1<F Gestalten Sie die Grafik so, dass die einzelnen Graphen optisch gut unterscheidbar dargestellt werden. à Lösung 16) Radical Inverse Function – Rekursiv Die Radical Inverse Function fb HnL (siehe Beispiel 6) lässt sich folgendermaßen rekursiv definieren: Wenn n = qb + r mit 0 § r < b ist (d.h. die ganzzahlige Division von n durch b hat Ergebnis q und Rest r), dann gilt fb HnL := wobei fb H0L = 0 ist. r + fbHqL b , Schreiben Sie basierend auf dieser Formel eine rekursive Mathematica-Funktion. Erstellen Sie eine Liste, die f3 HnL für n = 0, …, 80 enthält. Welche Eigenschaften der Funktion f3 Fallen Ihnen dabei auf? à Lösung 17) Fibonacci Zahlen – Teil 1 Die Folge der Fibonacci-Zahlen ist definiert durch F1 = F2 = 1, Fn = Fn-1 + Fn-2 . Schreiben Sie † eine Funktion fiboA[n], die Fn rekursiv berechnet. † eine Funktion fiboB[n], die Fn rekursiv berechnet und dabei einmal berechnete Ergebnisse zwischenspeichert (siehe Vorlesung). Vergleichen Sie die Laufzeit der beiden Algorithmen (mit Timing) für n = 5, 10, 15, 20, 25, 30. Vergessen Sie dabei nicht, die von fiboB berechneten Ergebnisse zwischen den Testläufen immer wieder mit Clear zu löschen, um Ihre à Messung nicht zu verfälschen. Lösung 18) Fibonacci Zahlen – Teil 2 Überlegen Sie sich, wie oft fiboA und fiboB (von Beispiel 17) bei der Berechnung von Fn aufgerufen werden, wenn man annimmt, dass fiboB vorher noch keine Ergebnisse zwischenspeichern konnte. Zählen Sie bei Ihren Überlegungen a) die Basisfälle fiboX[1] und fiboX[2] mit, b) nicht mit. Das Ergebnis sollten vier exakte Formeln (nicht nur Abschätzungen) abhängig von n sein, möglicherweise unter Benutzung von Fn . à Bem: Bei dieser Aufgabe ist nichts zu programmieren. Schreiben Sie Ihre ausgearbeitete Lösung einfach in eine Textzelle eines Mathematica-Notebooks und geben Sie sie so ab. Lösung 19) Ein Körper? Definieren Sie die folgenden beiden Operatoren für 4-elementige Listen: 8a1 , a2 , a3 , a4 < ⊕ 8b1 , b2 , b3 , b4 < = 8a1 + b1 , a2 + b2 , a3 + b3 , a4 + b4 < 8a1 , a2 , a3 , a4 < ⊗ 8b1 , b2 , b3 , b4 < = 8a1 b1 − a2 b2 − a3 b3 − a4 b4 , a1 b2 + a2 b1 + a3 b4 − a4 b3 , a1 b3 + a3 b1 + a4 b2 − a2 b4 , a1 b4 + a4 b1 + a2 b3 − a3 b2 <. Schreiben Sie eine Funktion, die eine Liste mit vier zufällige Elemente aus @-10, 10D Õ liefert. Testen Sie damit, ob à die Operationen ∆ und ≈ das Assoziativ-, Kommutativ- und Distributivgesetz erfüllen. Lösung: 20) Binomialkoeffizienten Die Binomialkoeffizienten lassen sich folgendermaßen rekursiv definieren: n n-1 n-1 := + k k k-1 mit n n = = 1. 0 n Schreiben Sie basierend auf diesen Formeln eine rekursive Mathematica-Funktion. Vergleichen Sie die Laufzeit Ihrer Funktion für bestimmte Parameter mit der Laufzeit der eingebauten Funktion Binomial. Können Sie sich erklären, warum die eingebaute Funktion viel schneller ist? à Lösung: 21) Funktionsaufrufe Schreiben Sie die folgenden Funktionen in Mathematica. Seien Sie dabei möglichst präzise bei der Auswahl des verwendeten Patterns. Die Funktionen sollen nur dann zur Anwendung kommen, wenn gültige Parameter angegeben wurden. a) Eine Funktion zur Berechnung der Fakultät einer nichtnegativen ganzen Zahl. b) Eine Funktion zur Berechnung der Fläche einer Kreisscheibe mit Außenradius raussen und Innenradius rinnen . Wenn der Innenradius nicht angegeben wird, soll rinnen = 0 angenommen werden. c) Eine Funktion, die für zwei komplexe Zahlen mit ganzzahligen Real- und Imaginärteilen den Winkel zwischen den beiden Punkten in der Gaußschen Zahlenebene berechnet. d) Eine Funktion, die mittels Plot3D eine Grafik erzeugt. Das erste Argument soll die darzustellende Funktion sein, abhängig von x und y. Das zweite Argument (eine positive reelle Zahl a) definiert die Grundmenge @-a, aD µ @-a, aD. Optional sollen Optionen angegeben werden können, die dann an Plot3D durchgereicht werden. e) Eine Funktion, die für ein gegebenes Monat (als Zahl zwischen 1 und 12) die Anzahl der Tage in diesem Monat zurückgibt. Nehmen Sie an, es gäbe keine Schaltjahre. Hinweis Beachten Sie bei allen Funktionen, die Sie in Zukunft schreiben, dass diese nur für sinnvolle Parameter aufgerufen werden. 22) Delete Pairs Schreiben Sie eine Funktion deletePairs, die Paare aufeinanderfolgender gleicher Elemente aus einer Liste löscht. Beispiel: deletePairs @81, 2, 2, 3, 4, 5, 5, 4, 4, 1, 2, 1<D 81, 3, 4, 1, 2, 1< Gehen Sie dabei ähnlich wie in der Vorlesung bei der Definition von killPairsOfX vor und verwenden Sie keine à noch nicht besprochenen Mathematica Funktionen. Lösung