# Numerische Differentiation

In der Numerischen Mathematik bezeichnet man mit numerischer Differentiation die näherungsweise Berechnung der Ableitung aus gegebenen Funktionswerten, meist mittels eines Differenzenquotienten. Dies ist nötig, falls die Ableitungsfunktion nicht gegeben ist oder die Funktion selbst nur indirekt, beispielsweise über Messwerte, zur Verfügung steht. Im Gegensatz dazu wird beim automatischen Differenzieren der Code, der die betrachtete Funktion definiert, um eine Ableitungsfunktion erweitert.
Alternativ kann man auch differenzierbare Approximationen von Funktionen wie zum Beispiel kubische Smoothing Splines verwenden. Ist man nicht am gesamten Funktionsverlauf, sondern nur an einzelnen Stellen interessiert, so existieren spezielle Formeln.

## Differenzenquotient

Ein naheliegender Ansatz ist die Verwendung des Vorwärtsdifferenzenquotienten:
    $f'(x)={\frac {f(x+h)-f(x)}{h}}+{\mathcal {O}}(h)$.
${\mathcal {O}}(h)$ beschreibt, dass der Fehler linear mit der Schrittweite $h$ anwächst. Für weitere Details der ${\mathcal {O}}$-Notation siehe Landau-Symbole. Ist der Abstand (h) der Funktionswerte gering, so wäre bei beliebig genauer Rechnung die Näherung zunächst besser. Allerdings tritt bei der Berechnung mittels Gleitkommazahlen Auslöschung auf, weswegen das gewählte h von der Maschinengenauigkeit abhängige Schranken nicht unterschreiten darf.
Eine bessere Näherung als den Vorwärtsdifferenzenquotient erhält man durch Verwendung des zentralen Differenzenquotienten:
    $f'(x)={\frac {f(x+h)-f(x-h)}{2h}}+{\mathcal {O}}(h^{2})$
Für den zentralen Differenzenquotienten ist die optimale Schrittweite $h$ in der Größenordnung der dritten Wurzel der Maschinengenauigkeit.
Unter Benutzung von Taylorreihenentwicklungen höherer Ordnung lassen sich Finite-Differenzenquotienten mit kleinerem Fehlerterm herleiten, wenn $|h|<1$:
    $f'(x)={\frac {1}{12h}}\left(-f(x+2h)+8f(x+h)-8f(x-h)+f(x-2h)\right)+{\mathcal {O}}(h^{4})$

## Numerische Differentiation unter Verwendung komplexer Variable

Ein Problem bei der Anwendung eines klassischen Differenzenquotienten ist die Wahl einer optimalen Schrittweite $h$. Ein zu großes $h$ führt zu Rundungsfehlern, während ein zu kleines $h$ zu Auslöschung führt. Die numerische Auslöschung infolge der Subtraktion kann durch die komplexwertige Approximation
    $f'(x)={\frac {\Im (f(x+\mathrm {i} h))}{h}}+{\mathcal {O}}(h^{2})$
verhindert werden.

### Herleitung

Wir betrachten die Taylorreihe von $f(x+h)$ am Entwicklungspunkt $x$
    $f(x+h)=f(x)+hf'(x)+{\frac {h^{2}f''(x)}{2}}+{\frac {h^{3}f'''(x)}{6}}+\dots$
Abbruch nach dem linearen Glied und Umstellung nach $f'(x)$ liefert den oben genannten Vorwärtsdifferenzenquotienten. Wir ersetzen nun die reelle Schrittweite $h$ durch die imaginäre Schrittweite $\mathrm {i} h$ und erhalten
    $f(x+\mathrm {i} h)=f(x)+\mathrm {i} hf'(x)-{\frac {h^{2}f''(x)}{2}}-{\frac {\mathrm {i} h^{3}f'''(x)}{6}}+\dots$
Betrachten wir nun nur den Imaginäranteil dieser Taylorreihe, so erhalten wir
    $\Im (f(x+\mathrm {i} h))=hf'(x)-{\frac {h^{3}f'''(x)}{6}}+\dots$
was bei Abbruch nach dem linearen Glied auf die oben angegebene Näherung der Ableitung mit dem Fehler ${\mathcal {O}}(h^{2})$ führt.

## Numerische Differentiation verrauschter Daten

In praktischer Anwendung sind die Funktionswerte oft verrauscht. Das einfache Anwenden finiter Differenzenmethoden auf verrauschte Daten führt dazu, dass die erhaltene numerische Ableitung starke Ausreißer hat. Es gibt für verrauschte Daten spezielle Methoden um die Ableitung dennoch zuverlässig zu berechnen, beispielsweise kann die Datenreihe zunächst geglättet werden oder eine approximierende Funktion durch Ausgleichungsrechnung gefunden werden und anschließend die numerische Differentiation durchgeführt werden. Bei der Kantendetektion werden beispielsweise Sobel-Operatoren verwendet, die gleichzeitig eine Glättung durchführen. Eine weitere Möglichkeit bietet die Verwendung von geglätteten Splines (auch Ausgleichssplines).