Funktionen sind ein fundamentales sprachliches Mittel in der Mathematik, welches vielfältige Ausdrucksmöglichkeiten bietet. Um in dieser Vielfalt nicht die Orientierung zu verlieren, ist präzises Formulieren wichtig!
Funktionen (und allgemeinere Abbildungen) sind ein sprachliches Konstrukt, das auch von Computern verstanden wird. Dort sind Funktionen fast so elementar wichtig wie in der Mathematik. Das obige Beispiel kann am Computer wie folgt umgesetzt werden (beachte, dass man statt f und g aussagekräftigere Bezeichnungen wählen sollte):
# Definition einer Funktion (entspricht f im Beispiel)
def abstand_koord(x1, y1, x2, y2):
return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
# Definition einer weiteren Funktion (entspricht g im Beispiel)
def abstand_punkte(punkt1, punkt2):
x1, y1 = punkt1
x2, y2 = punkt2
return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
# Aufruf bzw. Auswertung der Funktionen
print(abstand_koord(1, 1, 3, 2))
print(abstand_punkte((1, 1), (3, 2)))
# alternativ
punkt1 = (1, 1)
punkt2 = (3, 2)
print(abstand_punkte(punkt1, punkt2))
print(abstand_koord(punkt1, punkt2)) # Zeile führt zu Fehlermeldung!
---------------------------------------------------------------------------TypeError Traceback (most recent call last)
CellIn[1], line 21 17# alternativ 18 punkt1 = (1, 1)
19 punkt2 = (3, 2)
20 print(abstand_punkte(punkt1, punkt2))
---> 21 print(abstand_koord(punkt1, punkt2)) # Zeile führt zu Fehlermeldung!TypeError: abstand_koord() missing 2 required positional arguments: 'x2' and 'y2'
Beachte, dass punkt1 und punkt2 in der Definition der Funktion abstand_punktelokale Variablen sind, im alternativen Aufruf weiter unten dann aber globale Variablen. Auch wenn diese Unterscheidung nicht zum Kernbereich dieser Veranstaltung gehört, sondern den Programmiergrundlagen zuzuordnen ist, sei zum besseren Verständnis die (kurze) Lektüre von Local versus Global Names empfohlen.
Funktionen werden gern grafisch dargestellt, da viele Eigenschaften (die wir später näher untersuchen werden) leicht aus grafischen Darstellungen abgelesen werden können. Unter Nutzung des Computers sind auch komplexere, insbesondere dreidimensionale Visualierungen möglich. Visualisiert wird der Graph der Funktion, also eine Menge von Punkten in einem Koordinatensystem.
Für zweidimensionale Darstellungen eignet sich das Python-Paket Matplotlib sehr gut. Für dreidimensionale Darstellungen gibt es eine Erweiterung für Matplotlib (mpl_toolkits.mplot3d), jedoch bietet Plotly mehr Möglichkeiten.
Beachte, dass die Darstellung am Computer praktisch immer durch Auswerten der Funktion an endlich vielen Stützstellen (d.h. Werten für x) erfolgt. Die entstehenden Punkte werden dann durch Geradenstücke verbunden. Ist die Stützstellenanzahl zu gering gewählt, kann die grafische Darstellung stark vom tatsächlichen Funktionsverlauf abweichen.
Bei der Visualisierung von Funktionen zweier Veränderlicher ist zu beachten, dass die Anzahl der Stützstellen nicht zu hoch gewählt wird. Wählt man beispielsweise in beiden Variablen je 100 Stützstellen, so entsteht ein zweidimensionales Gitter aus 10000 Punkten. Die Funktion wird also für die Visualisierung an diesen 10000 Stellen ausgewertet. Insbesondere die 3D-Darstellung von über 10000 Einzelobjekten, aus denen die Grafik im Webbrowser dann zusammengesetzt wird, kann den Webbrowser an seine Leistungsgrenzen bringen.
Die Möglichkeiten der Visualisierung sind nahezu grenzenlos. Wichtig ist, dass beim Betrachten einer Visualisierung einer Funktion stets geklärt wird, was eigentlich dargestellt ist! Dass die grafische Darstellung nicht nur auf zahlenwertige Funktionen beschränkt ist, zeigt das nächste Beispiel.
für gegebenes y∈R gelöst werden und weiß man, dass die Funktion im Suchbereich für x (das kann z.B. ein Intervall oder ganz R sein) streng monoton ist, so kann man die Umkehrfunktionf−1 bilden und damit die Lösung direkt berechnen:
Für nicht streng monotone Funktionen ist die Sache schwieriger, da dann mehrere Lösungen existieren können, die nicht über die (dann nicht existierende) Umkehrfunktion berechnet werden können. Dieser Aspekt ist sowohl beim manuellen Rechnen als auch beim Lösen von Gleichungen mit dem Computer relevant.
Gelegentlich möchte/muss man Ungleichungen umformen. Dabei ist zu beachten, dass manche Umformschritte, die bei Gleichungen zu einer äquivalenten Gleichung führen, bei Ungleichungen nur mit Vorsicht zu nutzen sind. Beispielsweise muss bei der Multiplikation beider Seiten der Ungleichung mit einer negativen Zahl das Relationszeichen “gedreht” werden (aus ≤ wird ≥ und umgekehrt; analog für strenge Ungleichheit). Allgemein gilt:
Für weitere Beispiele und Erläuterungen zur Monotonie von Funktionen sei auf das entsprechende OMB+-Kapitel verwiesen.
Ist T eine Periode einer Funktion, so genügt die Betrachtung der Funktion auf dem Intervall [0,T). Auf dem Rest der reellen Achse ist das Verhalten der Funktion vollständig durch ihr Verhalten auf diesem Intervall bestimmt.
Wichtige periodische Funktionen sind die Sinus- und die Cosinus-Funktion (siehe unten) sowie darauf basierende komplexere Funktionen.
schreiben, wenn man g(x):=f(x)−y setzt. Beim Lösen von Gleichungen mit dem Computer stehen oft nur Funktionen für die Nullstellenbestimmung zur Verfügung, sodass Gleichungen, wie eben gezeigt, entsprechend umgeformt werden müssen.
Nullstellen von Funktionen können beispielsweise mit scipy.optimize.fsolve aus dem Python-Paket SciPy numerisch berechnet werden. Beachte, dass stets nur eine Nullstelle geliefert wird, auch wenn es mehrere gibt. Welche Nullstelle man erhält, kann man durch Vorgabe einer groben Schätzung der Nullstelle steuern.
Das symbolische Lösen von Gleichungen ist mit SymPy möglich. Für das obige Beispiel:
import sympy
x = sympy.symbols('x')
sympy.solve(x ** 2 + x + 1 - sympy.Rational(3, 2), x)
[-1/2 + sqrt(3)/2, -sqrt(3)/2 - 1/2]
Beim symbolischen Rechnen erhält man üblicherweise alle Lösungen. Jedoch werden nicht immer Lösungen gefunden, obwohl sie existieren. Beim numerischen Rechnen hingegen erhält man praktisch immer wenigstens eine Lösung (sofern eine existiert).
Die Betrachtung von Grenzwerten bei Funktionen spielt eine zentrale Rolle in der Mathematik und ihren Anwendungen. So basiert z.B. der in Physik und anderen (Natur-)Wissenschaften ganz grundlegende Begriff der Differenzierbarkeit einer Funktion auf der Betrachtung gewisser Grenzwerte.
Grenzwerte bei Funktionen sind sehr ähnlich zu Grenzwerten bei Zahlenfolgen, jedoch gibt es unterschiede im Detail, denn der kontinuierliche Charakter der reellen Zahlen erlaubt auch andere Grenzübergänge als nur “→∞”.
Nicht jede Funktion hat Grenzwerte im Unendlichen. Beispielsweise existieren die beiden Grenzwerte nicht für (nicht konstante) periodische Funktionen. Auch können die Grenzwerte ∞ oder −∞ sein; in diesem Fall sagt man ebenfalls, dass die Grenzwerte nicht (als Zahl) existieren.
Ein relativ häufiges Phänomen sind Funktionen mit Polstellen. Für eine Funktion f:[a,b]∖{u}→R heißt uPolstelle, wenn die einseitigen Grenzwerte bei Annäherung an diese Stelle nur im Sinne von ±∞ existieren. Da Funktionen in der Praxis fast immer Messgrößen (Temperatur, Länge, Druck, Kosten,...) beschreiben, erscheinen Polstellen eher unnatürlich und deren Auftreten entsprechend unwahrscheinlich. Sie sind jedoch ein wichtiges Modellierungswerkzeug!
Der Begriff des Grenzwerts spielt auch bei Funktionen mehrerer Veränderlicher eine Rolle. Dann ist jedoch nur der (allseitige) Grenzwert bei Annäherung an eine Stelle x0∈Rn sinnvoll einführbar. Die dazu benötigte Konvergenz einer Punktfolge (xk)k∈N in Rn gegen x0 ist gleichbedeutend mit der Konvergenz jeder einzelnen Koordinatenfolge (vgl. auch Aufgabe 3.6(c) in Übung 3). Schreiben wir jeden Punkt xk als
Umganssprachlich formuliert bedeutet dies, dass völlig unabhängig davon wie man sich der Stelle x0 annähert, das Verhalten der Funktionswerte immer gleich ist. Hier ein Gegenbeispiel:
Stetigkeit einer Funktion f:R→R bedeutet anschaulich, dass man den Graph der Funktion ohne Absetzen mit einem Stift zeichnen kann, der Graph also beispielsweise keine Sprünge aufweist. Unbedingt zu beachten ist, dass Stetigkeit nur Aussagen zum Verhalten der Funktion in ihrem Definitionsbereich macht. Der Definitionsbereich selbst kann aber beispielsweise Lücken haben.
Unstetigkeitsstellen bei Funktionen einer reellen Veränderlichen sind im Wesentlichen entweder Polstellen (vgl. Funktion g im Beispiel) oder Sprungstellen (links- und rechtsseitige Grenzwerte existieren, stimmen aber nicht beide mit dem Funktionswert überein). Für Funktionen mehrerer Veränderlicher ist die Klassifikation von Unstetigkeitsstellen nicht mehr so einfach machbar.
Der Begriff der Stetigkeit ist innerhalb der Mathematik von enormer Bedeutung, wird aber bei der täglich Arbeit im Kontext von Anwendungsproblemen nur am Rande direkt benötigt. Die Wichtigkeit des Begriffs resultiert aus der Tatsache, dass bei stetigen Funktionen der Funktionswert an einer Stelle auch Informationen über die Funktionswerte an benachbarten Stellen liefert. Insbesondere mit Blick auf den Computereinsatz, bei dem Funktionen stets nur an endlich vielen Stellen ausgewertet werden können, ist Stetigkeit eine Art Minimalforderung, um eine Chance auf brauchbare Resultate zu haben. Beispiele für das Auftreten des Stetigkeitsbegriffs in anwendungsbezogenen Situationen:
Viele mathematische Aussagen gelten nur, wenn die beteiligten Funktionen stetig sind. So ist Stetigkeit beispielsweise eine wichtige Voraussetzung (aber nicht die einzige!) für die Existenz von Lösungen zu Optimierungsproblemen. Bei der mathematischen Modellierung von praktischen Fragestellungen ist deshalb darauf zu achten, dass die in einem Modell auftretenden Funktionen möglichst stetig sind.
Beim Rechnen mit Computer oder Taschenrechner oder auch beim manuellen Rechnen mit gemessenen und somit fehlerbehafteten Werten werden die Berechnungen stets mit gerundeten Werten durchgeführt. Das Ausführen von Berechnungen kann man als Auswerten einer geeigneten Funktion an einer Stelle interpretieren. Die Stetigkeit einer solchen Funktion garantiert, dass die Funktionswerte an den gerundeten Stellen nicht zu sehr von den Funktionswerten an den (unbekannten) exakten Stellen abweichen. Wie groß die Rundungsfehler sein dürfen, damit die Abweichungen in den Funktionswerten nicht zu groß werden, ist eine wichtige Frage. Dieser werden wir später nachgehen, wenn wir die geeigneten mathematischen Werkzeuge zur Beantwortung zur Verfügung haben.
Fotografische Bilddaten werden heute praktisch immer in stark komprimierter Form gespeichert. Welche Kompressionsverfahren in Frage kommen und wie stark ein Bild ohne größere Qualitätsverluste komprimiert werden kann, hängt auch an den Stetigkeitseigenschaften des kontinuierlichen (d.h. nicht in Pixel zerlegten) Bildes. Für den heute üblichen JPEG-Standard zur Bilddatenkompression kann man grob formulieren: je “stetiger” das Bild, desto stärker kann ohne nennenswerte Qualitätsverluste komprimiert werden.
Elementare Funktionen und ihre Eigenschaften wurden im Rahmen der Schulmathematik behandelt. Deshalb verweisen wir zur Wiederholung auf das entsprechenden Kapitel von OMB+ und gehen hier nur auf einzelne Beispiele und Aspekte nochmal genauer ein:
heißen Polynom. Dabei ist die gegebene Zahl n∈N der Grad des Polynoms und die gegebenen n+1 Zahlen a0,a1,…,an∈R sind die Koeffizienten des Polynoms.
Jedes Polynom hat höchstens n Nullstellen. Jeder Polynomnullstelle kann eine sogenannte Vielfachheit zugeordnet werden: Die Polynomnullstelle x0 hat die Vielfachheitk∈N, wenn man das Polynom in der Form
schreiben kann und k die größte Zahl ist, die eine solche Darstellung erlaubt. Der Faktor x−x0 wird auch als Linearfaktor bezeichnet. Sind x1,…,xm die Nullstellen des Polynoms f und k1,…,km die zugehörigen Vielfachheiten, so gilt
f(x)=(x−x1)k1⋯(x−xm)km(Polynom ohne Nullstellen).
heißen linear. Dabei sind a1,…,an∈R gegebene Zahlen.
Für n=2 ist der Graph einer linearen Funktion stets eine Ebene in R3. Für n>2 bezeichnet man die Graphen linearer Funktionen als Hyperebenen (in Rn+1).
Lineare Funktionen werden aufgrund ihrer einfachen Struktur gern als näherungsweiser Ersatz für kompliziertere Funktionen verwendet.
Häufig benötigte Zahlen, deren direkte Erklärung zu viel Zeit benötigt, bekommen in der Mathematik üblicherweise einen Name. So benötigt man zu einem gegebenen Winkel z.B. sehr oft die Zahlen, die wir als Cosinus und Sinus des Winkels kennen. Cosinus und Sinus eines Winkels sind gerade die x- bzw. y-Koordinate des Punktes, der entsteht indem man die Entfernung 1 vom Koordinatenursprung aus entlang eines Strahls mit Winkel φ zur (positiven) x-Achse zurücklegt.
Cosinus und Sinus geben die x- und die y-Koordinate eines Punktes auf dem Einheitskreis in Abhängigkeit des Winkels φ zwischen dem Strahl vom Ursprung durch den Punkt und der x-Achse an.
Beträgt die Entfernung des Punktes nicht 1, sondern allgemeiner r>0, so ergeben sich die Koordinaten als
Die Darstellung eines Punktes in der Ebene durch Abstand r>0 zum Ursprung und Winkel φ∈[0,2π) zur x-Achse bezeichnet man als Polarkoordinaten-Darstellung des Punktes. Sie wird insbesondere in der Physik gern verwendet (Drehbewegungen und andere periodische Vorgänge), spielt aber beispielsweise auch in der Geodatenverarbeitung eine Rolle (diverse Kartenprojektionen, z.B. Azimuthalprojektionen).
Tangens und Cotangens sind gerade der Anstieg des Strahls durch Ursprung und Punkt bzw. das Reziproke des Anstiegs.
Sinus und Cosinus können auch für Winkel außerhalb von [0,2π) bestimmt werden, indem der fragliche Winkel durch Verschiebung um Vielfache von 2π in den Bereich [0,2π) gebracht wird. Die so entstehende Sinusfunktion und die Cosinusfunktion sind auf ganz R definiert und haben beide den Wertebereich [−1,1].
Sinusfunktion und Cosinusfunktion sind nicht monoton auf [0,2π). Auf geeigneten Teilintervallen sind sie jedoch streng monoton, sodass dort eine Umkehrfunktion existiert. Mit arcsin bezeichnet man die Umkehrfunktion der Sinusfunktion auf dem Intervall [−2π,2π]. Die Umkehrfunktion der Cosinusfunktion auf dem Intervall [0,π] wird als arccos bezeichnet. Für den Tangens wiederum existiert eine Umkehrfunktion auf [−2π,2π], die mit arctan bezeichnet wird. Eine Umkehrfunktion des Cotangens kann analog eingeführt werden, spielt aber nur sehr selten eine Rolle.
mit der Euler’schen Zahl e≈2.718 wird als Exponentialfunktion bezeichnet. Sie taucht (meist unerwartet) in ganz vielen Situationen in praktisch allen Teilbereichen der Mathematik auf. Wir werden ihr insbesondere bei der Differentialrechnung und bei der Wahrscheinlichkeitsrechnung begegnen.
Die Exponentialfunktion ist streng monoton wachsend und besitzt somit eine Umkehrfunktion. Diese wird als (natürliche) Logarithmusfunktion bezeichnet und mit dem Symbol ln abgekürzt. Es gilt also stets