Dr. Stefan Brechtken Dipl.-Math. Brigitte Walther Wintersemester 2015/16 TU Ilmenau Institut für Mathematik Grundlagen des wiss. Rechnens - Übungsserie 12 ————————————————————————————————– Aufgabe 67: Man erstelle für folgende mathematische Funktionen jeweils eine rekursive MatLab-Funktion: a) n ! = n (n − 1) !, 0 ! = 1. ∫b n−1 − tann−1 (a) − In−2 , b) In = tann (x) dx = tan (b)n−1 a I0 = b − a, I1 = ln cos(a) cos(b) . Aufgabe 68: Für die n-te Potenz einer Zahl x gilt für n ≥ 3: xn = (x2 )n/2 , falls n gerade, bzw. xn = x ∗ (x ∗ x)(n−1)/2 , falls n ungerade. a) Schreiben Sie auf dieser Basis eine linear rekursive MatLab-Funktion potenz, die die n-te Potenz einer Zahl x zurückgibt. b) Führen Sie einen Zeitvergleich zur normalen“ Potenzierung (mittels for-Schleife über alle ” Indizes von 1 bis n) mit Hilfe der MatLab-Funktionen tic und toc durch. Aufgabe 69: Die rekursive Berechnung des Binomialkoeffizienten erfolgt nach der Formel ( ) ( ) ( ) n n−1 n−1 = + für n > m > 0, m m m−1 ( ) ( ) ( ) n n n = 1, = 1, = 0 für n < m. 0 n m a) Schreiben Sie eine rekursive MatLab-Funktion (n) function b=Binrek(n,m) zur Berechnung des Binomialkoeffizienten m . b) Geben Sie zum Aufruf y= Binrek(5,2) alle Inkarnationen von Binrek in einem Schema an und erläutern Sie die Abarbeitungsreihenfolge der Inkarnationen. Ist Binrek linearrekursiv? c) Zählen Sie mit Hilfe einer globalen Variablen anz die Anzahl der Aufrufe der Funktion binrek. Messen Sie die Abarbeitungszeit mit tic und toc. Aufgabe 70: Schreiben Sie ein MATLAB-Funktionsfile, welches die adaptive Simpson-Regel als rekursive Funktion zur Berechnung des Integrals ∫ b I= f(x)dx a mit einer vorgegebenen Genauigkeit zum Inhalt hat. Vermeiden Sie dabei unnötige Berechnungen von Funktionswerten! Berechnen Sie damit die Werte von: ∫ 100 ∫ 2 √ dx 8 I= I= |x|dx −4 + x2 10 −100 −2 Aufgabe 71: Die Tschebyscheff-Polynome 1. Art T(n, x) des Grades n lassen sich rekursiv definieren: T(0, x) = 1, T(1, x) = x, T(n, x) = 2xT(n − 1, x) − T(n − 2, x) für n ≥ 2 a) Gegeben ist die rekursive MatLab-Funktion für T(n, x): function y = T(n, x) if n==0, y=1; elseif n==1, y=x; else y=2*x*T(n-1,x)-T(n-2,x); end Ist die Rekursion linear oder nichtlinear? Begründen Sie, dass die Rekursion für alle natürlichen Zahlen n terminiert. b) Skizzieren Sie zum Aufruf T(4,x) den Rekursionsbaum mit den Inkarnationen (Aufrufen) der Prozedur. Wie lautet das Ergebnis dieses Aufrufes? c) Die Tschebyscheff-Polynome 1. Art T(n, x) vom Grad n lassen sich nicht-rekursiv durch T(n, x) = cos(n arccos(x)) , n ≥ 0 definieren. Schreiben Sie dazu eine MatLab-Funktion. d) Notieren Sie MatLab-Kommandos zur grafischen Darstellung beider Funktionen für n = 5 und x zwischen -1 und 1. Aufgabe 72: Die Fibonacci-Folge (un ), n = 1, 2, 3, . . . , ist eine unendliche Folge von Zahlen, bei der sich die jeweils folgende Zahl durch Addition der beiden vorherigen Zahlen ergibt: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, . . .. Benannt ist sie nach Leonardo Fibonacci, der damit 1202 das Wachstum einer Kaninchenpopulation beschrieb. Diese Folge hat in der Natur allgemein große Bedeutung (vgl. bei Wikipedia “Fibonacci-Folge“). a) Geben Sie die übliche Rekursionsdarstellung für un an und notieren Sie diese als rekursive MatLab-Funktion fibonacci1. b) Entwickeln Sie eine serielle (also nicht-rekursive) Darstellung fibonacci2 durch wiederholte Addition mittels einer Zyklusanweisung. c) Finden Sie ein explizites Bildungsgesetz für die Glieder der Fibonacci-Folge (vgl. Formel von Moivre-Binet) und beweisen Sie die Äquivalenz beider Darstellungen. d) Geben Sie die Formel von Moivre-Binet ebenfalls als MatLab-Funktion fibonacci3 an. e) Vergleichen Sie die Ergebnisse aller 3 Funktionen in einem MatLab-Scriptfile für möglichst große Werte n. Was stellen Sie dabei fest? Aufgabe 73: Erstellen Sie eine rekursive MATLAB-Funktion zur Berechnung der Seitenlänge eines regelmäßigen n-Ecks, n ≥ 6, das in einen Kreis mit dem Radius r einbeschrieben ist, gemäß der Formel: √ √ S2n (r) = 2r2 − r 4r2 − (Sn (r))2 , n = 6, 12, 24, . . . Sn (r) ist die Seitenlänge des n-Ecks, S6 (r) = r. Schreiben Sie unter Nutzung dieser Funktion eine zweite MATLAB-Funktion zur Berechnung des Umfang eines n-Ecks Un (r) = nSn (r). Benutzen Sie diese zweite Funktion zur Berechnung von π mit der Genauigkeit von 6 Stellen nach dem Komma.