Arbeitseinheit 2 zum Software-Praktikum im Wintersemester 2008/09 Prof. Dr. Christoph Schweigert mit Dr. Urs Schreiber und Dipl.-Math. Christian Curilla Aufgabenblatt für Endziffer 2,3,7 der Matrikelnummer. Abgabe spätestens am 4.2.2009 um 12 Uhr Name: Vorname: Matrikelnummer: Erste Beispiele und Aufgaben In diesem Aufgabenblatt stellen wir erste Anwendungen von M APLE vor. Hierbei spielt zwar zum Teil auch Mathematik eine Rolle, die später noch vertieft wird; Sie können diese Aufgaben aber bereits jetzt mithilfe der vom ersten Aufgabenblattes erworbenen M APLE-Kenntnisse bearbeiten. Dieses Aufgabenblatt ist ein Joker und kann bis zum Ende der Vorlesungszeit abgegeben werden. 1 Approximation von Quadratwurzeln Wir möchten hier einen Algorithmus untersuchen, der Quadratwurzeln positiver reeller Zahlen a ∈ R>0 approximiert. Lesen Sie hierzu etwa [Forster 1, §6] oder auch Kapitel 5.4. in • K. Königsberger, Analysis I, Springer 2004. Definieren Sie in M APLE eine Folge (xn )n∈N , deren Folgenglieder rekursiv wie folgt gegeben seien a 1 xn + n = 0, 1, 2, . . . xn+1 = 2 xn und zwar in Abhängigkeit von a ∈ R>0 und einem Startwert x0 ∈ R>0 als Routine folg:=proc(n,a,x0). Sie können dabei ähnlich vorgehen wie bei der Definition der Routine fakult1. Setzen Sie also in der Routine zunächst den Wert folg(0,a,x0) auf x0 fest, und berechnen Sie dann rekursiv, indem Sie die Routine sich selbst aufrufenlassen, die höheren Folgenglieder folg(i,a,x0) aus folg(i-1,a,x0). Lassen Sie sich die Werte von folg(n,2,1), folg(n,3,1) sowie folg(n,4,1) für n von 1 bis 10 ausgeben. Vergleichen Sie die Ergebnisse mit denen, die Sie für folg(n,2.,1), folg(n,3.,1) sowie folg(n,4.,1) erhalten. Verändern Sie nun den Startwert x0 , berechnen Sie zum Beispiel folg(n,2.,15) und folg(n,3.,15). 1.1 Geben Sie die fünfte Nachkommastelle der Ausgabe von folg(6,3.,20) an. Setzen Sie Digits:=50 und vergleichen Sie die Ausgaben von folg(7,3.,20), folg(8,3.,20) und evalf(sqrt(3)). Hierbei steht sqrt für die Wurzelfunktion (Quadratwurzel heißt auf englisch square root). 1.2 Bis zu welcher Nachkommastelle M (einschließlich) stimmt folg(8,3.,19) mit dem von evalf(sqrt(3)) überein? Hinweis: Bilden Sie die Differenz. 1.3 Sei M wie oben definiert. Gibt es n > 8, so dass weniger als die ersten M − 1 Ja Nachkommastellen von folg(n,3.,20) mit denen von folg(8,3.,20) über- Nein einstimmen? Hinweis: Stellen Sie Beobachtungen über die Monotonie der Folge an und versuchen Sie, diese zu beweisen. Verändern Sie den Startwert x0. Untersuchen Sie, welchen Wert Sie Digits zuweisen müssen, damit Sie die Differenz folg(7,3.,1.9) - evalf(sqrt(3)) noch bestimmen können. Beantworten Sie nun die folgenden Fragen. Lesen Sie gegebenenfalls auch in den eingangs erwähnten Lehrbüchern nach. 1.4 Sei x0 > 0. Überlegen Sie sich, was stimmt: (a) Die Folge (xn )n∈N fällt für n ≥ 1 monoton. √ (b) Es gilt xn ≥ a für n ≥ 1, unabhängig vom Startwert x0 > 0. (a) (b) (c) (c) Für gewisse Werte von x0 und a kann die Folge zwei Häufungspunkte besitzen. 1.5 Wahr oder falsch? √ Unabhängig von der Wahl des Startwerts x0 > 0 konvergiert Wahr die Folge gegen a. Falsch 1.6 Wie wählen Sie x0 , um möglichst schnelle Konvergenz zu erreichen? √ (a) x0 sollte viel größer als der erwartete Wert für a sein. √ (b) x0 sollte möglichst nahe am erwarteten Wert für a liegen. √ (c) x0 sollte viel kleiner als der erwartete Wert für a sein. (a) (b) (c) 1.7 Konvergiert die Folge (xn )n∈N für a > 0 und für negative Startwerte x0 gegen das Negative der Wurzel von a? Ja Nein 2 Die Bailey-Borwein-Plouffe-Formel Interessante Zahlen kann man oft durch eine Reihendarstellung numerisch berechnen. Sehr bekannt ist beispielsweise die Formel ∞ π2 1 (1) ∑ 2= 6 , n=1 n die auf Euler zurückgeht, und mit der man die Zahl π berechnen kann, siehe etwa [Forster 1, Kap 7]. Im Folgenden sollen Sie sich klar machen, dass eine Zahl verschiedene Reihendarstellungen besitzen kann, die für die konkrete Berechnung unterschiedlich gut geeignet sein können. Betrachten wir zunächst die Logarithmusfunktion. Erinnern Sie sich an die Taylor-Entwicklung der Logarithmusfunktion um den Entwicklungspunkt 1, siehe etwa [Forster 1, S.253]. Sie können sich die ersten fünf Glieder dieser Entwicklung auch mithilfe des M APLE-Befehls taylor(ln(x),x=1,6) verschaffen (kommt auf dem Aufgabenblatt Nr. 8 wieder vor). Durch Einsetzen erhalten Sie eine Reihendarstellung der reellen Zahl ln 2. 2.1 Wie sieht diese Reihendarstellung aus: (a) (b) n−1 1 (a) ln 2 = ∑∞ n=1 (−1) n n1 (b) ln 2 = ∑∞ n=1 (−1) n Benutzen Sie auch den Befehl evalf(add((-1)ˆn)/n,n=1..10)) beziehungsweise evalf(add((-1)ˆ(n-1))/n,n=1..10)), um Ihre Antwort durch Vergleich mit dem numerischen Wert von ln 2 zu überprüfen. Eine andere Reihendarstellung für ln 2 erhalten Sie wie folgt. Beachten Sie zunächst, dass gilt ln 2 = − ln(1 − 12 ) . Verwenden Sie nun wieder die eben gefundene Taylor-Entwicklung der Logarithmusfunktion um den Entwicklungspunkt 1. 2.2 Welche Reihendarstellung erhalten Sie? −n (−2) (a) ln 2 = ∑∞ n=1 n (a) (b) −n 2 (b) ln 2 = ∑∞ n=1 n Überlegen Sie sich nun, auf Grund welcher Konvergenzkriterien die Reihendarstellungen von ln 2 aus den obigen Aufgaben konvergieren. Betrachten Sie auch die Folge der Quotienten des n-ten und des n + 1-ten Summanden der Reihen. Berechnen Sie mithilfe des M APLE-Befehls add wie oben die ersten Partialsummen beider Reihenentwicklungen. Verwenden Sie auch evalf(ln(2)); um die Partialsummen der beiden Reihenentwicklungen mit dem numerischen Wert von ln 2 zu vergleichen. 2.3 Welche Reihendarstellung konvergiert schneller? (a) Die aus der Entwicklung von ln(1 + 1) gewonnene Darstellung. (a) (b) (b) Die aus der Entwicklung von − ln(1 − 12 ) gewonnene Darstellung. Überraschenderweise wurde im Jahr 1995 eine neue Reihendarstellung der Zahl π entdeckt. Sie wird in der Literatur als Bailey-Borwein-Plouffe-Formel bezeichnet und lautet: ∞ 4 2 1 1 −k π = ∑ 16 − − − 8k + 1 8k + 4 8k + 5 8k + 6 k=0 Implementieren Sie die Partialsummen dieser Reihendarstellung ∑nk=0 . . . wieder mithilfe des Befehls add in Abhängigkeit von n. Implementieren Sie ebenso die Eulersche Formel (1). Berechnen Sie nun näherungsweise für verschiedene Werte von n den Wert von π2 /6 mithilfe der beiden verschiedenen Reihendarstellungen. 2.4 Welche Reihendarstellung konvergiert schneller? (a) die aus der Bailey-Borwein-Plouffe-Formel (a) (b) (b) die aus der Eulerschen Formel 3 Benfords Gesetz Wir wollen in diesem Abschnitt ein Phänomen untersuchen, das als das Benfordsche Gesetz bekannt ist. Betrachten Sie die Folge natürlicher Zahlen (2n )n∈N . Schreiben Sie die Folgenglieder im Dezimalsystem und betrachten Sie die Folge (an )n∈N der Anfangsziffern dieser Zahlen, also 1, 2, 4, 8, 1, 3, 6, 1, 2, 5, 1, . . . . Es gilt also an ∈ Z := {1, 2, 3, 4, 5, 6, 7, 8, 9} für alle n ∈ N. Bezeichne #N (i) die Häufigkeit, mit der die Ziffer i ∈ Z unter den ersten N Folgegliedern a1 , a2 , . . . , aN vorkommt. Wir interessieren uns für die relativen Häufigkeiten der auftretenden Ziffern, also zu gegebenem N für die rationalen Zahlen pN (i) := #N (i)/N für i ∈ Z. Schreiben Sie ein M APLE Programm, dass Ihnen als Funktion von N die neun Werte pN (i) für i ∈ Z ausgibt, und betrachten Sie diese Werte für verschiedene, hinreichend große Werte von N. Hinweise: 1. Die in M APLE vordefinierte Funktion log10 gibt Ihnen den Logarithmus zur Basis 10; die in M APLE vordefinierte Funktion floor gibt Ihnen die größte ganze Zahl kleiner gleich einer reellen Zahl an. Kombinieren Sie beides, um eine Routine anfangsziffer zu schreiben, die Ihnen für eine ganze Zahl die Anfangsziffer in ihrer Dezimaldarstellung ausgibt. 2. Verwenden Sie nun folgenden Code ErgebnisListe:=N->[seq(anfangsziffer(2ˆi),i=0..N)]; um eine (N + 1)-elementige Liste zu erzeugen, deren i-ter Eintrag die Anfangsziffer der Zahl 2i+1 ist. 3. Laden Sie nun die Bibliothek ListTools mithilfe des Befehls with(ListTools): (mehr Informationen zu den Bibliotheken kommen auf Aufgabenblatt 3). Diese Bibliothek stellt Ihnen den Befehl Occurrences bereit, mit dem Sie für gegebenes N in der Liste ListErgebnis(N) die Anzahl des Auftretens einer gewissen Ziffer bestimmen können, zum Beispiel Occurrences(3,ErgebnisListe); Bestimmen Sie so die relativen Häufigkeiten. 3.1 Was beobachten Sie? (a) Die Werte konvergieren für N → ∞ gegen feste Werte. (a) (b) (b) Alle neun Ziffern treten mit gleicher Häufigkeit auf. Machen Sie nun weitere Experimente, indem Sie für andere reelle Zahlen b > 0 untersuchen, wie oft welche Ziffer als erste Ziffer der Dezimaldarstellung von bi für i = 0, . . . , N auftritt. Erweitern Sie dafür Ihr M APLE-Programm ErgebnisListe so, dass b ein weiterer Eingabeparameter ist. Betrachten Sie nun die Häufigkeiten der Anfangsziffern für die folgenden Werte von b: 1 b ∈ {3, 4, 10 3 }. 3.2 Was gilt? (a) In allen drei Fällen findet man für große N ungefähr die gleichen Häufigkeiten wie bei b = 2. (a) (b) (b) Nur für b = 3, 4 findet man für große N ungefähr die gleichen Häufigkeiten wie bei b = 2. Verschaffen Sie sich nun beliebige Statistiken. Besuchen Sie dazu etwa die Internetseiten des statistischen Bundesamtes. Dort finden Sie zum Beispiel für alle 15 Bundesländer Tabellen zum Thema Wahlen. Bestimmen Sie beispielsweise die Häufigkeit der Anfangsziffern in den Stimmenzahlen für verschiedene Parteien in verschiedenen Wahlbezirken. Schreiben Sie diese in eine M APLE-Liste und berechnen Sie wieder mithilfe von Occurrences die relativen Häufigkeiten. Vergleichen Sie diese mit den relativen Häufigkeiten aus dem vorangegangenen Abschnitt. Um den mathematischen Hintergrund von Aufgabe 3.1 zu verstehen, betrachten wir zunächst ein anderes Problem. Sei z = exp(2πiθ) mit θ ∈ R, eine komplexe Zahl vom Betrag eins. Betrachten Sie die Folge z, z2 , z3 , . . . komplexer Zahlen. Überlegen Sie zunächst, dass alle Folgenglieder dieser Folge auch komplexe Zahlen vom Betrag eins sind. Lassen Sie sich nun mithilfe des Befehls pointplots aus dem Paket plots (siehe auch S. ??) die ersten 100 Glieder dieser Folge für verschiedene Werte von θ als Punkte in der komplexen Ebene ausgeben. Wählen Sie hierbei sowohl rationale als auch irrationale Werte für θ. Verwenden Sie zum Beispiel für θ = 1/14 etwa die folgende Syntax: . theta := 1/14: z := exp(2*Pi*I*theta): plots[pointplot] ({seq([Re(expand(zˆn)),Im(expand(zˆn))],n=1..300)}); (a) (b) (a) Ist θ rational, so liefert der zugehörige pointplot-Befehl ein regelmäßi- (c) ges n-Eck. Schreibt man θ als gekürzten Bruch, so ist n gleich dem Nenner (d) von θ. 3.3 Welche Vermutungen für die gesamte Folge liegen nahe? (b) Ist θ rational, liefert der zugehörige pointplot-Befehl ein regelmäßiges n-Eck. Schreibt man θ als gekürzten Bruch, so ist n gleich dem Doppelten des Nenners von θ. (c) Ist θ irrational, so ist die Menge {zn , n ∈ N} eine dichte Teilmenge des Einheitskreises. (d) Ist θ irrational, so ist die Menge {zn , n ∈ N} eine dichte Teilmenge des Einheitskreises und die Punkte sind gleichverteilt. Um den Zusammenhang zwischen den in den Abschnitten 2.3.1 und 2.3.3 angesprochenen mathematischen Phänomenen zu verstehen, überlegen Sie sich Folgendes. Sei a > 1 eine reelle Zahl; ihren Logarithmus zur Basis 10 zerlegen wir in seinen ganzen Anteil x und den gebrochenen Anteil: log10 (a) = x + y mit x ∈ N und 0 ≤ y < 1. Dann hängt die erste Ziffer in der Dezimaldarstellung von a nur von y ab. Im Falle der Folge (2n )n∈N betrachten wir also die Folge log10 2n = n log10 2 mod Z . Da die Zahl log10 2 irrational ist, liegt diese Folge dicht in R/Z und ist dort sogar gleichverteilt. Die Verteilung, die Sie am Anfang dieses Abschnitts beobachtet haben, war das Urbild dieser Gleichverteilung unter der Logarithmusfunktion. 4 Darstellung von Primzahlen durch Quadratsummen Wir wollen in diesem Abschnitt zwei elementare zahlentheoretische Sachverhalte mit M APLE untersuchen. Literaturhinweise: • J. Neukirch, Algebraische Zahlentheorie, Springer 1992, S.1-5 • A. Schmidt, Einführung in die algebraische Zahlentheorie, Springer 2007, Kapitel 2.4 (a) (b) (c) (d) Wir betrachten nun ungerade Primzahlen p. Die Frage ist, welche dieser Primzahlen sich als Summe von Quadraten zweier natürlicher Zahlen schreiben lassen. Überlegen Sie zunächst, was eine notwendige Bedingung dafür ist. 4.1 Überlegen Sie sich zunächst auf dem Papier, welchen Rest modulo 4 das Quadrat einer ganzen Zahl lassen kann: (a) 0 (b) 1 (c) 2 (d) 3 4.2 Was ist richtig? (a) Alle Primzahlen kommen in Frage. (a) (b) (c) (b) Nur die Primzahlen, für die p = 1 mod 4Z gilt, kommen in Frage. (c) Nur die Primzahlen, für die p = 3 mod 4Z gilt, kommen in Frage. Wir untersuchen nun mit M APLE eine Vermutung für eine hinreichende Bedingung dafür, dass eine Primzahl p als Summe der Quadrate zweier ganzer Zahlen geschrieben werden kann, p = a2 + b2 , a, b ∈ Z, a 6= b. Erstellen Sie dazu in M APLE zunächst eine Liste natürlicher Zahlen, die sich als Summe zweier Quadrate natürlicher Zahlen schreiben lassen: . # erzeugt Liste mit Wiederholungen: [seq(seq(iˆ2+jˆ2,i=0..4),j=0..4)]; # erzeugt Menge ohne Wiederholungen: ZweiQuadrate := {seq(seq(iˆ2+jˆ2,i=0..4),j=0..4)}; Sie sollten natürlich i und j größer als 4 betrachten und in diesem Fall die Ausgabe des Ergebnisses durch Verwendung von : unterdrücken. Erstellen Sie sich nun mithilfe des Befehls ithprime(n), der die n-te in M APLE gespeicherte Primzahl ausgibt, eine (ungeordnete) Liste ungerader Primzahlen . primGroesser2 := \{seq(ithprime(i),i=2..10)\}; # 2=ithprime(1) kommt in der Liste nicht vor Wiederum sollten Sie natürlich mehr als nur zehn Primzahlen, sondern alle vierstelligen Primzahlen untersuchen. Bilden Sie nun mithilfe des Befehls intersect die Schnittmenge . ZweiQuadUndPrimGroesser2 := ZweiQuadrate intersect primGroesser2; Überlegen Sie sich, wie groß Sie i und j in Abhängigkeit des größten Elements von primGroesser2 mindestens wählen sollten, damit obige Schnittmenge so groß wie möglich wird. Sie sollten hierbei alle vierstelligen Primzahlen untersuchen. Benutzen Sie den Befehl ZweiQuadUndPrimGroesser2 mod 4 um sich davon zu überzeugen, dass alle untersuchten Primzahlen, die sich als Summe zweier Quadrate schreiben lassen, tatsächlich Rest 1 modulo 4 lassen. Überprüfen Sie nun, ob sich auch umgekehrt alle Primzahlen p = 1 mod 4Z (kleiner oder gleich der größten Primzahl pmax in ZweiQuadUndPrimGroesser2) als Summe zweier Quadrate schreiben lassen. Erstellen Sie dazu eine Liste Prim1mod4 aller Primzahlen p, die p = 1 mod 4Z sowie p ≤ pmax erfüllen. Wir verschaffen uns zunächst pmax : . # misst die Laenge der Liste: l := nops(ZweiQuadUndPrimGroesser2); # waehlt das letzte (=groesste) Element aus: pMax := ZweiQuadUndPrimGroesser2[l]; Um die Zahl der Elemente der Liste zu bestimmen, haben wir den Befehl nops verwendet. Dieser steht für number of operators. Man beachte die unmathematische Verwendung des Worts operator! Um Prim1mod4 zu erstellen, definieren wir eine Funktion, die die Primzahlen p = 1 mod 4Z kleiner gleich pmax auswählt . f:= i -> if ithprime(i) mod 4 = 1 and ithprime(i) <= pMax then ithprime(i) fi; Prim1mod4 := {seq(f(i),i=2..10)}; Bilden Sie nun mithilfe des Befehls minus die Menge . Prim1mod4 minus ZweiQuadUndPrimGroesser2 4.3 Wahr oder falsch? Ist diese Liste leer, so lassen sich alle untersuchten Primzahlen p = 1 mod 4Z als Summe zweier Quadrate schreiben. Wahr Falsch 4.4 Finden Sie Beispiele von Primzahlen p = 1 mod 4Z, die sich nicht als Summe Ja zweier Quadrate schreiben lassen? Nein Literaturhinweis: • J. Neukirch, Algebraische Zahlentheorie, Springer 1992, S.1-5 • A. Schmidt, Einführung in die algebraische Zahlentheorie, Springer 2007, Kapitel 2.4 Wir stellen uns nun die Frage, welche natürlichen Zahlen sich als Summe von vier Quadraten ganzer Zahlen schreiben lassen. Stellen Sie eine Vermutung auf und testen Sie diese mit einem ähnlichen M APLEProgramm wie oben. 4.5 Welche Vermutungen ergeben sich aus Ihren Untersuchungen? (a) Jede Primzahl sollte sich als Summe von vier Quadraten schreiben lassen. (a) (b) (b) Jede natürliche Zahl sollte sich als Summe von vier Quadraten schreiben lassen. Literaturhinweis: • A. Schmidt, Einführung in die algebraische Zahlentheorie, Springer 2007, Kapitel 2.4 Die Aufgaben dieser Einheit müssen Sie bis zu dem Datum bearbeitet haben, das oben auf dem Blatt erscheint. c Bahns, Schweigert, Waldorf.