11.3    Bogenlängen

Das bestimmte Integral kann auch zur Berechnung von Bogenlängen verwendet werden. Die Berechnung der Bogenlänge eines Funktionsgraphen erfordert die Integration einer Wurzelfunktion und die Berechnung der 1. Ableitung der Funktionsgleichung des Graphen. Eine Kurve, deren Länge so berechnet werden kann, heißt rektifizierbar. Abbildung 11.7 zeigt einen linearisierten Kurvenabschnitt Δs eines Funktionsgraphen.

Anhand dieser Abbildung soll die Vorschrift für die Berechnung von Bogenlängen hergeleitet werden.

Linearisierter Kurvenabschnitt Δs

Abbildung 11.7     Linearisierter Kurvenabschnitt Δs

Für kleine Bogenabschnitte kann die Bogenlänge durch eine Gerade angenähert werden. Dann gilt nach dem Satz des Pythagoras:

formula

Auf der rechten Seite der Gleichung wird Δx2 ausgeklammert:

formula

Auf beiden Seiten wird die Wurzel gezogen:

formula

Für den Grenzwert formula erhält man für den Bogenabschnitt zwischen den Grenzen a und b das bestimmte Integral:

formula

Für die Normalparabel ƒ(x) = x2 soll die Bogenlänge zwischen 0 und 1 berechnet werden. Wenn Sie die Ableitung ƒ'(x) = 2x in die obige Formel einsetzen, erhalten Sie das bestimmte Integral:

formula
formula

Das Integral können Sie mit der Methode der partiellen Integration berechnen [Hairer: 125], oder Sie benutzen eine Integraltabelle, z. B. [Bronstein: 1094, Nr. 185].

Listing 11.7 berechnet die Bogenlänge einer Normalparabel für den Abschnitt von 0 bis 1. Dabei werden die selbst erstellten Funktionen diff() für die Berechnung der 1. Ableitung und dbl() für die Berechnung des Wurzelterms genutzt.

01  #07_bogenlaenge.py
02 from math import *
03 from integrieren import *
04 from scipy.integrate import quad
05 #Normalparabel
06 def f(x):
07 return x**2
08 #1. Ableitung
09 def diff(f,x,h=1e-3):
10 return (f(x+h)-f(x-h))/(2*h)
11 #Abschnitt der Bogenlänge
12 def dbl(x):
13 return sqrt(1+(diff(f,x))**2)
14 #Hauptprogramm
15 a,b=0,1 #Grenzen
16 s=simpson(dbl,a,b,100)
17 print("Bogenlänge einer Normalparabel")
18 print(s)
19 print(quad(dbl,a,b)[0],"quad")
20 print(sqrt(5)/2+log(2+sqrt(5))/4,"genau")

Listing 11.7     Bogenlänge einer Normalparabel

Ausgabe

Bogenlänge einer Normalparabel
1.4789428575416146
1.4789428575446018 quad
1.4789428575445975 genau

Analyse

In Zeile 03 wird das selbst erstellte Modul integrieren importiert. Im Programm stehen jetzt die Funktionen rechteck(), trapez() und simpson() zur Verfügung. Mithilfe der in Zeile 04 importierten SciPy-Funktion quad soll die Genauigkeit der selbst erstellten Python-Funktionen überprüft werden.

In den Zeilen 06 und 07 wird die mathematische Funktion f(x) definiert, von der die Bogenlänge berechnet werden soll.

In den Zeilen 09 und 10 steht die Funktionsdefinition diff(x) für die Berechnung der 1. Ableitung mit dem zentralen Differenzenquotienten.

In den Zeilen 12 und 13 wird die Python-Funktion für den Wurzelterm definiert.

In Zeile 16 berechnet die Funktion simpson(dbl,a,b,100) die Bogenlänge der Normalparabel. Hier können Sie auch die Funktionen rechteck() und trapez() testen. Der 2. und der 3. Parameter stehen für die untere und die obere Integrationsgrenze. Die Integrationsgrenzen werden in 100 gleiche (äquidistante) Teile zerlegt. Das Ergebnis für die Länge des Bogenabschnitts von 0 bis 1 wird in die Objektvariable s gespeichert.

Die Ausgabe in Zeile 18 zeigt, dass mit selbst erstellten Funktionen simpson() eine Genauigkeit von elf Nachkommastellen erreicht wird.

In Zeile 19 berechnet die SciPy-Funktion quad(dbl,a,b)[0] einen genaueren Wert der Bogenlänge. Das Listenelement [0] verhindert die Ausgabe der Fehlerabschätzung.