9.2    Tangentengleichung

Für die Tangente lässt sich eine Gleichung herleiten, sodass auch deren Verlauf längs einer Kurve dynamisch dargestellt werden kann.

Praxisbezug

In der Praxis wird die Tangentengleichung zur Linearisierung von Kurven benutzt. Für ein ausgewähltes Intervall wird der Verlauf der Kurve als linear angenommen. So lassen sich die erforderlichen Berechnungen wesentlich einfacher durchführen.

Das folgende Programm simuliert den Verlauf der Tangente längs einer Kurve. Wie bisher werden wieder das Matplotlib-Steuerelement Slider und die Ereignisverarbeitung von Matplotlib verwendet.

Für die Steigung m = ƒ'(x0) der Tangente im Punkt x0 gilt:

formula

Nach y aufgelöst, ergibt sich die Gleichung

formula

der Tangente.

Abbildung 9.3 zeigt die Programmoberfläche. Als Testfunktion wurde wieder die Parabel y = x2/2 ausgewählt.

Durch Verschieben des Slider-Knopfes können Sie die Tangente längs der Kurve wandern lassen. Bei a = 0 hat die Tangente die Steigung 0. Der aktuelle Wert der Steigung m wird links oben in der Programmoberfläche angezeigt.

Simulation der Tangentensteigung

Abbildung 9.3     Simulation der Tangentensteigung

Listing 9.2 zeigt die Umsetzung. Die Berechnung der Steigung m = ƒ'(x0) wurde in eine gesonderte Funktion ableitung(f,x) ausgelagert (Zeile 09), sodass die Tangentengleichung die vereinfachte Form m*(x-x0)+f(x0) annimmt (Zeile 14). Der Term f (x0) steht für den y-Achsenabschnitt y0.

01  #02_sld_tangente.py
02 import numpy as np
03 import matplotlib.pyplot as plt
04 from matplotlib.widgets import Slider
05 #Funktionsdefinition
06 def f(x):
07 return x**2/2
08 #1. Ableitung
09 def ableitung(f,x,h=1e-3):
10 return (f(x+h)-f(x))/h
11 #Tangente
12 def tangente(x,x0):
13 m=ableitung(f,x0)
14 return m*(x-x0)+f(x0)
15 #Slider-Einstellung erfassen
16 def update(val):
17 x0 = sldA.val
18 m=ableitung(f,x0)
19 y1.set_data(x,f(x))
20 y2.set_data(x,tangente(x,x0))
21 y3.set_data([x0],[f(x0)])
22 txtM.set_text('m = %2.1f' %m)
23 #Grafikbereich
24 fig, ax = plt.subplots(figsize=(6,6),label='Steigung der Tangente')
25 ax.set_title(r'$y=\frac{1}{2} x^{2}$')
26 ax.set(xlabel='x',ylabel="y, y'")
27 ax.axis([-5,5,-0.25,12.5])
28 txtM=ax.text(0.05,11,'m=2.0')
29 x = np.linspace(-5.5, 5.5, 100)
30 y1,y2 = ax.plot(x, f(x),'g-', x, tangente(x,2),'b',lw=1.5)
31 y3, = ax.plot(2,f(2), 'or')
32 fig.subplots_adjust(left=0.12,bottom=0.2)
33 #x-, y-Position, Laenge, Hoehe
34 xyA = fig.add_axes([0.1, 0.05, 0.8, 0.03])
35 sldA=Slider(xyA,'$x_0$',-5,5.0,valinit=2,valstep=0.1)
36 sldA.on_changed(update)
37 ax.grid(True)
38 plt.show()

Listing 9.2     Simulation der Tangentengleichung

Analyse

In den Zeilen 09 und 10 wird die Python-Funktion für den zentralen Differenzenquotienten definiert. Als Parameter sind eine Funktionsgleichung f und der Punkt x, an dem die Tangente positioniert werden soll, vorgesehen.

Die Definition der Tangentengleichung erfolgt in den Zeilen 12 bis 14. In Zeile 14 steht die Gleichung der Tangente. Die return-Anweisung gibt den aktuellen Wert der Tangentengleichung an der Stelle x0 zurück.

Die Python-Funktion update(val) (Zeilen 16 bis 22) ist wieder für die Ereignisverarbeitung zuständig. Sie wird in Zeile 36 aufgerufen. Wenn Sie diese Zeile auskommentieren, findet keine Ereignisverarbeitung statt.

Die Initialisierungswerte für die Gleichung des Funktionsgraphen f(x) und die Tangentengleichung tangente(x,2) werden in der Zeile 30 in die Objektvariablen y1 und y2 gespeichert. Das Objekt y3 in Zeile 31 repräsentiert den roten Berührungspunkt der Tangente.