4. Übungen zur Computermathematik (Maple) WS 2011/2012 25. Man schreibe ein Maple-Programm, welches die Wurzel aus einer Zahl a ≥ 0 mithilfe der Rekursion x 0 = (1 + a ) / 2, x n +1 = ( x n + a / x n ) / 2 ∀n ∈ N berechnet und die Matrix mit den Zeilenvektoren [i, xi] bis zur ersten Wiederholung der Folgenglieder xi in der eingestellten Genauigkeit angibt. Hinweis: In Hinblick auf ein Abbruchkriterium beachte man, dass obige Folge stets monoton fällt. 26. Man schreibe ein Maple Programm (ohne Verwendung von Aufg. 17), das zu einer vorgegebenen natürlichen Zahl n und zu einer vorgegebenen ganzen Basis b ≥ 2 (mit Defaultwert b=2) die Liste der Ziffern der Zahlendarstellung in der Basis b, d.h., die sog. b-adische Darstellung von n, liefert. (Für die „Ziffern“ 10,11,..,36 sollten dabei ersatzweise die Buchstaben A,B,…,Z verwendet werden, d.h., n = 986 würde dann etwa für b = 16 den Output [3,D,A] ergeben.) 27. Man schreibe eine Maple Funktion cycles(p), welche für eine vorgegebene Permutation p der Menge {1,2,..,n} eine Darstellung als Produkt elementfremder Zyklen angibt, also z.B. für p=[3,2,5,1,4,8,6,7] den Output [[1,3,5,4],[2],[6,8,7]] liefert. (Man beachte, dass n nicht mit angegeben werden muss, da es sich ja implizit aus p ergibt.) 28. Man schreibe zwei Maple-Programme, und zwar je eines für die Berechnung von sin x bzw. cos x, welche diese Werte für beliebiges reelles x mithilfe der Taylorreihen dieser Funktionen berechnet auf die eingestellte Genauigkeit berechnet. Hinweis: Für eine bessere Konvergenz der Reihen führe man zunächst unter Verwendung geeigneter trigonometrischer Umformungen programmintern eine Reduktion des Bereichs für x auf das Intervall [0, π / 4] durch, wobei sich die Routinen für sin x und cos x dann u.U. auch wechselseitig aufrufen. 29. Im Folgenden nehmen wir an, dass 30 Jäger ohne vorherige Absprache und gleichzeitig auf jeweils eine von 10 Enten schiessen, wobei jeder Schuss ein Treffer sei. Wie groß ist dann die Wahrscheinlichkeit, dass alle 10 Enten getroffen werden? Man berechne diese • • zuerst näherungsweise durch eine n-mal für ein genügend großes n durchgeführte Simulation, wobei für eine zufällige Abbildung f:{1,2,..,30} → {1,2,.,,.10} jeweils überprüft wird, ob sie surjektiv ist und die relative Häufigkeit für dieses Ereignis berechnet wird unter Benützung der Tatsache aus der Kombinatorik, dass stirling2(30,10)*10! (siehe dazu das Package combinat) gerade die Anzahl der verschiedenen surjektiven Abbildungen vom obigen Typ angibt. 30. Sei (H,*,e) eine Halbgruppe mit einer (hier multiplikativ) geschriebenen Operation * und dem Einselement e. Mit Hilfe von folgenden Square-and-Multiply Algorithmus kann dann für ein beliebiges x ∈ H und ein k ≥ 0 die Potenz xk bestimmt werden: 1. Setze y:=e. 2. Ist k=0 so return y und STOP 3. Ist k ungerade, so setze y:=y*x. 4. Setze x:=x*x 5. Setze k:= k / 2 und mach weiter bei 2. Man implementiere den Algorithmus in Maple und berechne damit speziell die 123-te Potenz von 347 in der Halbgruppe (N,+,0) (=Halbgruppe der natürlichen Zahlen mit gew. Addition). 31. Man schreibe jeweils ein Programm zur Berechnung der Fibonacci-Zahlen Fn , welche rekursiv durch F0 = 0, F1 = 1, Fn = Fn −1 + Fn − 2 (n>1) gegeben sind und zwar a) durch direkte Verwendung dieser Rekursion (mit und ohne der Programmoption remember) n 1 1+ 5 auf die nächste ganze Zahl, b) durch Rundung von 5 2 c) durch Verwendung der Beziehung 1 1 (Fn , Fn −1 ) = (Fn −1 , Fn − 2 ) 1 0 und vergleiche die Vor- und Nachteile dieser Berechnungsmöglichkeiten. 32. Man schreibe in Maple ein Programm, zur Auffindung aller Lösungen des sog n-Damenproblems (n Damen müssen auf einem (n x n)-Schachbrett so aufgestellt werden, dass sich keine 2 gegenseitig bedrohen) für ein vorgegebenes n ≥ 4 und zwar iterativ auf folgende Weise: 1. Eine Sequenz s wird mit der (n x n)- Nullmatrix initialisiert. 2. Für das Element s[1] werden nun alle „Söhne“ erzeugt (eventuell auch keine!) und diese hinten in die Sequenz eingereiht, wonach s[1] dann aus s entfernt wird. Die Söhne einer Matrix M, deren Zeilensummen noch nicht alle ∞ sind, erhält man allgemein so, indem man in der ersten Zeile von M mit Zeilensumme < ∞ (falls vorhanden, s.u.) einen Nulleintrag sucht (ebenfalls falls vorhanden), diesen durch ∞ ersetzt, was dem Setzen einer Dame entspricht, und in allen Folgezeilen von ihr „bedrohte“ Felder durch den Eintrag von 1 markiert. 3. Hat s[1] keine Zeilen mit Zeilensumme < ∞ mehr, so ist man fertig, und die Sequenz s enthält dann alle Lösungen des n-Damenproblems, sonst muss bei 2. weitergemacht werden.