10    Reihen

In diesem Kapitel lernen Sie, wie Sie Reihen als Funktionsplots und Wertetabellen darstellen können. Reihen werden auf Konvergenz überprüft, und es werden deren Grenzwerte berechnet. Durch Visualisierung eines Taylor-Polynoms wird die Genauigkeit der Approximation veranschaulicht.

Wenn Sie die einzelnen Glieder einer Folge aufsummieren, erhalten Sie eine Reihe. Weil der Prozess des Aufsummierens der Folgenglieder theoretisch bis ins Unendliche fortgesetzt werden kann, spricht die Mathematik auch von unendlichen Reihen.

Konvergente Reihen mit unendlich vielen Gliedern haben einen endlichen Wert (= Summe der Folgenglieder). Diese Paradoxie ist auf den ersten Blick schwer verständlich und soll deshalb im Laufe der Untersuchung aufgelöst werden. Ich möchte sie aber bereits anhand eines Beispiels erklären: Wenn Sie eine Torte in zwei Hälften teilen und eine Hälfte immer wieder teilen, dann kann sich theoretisch die Anzahl der Stücke bis ins Unendliche vermehren. Der Inhalt der Kreisfläche ändert sich aber nicht.

Bei der Berechnung der Summe einer konvergenten Reihe handelt es sich um einen Grenzwertprozess. Die Summe nähert sich für n gegen unendlich einem bestimmen Wert, dem Grenzwert.

Reihen sind in der Mathematik ein wichtiges Hilfsmittel, um Berechnungen näherungsweise durchzuführen. Trigonometrische und hyperbolische Funktionswerte einschließlich ihrer Umkehrfunktionen sowie die Kreiszahl π und die eulersche Zahl e werden mithilfe von Reihen berechnet.

Reihe

Eine Reihe ist ein Objekt aus dem mathematischen Teilgebiet der Analysis. Sie wird durch das Aufsummieren (unendlich) vieler Folgenglieder gebildet. Präzise wird eine Reihe als eine Folge definiert, deren Glieder die Partialsummen einer anderen Folge sind.

Reihen können ebenso wie Folgen konvergieren oder divergieren – falls Sie die Begriffe nicht mehr genau kennen, schlagen Sie in Kapitel 7, »Folgen«, nach. Ob sie konvergieren oder divergieren, kann beispielsweise mit dem Quotienten- oder Wurzelkriterium untersucht werden. Eine notwendige Bedingung für Konvergenz ist außerdem, dass die Glieder einer Reihe eine Nullfolge bilden. Mit SymPy können Sie diese Kriterien anwenden und sogar unendliche Summen und Grenzwerte von Reihen symbolisch berechnen.

10.1    Divergierende Reihen

Es gibt Reihen, die offensichtlich divergieren. Dazu zählen die Reihen vom Typ k und k2. Die Summen ihrer Folgenglieder gehen für eine große Anzahl von Gliedern gegen unendlich. Dass auch die harmonische Reihe

formula

divergiert, würde man auf den ersten Blick nicht vermuten, denn die harmonische Folge 1/n konvergiert (siehe Listing 10.4).

Mit den SymPy-Methoden Sum() und limit() können Summen und Grenzwerte von Reihen symbolisch berechnet werden. Für das Symbol verwendet SymPy den kleinen Buchstaben o. Er wird zweimal hintereinander eingetippt: oo.

10.1.1    Die Reihe der Quadratzahlen

Betrachten wir zunächst am Beispiel der Quadratzahlen die Eigenschaft der Divergenz.

Aufsummierung von Quadraten

Abbildung 10.1     Aufsummierung von Quadraten

Aus der Folge der Quadratzahlen

formula

entsteht durch Addition der einzelnen Folgenglieder die Reihe der Quadratzahlen:

formula

Für n Summanden kann mit

formula

die Partialsumme allgemein berechnet werden. Eine Herleitung dieser Formel finden Sie im Internet unter der Bezeichnung quadratische Pyramidenzahlen:

https://de.wikipedia.org/wiki/Quadratische_Pyramidalzahl

Für die Partialsumme der Quadratzahlen gibt es sogar eine geschlossene Formel. Man kann diese Formel auch mithilfe der SymPy-Methode Sum() symbolisch berechnen (siehe Listing 10.4). In Tabelle 10.1 sind die Werte der Quadratzahlen und die Partialsummen der Quadratzahlen aufgelistet. Die Summe der Quadratzahlen bezeichnet man auch als den Wert der Reihe.

k

1

2

3

4

5

6

7

8

9

10

k2

1

4

9

16

25

36

49

64

81

100

k2

1

5

14

30

55

91

140

204

285

385

Tabelle 10.1     Wertetabelle für die Folge und die Reihe der Quadratzahlen

In der ersten Zeile der Tabelle steht der Laufparameter (Laufzahl) k = 1 bis 10 der Reihe. In der zweiten Zeile steht die Folge der Quadratzahlen. In der dritten Zeile stehen die Partialsummen der Folgenglieder. Abbildung 10.2 stellt die Folge (×) und die Reihe (+) der Quadratzahlen als Funktionsplot dar.

Mit Listing 10.1 können Sie den Funktionsplot der Folgen- und Reihendarstellung aus Abbildung 10.2 erstellen.

01  #01_plot_divergenz.py
02 import matplotlib.pyplot as plt
03 summe=0
04 fig, ax = plt.subplots()
05 for k in range(1,11):
06 summe=summe + k**2
07 ax.scatter(k,k**2,marker='x',color='b')
08 ax.scatter(k,summe,marker='+',color='r')
09 #Beschriftungen
10 ax.set_title(r'$\sum^{n}_{k=1} k^{2}$')
11 ax.set(xlabel='k',ylabel=r'$k^{2},\ \sum^{}_{} k^{2}$')
12 ax.text(8,35,"Folge",fontsize=12)
13 ax.text(8,300,"Reihe",fontsize=12)
14 plt.show()

Listing 10.1     Funktionsplot für die Folge und Reihe der Quadratzahlen

Funktionsplot für die Folge (×) und die Reihe (+) der Quadratzahlen

Abbildung 10.2     Funktionsplot für die Folge (×) und die Reihe (+) der Quadratzahlen

Analyse

Die Zeile 06 berechnet mit dem Summenalgorithmus die Partialsummen der Quadratzahlen. In Zeile 07 wird die Folge der Quadratzahlen als x-Zeichen ausgegeben, und in Zeile 08 wird die Reihe der Quadratzahlen als +-Zeichen ausgegeben. Beide Ausgaberoutinen benutzen für die Bildschirmausgabe die scatter-Methode des Untermoduls pyplot von matplotlib.

Mit einem Funktionsplot lässt sich der Unterschied zwischen einer Folge und einer Reihe leicht veranschaulichen. Eine Wertetabelle verdeutlicht diesen Unterschied noch präziser. Listing 10.2 berechnet die Wertetabelle für die Folge und Reihe der Quadratzahlen:

01  #02_divergenz1.py
02 n=10
03 summe=0
04 print("k^2 \t ∑k^2 ")
05 for k in range(1,n+1):
06 summe=summe + k**2
07 print(k**2,"\t",summe)

Listing 10.2     Berechnung der Wertetabelle für die Folge und Reihe der Quadratzahlen

Ausgabe

k^2      ∑k^2 
1 1
4 5
9 14
16 30
25 55
36 91
49 140
64 204
81 285
100 385

Analyse

In Zeile 06 wird wieder der Summenalgorithmus benutzt, um die Reihe der Quadratzahlen zu berechnen. Die Ausgabe erfolgt innerhalb des Schleifenrumpfs in Zeile 07. In der ersten Spalte der Ausgabe steht die Folge der Quadratzahlen, und in der zweiten Spalte stehen die Glieder der Reihe der Quadratzahlen. Die Summe eines Reihengliedes kann aus einem Glied der ersten Spalte und dem Glied seines Vorgängers aus der zweiten Spalte berechnet werden.

10.1.2    Harmonische Reihe

Da wir schon wissen, dass die harmonische Folge 1/n konvergiert, liegt die Vermutung nahe, dass auch die harmonische Reihe konvergiert. Dass das nicht der Fall ist, bewies bereits 1350 der Theologe und Mathematiker Nikolaus von Oresme (ca. 1320–1382) [Walter: 80, Weitz: 532].

Mit dem Computer wollen wir nun zunächst experimentell untersuchen, ob die harmonische Reihe divergiert. Listing 10.3 zeigt eine mögliche Umsetzung:

01  #03_divergenz2.py
02 i=9 #Exponent
03 print("n\t∑1/n")
04 for i in range(1,i):
05 summe=0
06 for n in range(1,10**i+1):
07 summe=summe + 1/n
08 print("%9d %4.10f" %(n,summe))

Listing 10.3     Partialsummen der harmonischen Reihe

Ausgabe

       n    ∑1/n
10 2.9289682540
100 5.1873775176
1000 7.4854708606
10000 9.7876060360
100000 12.0901461299
1000000 14.3927267229
10000000 16.6953113659
100000000 18.9978964139

Analyse

Für eine obere Grenze von n = 106 ergibt sich für die harmonische Reihe eine Summe von etwa 14,39. Auch wenn man für die obere Grenze sehr große Zahlen einsetzt, lässt sich mit dem Summenalgorithmus nicht nachweisen, dass die harmonische Reihe divergiert. Mit dieser experimentellen Methode kommen wir also nicht zum Ziel. Dass die harmonische Reihe divergiert, scheint der menschlichen Intuition zu widersprechen. Doch Nikolaus von Oresme wies mit dem heute noch gültigen Gedankengang

formula
formula
formula

nach, dass die harmonische Reihe divergiert [Walter: 80]. Es ist also ratsam, SymPy für die symbolische Berechnung des Grenzwertes heranzuziehen.

Listing 10.4 berechnet mit der SymPy-Methode Sum() den Wert der harmonischen Reihe ∑1/n symbolisch für formula und zum Vergleich die Partialsumme der Reihe der Quadratzahlen ∑n2 für die obere Grenze n. Das Symbol für wird von SymPy durch zwei direkt aufeinanderfolgende Kleinbuchstaben oo repräsentiert.

01  #04_sum_divergenz.py
02 from sympy import *
03 n=symbols('n')
04 an=1/n #harmonische Folge
05 bn=n**2 #Folge der Quadratzahlen
06 S_an=Sum(an,(n, 1,oo)).doit()
07 S_bn=Sum(bn,(n, 1,n)).doit()
08 print("Summe der harmonischen Reihe..:",S_an)
09 print("Partialsumme der Quadratzahlen:",S_bn)
10 print("vereinfachte Summenformel.....:",simplify(S_bn))

Listing 10.4     Summen der harmonischen Reihe und der Reihe der Quadratzahlen

Ausgabe

Summe der harmonischen Reihe..: oo
Partialsumme der Quadratzahlen: n**3/3 + n**2/2 + n/6
vereinfachte Summenformel.....: n*(2*n**2 + 3*n + 1)/6

Analyse

In Zeile 04 wird die harmonische Folge an und in Zeile 05 wird die Folge der Quadratzahlen bn definiert. In Zeile 06 berechnet die SymPy-Methode Sum(an,(n, 1,oo)). doit() die Summe der harmonischen Folge für formula. Erwartungsgemäß wird auch oo (das SymPy-Symbol für unendlich) ausgegeben (Zeile 08). Wenn Sum() ohne die Methode doit() ausgeführt wird, dann wertet sie die Summe nicht aus, sondern gibt nur die nicht ausgewertete Summe Sum(1/n, (n, 1, oo)) zurück. Erst mit der Methode doit() wird die Summe symbolisch berechnet. Die Methode doit() aus Zeile 06 könnte auch in Zeile 08 stehen: S_an.doit().

In Zeile 07 wird die Partialsumme der Quadratzahlen für die obere Grenze n berechnet und mit print() in den Zeilen 09 und 10 ausgegeben. Die SymPy-Methode simplify() in Zeile 10 vereinfacht die Summenformel der Quadratzahlen.