„Hermiteinterpolation" – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Versionsgeschichte interaktiv durchsuchen
[gesichtete Version] [ungesichtete Version]
← Zum vorherigen Versionsunterschied Zum nächsten Versionsunterschied →
Inhalt gelöscht Inhalt hinzugefügt
Zeile 41: Zeile 41:


=== Hermite-Genocchi-Formel ===
=== Hermite-Genocchi-Formel ===
Die '''Hermite-Genocchi-Formel''' bildet die Grundlage der Hermiteinterpolation.(削除) Sie liefert eine Integraldarstellung für die [[Dividierte Differenzen|dividierten Differenzen]] aus dem Newtonalgorithmus der Polynominterpolation: (削除ここまで)
Die '''Hermite-Genocchi-Formel''' bildet die Grundlage der Hermiteinterpolation.
Die Voraussetzung des Satzes sind:
* <math>f</math> ist [[Differenzierbarkeit#Stetige_Differenzierbarkeit_und_h.C3.B6here_Ableitungen| <math>k</math>-mal stetig differenzierbar]]: <math>f \in C^k([a,b]), \quad k \in \N</math>
* <math>k+1</math> Stützstellen: <math>x_0, \ldots, x_k \in [a,b].</math>
Nun liefert die Formel eine Integraldarstellung für die [[Dividierte Differenzen|dividierten Differenzen]] aus dem Newtonalgorithmus der Polynominterpolation:
:<math>f[x_0,\ldots,x_k] = \int_{\Sigma^k}f^{(k)}\left(x_0+\sum_{i=1}^k s_i(x_i-x_0)\right),円ds ,</math>
:<math>f[x_0,\ldots,x_k] = \int_{\Sigma^k}f^{(k)}\left(x_0+\sum_{i=1}^k s_i(x_i-x_0)\right),円ds ,</math>
mit dem k-dimensionalen Einheitssimplex
mit dem k-dimensionalen (追記) [[Simplex_(Mathematik)| (追記ここまで)Einheitssimplex(追記) ]]: (追記ここまで)
:<math> \;\Sigma^k = \left\{s\in \R^k,,円 \forall i: s_i \ge 0, \sum_{i=1}^k s_i \le 1 \right\}</math>
:<math> \;\Sigma^k = \left\{s\in \R^k,,円 \forall i: s_i \ge 0, \sum_{i=1}^k s_i \le 1 \right\}(追記) . (追記ここまで)</math>


Man beweist diese Identität durch vollständige Induktion.<ref>{{Literatur
Man beweist diese Identität durch vollständige Induktion.<ref>{{Literatur
Zeile 60: Zeile 64:


Im Gegensatz zu den dividierten Differenzen taucht im Integral in dieser Formel kein Quotient mit der Differenz zweier Stützstellen auf – rein rechnerisch ist es also möglich, konfluente (zusammenfallende) Stützstellen einzusetzen. Stellt man die Formel als
Im Gegensatz zu den dividierten Differenzen taucht im Integral in dieser Formel kein Quotient mit der Differenz zweier Stützstellen auf – rein rechnerisch ist es also möglich, konfluente (zusammenfallende) Stützstellen einzusetzen. Stellt man die Formel als
:<math>f[x_0,\ldots,x_k] = \frac{1}{k!}f^{(k)}((削除) x_0 (削除ここまで))</math>
:<math>f[x_0,\ldots,x_k] = \frac{1}{k!}f^{(k)}((追記) x^* (追記ここまで))(追記) , \quad \mathrm{falls} \quad x_0=\ldots=x_k=x^* (追記ここまで)</math>
dar, lässt sich diese Identität einfach beweisen.
dar, lässt sich diese Identität einfach beweisen.



Version vom 26. August 2017, 12:03 Uhr

In der numerischen Mathematik ist die Hermiteinterpolation (benannt nach Charles Hermite) ein Interpolationsverfahren zur Polynominterpolation, das auch Ableitungen der zu interpolierenden Funktion berücksichtigt.

Vorbereitung

Motivation

Splineinterpolation ohne Berücksichtigung der Steigung. Man sieht klar den „Knick" bei x = 0 , 5 {\displaystyle x=0{,}5} {\displaystyle x=0{,}5}

Ein Ergebnis für die klassische Polynominterpolation besagt, dass äquidistante Stützstellen – also gleicher Abstand zwischen den bekannten Funktionswerten – zu einem exponentiellen Anstieg der Kondition der Polynominterpolation führt, ihren Fehler also drastisch erhöht.[1]

In der Praxis haben äquidistante Messpunkte aber gewisse Vorteile und sind manchmal auch unvermeidbar. Man benötigt daher ein Interpolationsverfahren, das auch für diesen Fall nur kleine Fehler erzeugt. Ein Ansatz ist die Splineinterpolation, bei der das Gebiet, auf dem eine Funktion interpoliert werden soll, durch ein Gitter zerteilt und in jedem der entstandenen Intervalle eine Polynominterpolation durchgeführt wird.

Splineinterpolation mit Berücksichtigung der Steigung

Wählt man dabei den „naiven", Newtonschen Ansatz, stimmen die Ableitungen der Interpolierten an den Gitterpunkten nicht notwendigerweise überein – folglich ist die Interpolierte an diesen Punkten in der Regel nicht (stetig) differenzierbar. Es muss nicht bei „Ecken", wie im Beispiel rechts, bleiben. Es könnte zum Beispiel auch passieren, dass auf zwei benachbarten Intervallen die Interpolierten sich „von oben" dem Gitterpunkt nähern und so tatsächlich eine – anschaulich – „Spitze" entsteht.

Da dieses Verhalten offensichtlich unerwünscht ist, versucht man, die Übergänge glatt zu gestalten, indem man neben den Funktionswerten in den Gitterpunkten weiterhin beliebig viele Ableitungen als bekannt voraussetzt und die Interpolationspolynome so wählt, dass die Ableitungen in dem gemeinsamen Punkt übereinstimmen. Praktisch reicht es, die erste Ableitung gleichzusetzen, um einen „glatt" aussehenden Graphen zu erhalten.

Diese Aufgabe lässt sich analog zur Problemstellung in der klassischen Polynominterpolation schriftlich lösen. Als Beispiel dient hier die Aufgabe,

f ( 1 ) = 1 , f ( 1 ) = 0 , f ( 2 ) = 0 {\displaystyle f(-1)=-1,,円f'(-1)=0,,円f(2)=0} {\displaystyle f(-1)=-1,,円f'(-1)=0,,円f(2)=0} in P 2 {\displaystyle {\mathcal {P}}_{2}} {\displaystyle {\mathcal {P}}_{2}} zu interpolieren.

Man definiert

p ( x ) := a 0 + a 1 x + a 2 x 2 {\displaystyle p(x):=a_{0}+a_{1}\cdot x+a_{2}\cdot x^{2}} {\displaystyle p(x):=a_{0}+a_{1}\cdot x+a_{2}\cdot x^{2}} und leitet ab zu p ( x ) := a 1 + a 2 2 x {\displaystyle p'(x):=a_{1}+a_{2}\cdot 2x} {\displaystyle p'(x):=a_{1}+a_{2}\cdot 2x}.

Das Gleichungssystem wird damit zu

( 1 1 1 0 1 2 1 2 4 ) ( a 0 a 1 a 2 ) = ( 1 0 0 ) . {\displaystyle {\begin{pmatrix}1&-1&1\0円&1&-2\1円&2&4\end{pmatrix}}\cdot {\begin{pmatrix}a_{0}\\a_{1}\\a_{2}\end{pmatrix}}={\begin{pmatrix}-1\0円\0円\end{pmatrix}}.} {\displaystyle {\begin{pmatrix}1&-1&1\0円&1&-2\1円&2&4\end{pmatrix}}\cdot {\begin{pmatrix}a_{0}\\a_{1}\\a_{2}\end{pmatrix}}={\begin{pmatrix}-1\0円\0円\end{pmatrix}}.}

Lösen nach a = ( a 0 , a 1 , a 2 ) T {\displaystyle a=(a_{0},a_{1},a_{2})^{T}} {\displaystyle a=(a_{0},a_{1},a_{2})^{T}} bringt die gesuchten Koeffizienten.

Dieser Lösungsansatz hat den Nachteil, dass er in der Komplexitätsklasse O ( n 3 ) {\displaystyle {\mathcal {O}}(n^{3})} {\displaystyle {\mathcal {O}}(n^{3})} liegt und damit langsam ist. Es wäre wünschenswert, die Newton-Basis von der klassischen Polynominterpolation übernehmen zu können. Dieser Ansatz schließt allerdings zusammenfallende Stützstellen aus und ist daher nicht ohne Modifikation anwendbar. Daher erweitert man ihn zum Hermitschen Interpolationsverfahren.

Hermite-Genocchi-Formel

Die Hermite-Genocchi-Formel bildet die Grundlage der Hermiteinterpolation. Die Voraussetzung des Satzes sind:

  • f {\displaystyle f} {\displaystyle f} ist k {\displaystyle k} {\displaystyle k}-mal stetig differenzierbar: f C k ( [ a , b ] ) , k N {\displaystyle f\in C^{k}([a,b]),\quad k\in \mathbb {N} } {\displaystyle f\in C^{k}([a,b]),\quad k\in \mathbb {N} }
  • k + 1 {\displaystyle k+1} {\displaystyle k+1} Stützstellen: x 0 , , x k [ a , b ] . {\displaystyle x_{0},\ldots ,x_{k}\in [a,b].} {\displaystyle x_{0},\ldots ,x_{k}\in [a,b].}

Nun liefert die Formel eine Integraldarstellung für die dividierten Differenzen aus dem Newtonalgorithmus der Polynominterpolation:

f [ x 0 , , x k ] = Σ k f ( k ) ( x 0 + i = 1 k s i ( x i x 0 ) ) d s , {\displaystyle f[x_{0},\ldots ,x_{k}]=\int _{\Sigma ^{k}}f^{(k)}\left(x_{0}+\sum _{i=1}^{k}s_{i}(x_{i}-x_{0})\right),円ds,} {\displaystyle f[x_{0},\ldots ,x_{k}]=\int _{\Sigma ^{k}}f^{(k)}\left(x_{0}+\sum _{i=1}^{k}s_{i}(x_{i}-x_{0})\right),円ds,}

mit dem k-dimensionalen Einheitssimplex:

Σ k = { s R k , i : s i 0 , i = 1 k s i 1 } . {\displaystyle \;\Sigma ^{k}=\left\{s\in \mathbb {R} ^{k},,円\forall i:s_{i}\geq 0,\sum _{i=1}^{k}s_{i}\leq 1\right\}.} {\displaystyle \;\Sigma ^{k}=\left\{s\in \mathbb {R} ^{k},,円\forall i:s_{i}\geq 0,\sum _{i=1}^{k}s_{i}\leq 1\right\}.}

Man beweist diese Identität durch vollständige Induktion.[2]

Im Gegensatz zu den dividierten Differenzen taucht im Integral in dieser Formel kein Quotient mit der Differenz zweier Stützstellen auf – rein rechnerisch ist es also möglich, konfluente (zusammenfallende) Stützstellen einzusetzen. Stellt man die Formel als

f [ x 0 , , x k ] = 1 k ! f ( k ) ( x ) , f a l l s x 0 = = x k = x {\displaystyle f[x_{0},\ldots ,x_{k}]={\frac {1}{k!}}f^{(k)}(x^{*}),\quad \mathrm {falls} \quad x_{0}=\ldots =x_{k}=x^{*}} {\displaystyle f[x_{0},\ldots ,x_{k}]={\frac {1}{k!}}f^{(k)}(x^{*}),\quad \mathrm {falls} \quad x_{0}=\ldots =x_{k}=x^{*}}

dar, lässt sich diese Identität einfach beweisen.

Offensichtlich kann man folglich durch mehrfaches Verwenden von Stützstellen Ableitungen in der Interpolation berücksichtigen.

Also gilt der folgende Satz:

Hermiteinterpolation

Sei f C k ( [ α , β ] ) {\displaystyle f\in C^{k}([\alpha ,\beta ])} {\displaystyle f\in C^{k}([\alpha ,\beta ])} und seien α x 0 x 1 x n β {\displaystyle \alpha \leq x_{0}\leq x_{1}\leq \cdots \leq x_{n}\leq \beta } {\displaystyle \alpha \leq x_{0}\leq x_{1}\leq \cdots \leq x_{n}\leq \beta } reelle Stützstellen. Dann erfüllt das Polynom

p ( x ) := i = 0 n f [ x 0 , , x i ] j = 0 i 1 ( x x j ) {\displaystyle p(x):=\sum _{i=0}^{n}f[x_{0},\ldots ,x_{i}]\prod _{j=0}^{i-1}(x-x_{j})} {\displaystyle p(x):=\sum _{i=0}^{n}f[x_{0},\ldots ,x_{i}]\prod _{j=0}^{i-1}(x-x_{j})}

die Interpolationsbedingungen

f ( ξ ) ( x i ) = p ( ξ ) ( x i ) x i ( ξ   = ^ ξ te Wiederholung einer Stützstelle ) . {\displaystyle f^{(\xi )}(x_{i})=p^{(\xi )}(x_{i}),円\forall x_{i}\quad (\xi \ {\mathrel {\widehat {=}}},円\xi {\text{te Wiederholung einer Stützstelle}}).} {\displaystyle f^{(\xi )}(x_{i})=p^{(\xi )}(x_{i}),円\forall x_{i}\quad (\xi \ {\mathrel {\widehat {=}}},円\xi {\text{te Wiederholung einer Stützstelle}}).}

Darüber hinaus ist diese Lösung eindeutig.

Fehlerabschätzung

Für den Fehler der Hermiteinterpolierten gilt nach dem Fehler in der Taylorentwicklung die obere Schranke

f ( x ) p ( x ) = f ( n + 1 ) ( ζ ) ( n + 1 ) ! i = 0 n ( x x i ) , ζ [ α , β ] , f C n + 1 {\displaystyle f(x)-p(x)={\frac {f^{(n+1)}(\zeta )}{(n+1)!}}\prod _{i=0}^{n}(x-x_{i}),\;\zeta \in [\alpha ,\beta ],\;f\in C^{n+1}} {\displaystyle f(x)-p(x)={\frac {f^{(n+1)}(\zeta )}{(n+1)!}}\prod _{i=0}^{n}(x-x_{i}),\;\zeta \in [\alpha ,\beta ],\;f\in C^{n+1}}

Im Falle des Gitters

x 0 = = x k < x k + 1 < < x n {\displaystyle x_{0}=\dots =x_{k}<x_{k+1}<\dots <x_{n}} {\displaystyle x_{0}=\dots =x_{k}<x_{k+1}<\dots <x_{n}}

gilt:

f ( x ) p ( x ) = f ( n + 1 ) ( ζ ) ( n + 1 ) ! ( x x 0 ) k + 1 i = k + 1 n ( x x i ) {\displaystyle f(x)-p(x)={\frac {f^{(n+1)}(\zeta )}{(n+1)!}}(x-x_{0})^{k+1}\prod _{i=k+1}^{n}(x-x_{i})} {\displaystyle f(x)-p(x)={\frac {f^{(n+1)}(\zeta )}{(n+1)!}}(x-x_{0})^{k+1}\prod _{i=k+1}^{n}(x-x_{i})}

Berechnung der Interpolierten

Zur praktischen Berechnung der Interpolierten verwendet man wie gehabt das Schema der dividierten Differenzen.

Im Fall x 0 = x 1 = = x k {\displaystyle x_{0}=x_{1}=\ldots =x_{k}} {\displaystyle x_{0}=x_{1}=\ldots =x_{k}} muss anstatt der dort verwendeten Formel

f [ x 0 , , x k ] = 1 k ! f ( k ) ( x 0 ) {\displaystyle f[x_{0},\ldots ,x_{k}]={\frac {1}{k!}}f^{(k)}(x_{0})} {\displaystyle f[x_{0},\ldots ,x_{k}]={\frac {1}{k!}}f^{(k)}(x_{0})}

berechnet werden.

Zu beachten ist, dass ferner einige Umsortierungen notwendig sind. Im Folgenden sei x 0 = = x i = = x k = = x n {\displaystyle x_{0}=\ldots =x_{i}=\ldots =x_{k}=\ldots =x_{n}} {\displaystyle x_{0}=\ldots =x_{i}=\ldots =x_{k}=\ldots =x_{n}}:

  • Statt f [ x i , , x k ] {\displaystyle f[x_{i},\ldots ,x_{k}]} {\displaystyle f[x_{i},\ldots ,x_{k}]} muss man die dividierte Differenz f [ x 0 , , x k i ] {\displaystyle f[x_{0},\ldots ,x_{k-i}]} {\displaystyle f[x_{0},\ldots ,x_{k-i}]} berechnen
  • Taucht in der Rekursion f [ x i ] {\displaystyle f[x_{i}]} {\displaystyle f[x_{i}]} auf, berechnet man stattdessen f [ x 0 ] {\displaystyle f[x_{0}]} {\displaystyle f[x_{0}]}
  • In allen Fällen, in denen die Formel aus dem ursprünglichen Neville-Aitken-Schema verwendet wird, ersetzt man jedes x i {\displaystyle x_{i}} {\displaystyle x_{i}} durch x 0 {\displaystyle x_{0}} {\displaystyle x_{0}}.

Pseudocode

Der Pseudocode soll verdeutlichen, wie man die verallgemeinerte Form der dividierten Differenzen berechnet. Listen werden im Folgenden als ab 1 indiziert angenommen.

xvals ← Stützstellen
yvals ← Funktionswerte f(x) und ggf. Ableitungen bei mehrfachen x-Werten
zvals ← { f(xvals[i]) | i ∈ 1..#xvals }
for i ← #xvals..1 do
 for ji..#xvals do
 if i = j then
 [xi..xj]fzvals[i]
 else if xvals[i] = xvals[j] then
 index ← Index des ersten Vorkommens von xvals[i] in xvals
 [xi..xj]fyvals[j - i + index] / (j-i)!
 else
 [xi..xj]f ← ([xi+1..xj]f - [xi..xj-1]f) / (xvals[j] - xvals[i])

Historie

Erstmals veröffentlichte Hermite seine Untersuchungen zur Hermiteinterpolation 1878 in: Sur la formule d'interpolation de Lagrange, Journal für die reine und angewandte Mathematik, Band 84, Seite 70-79[3]

Wikibooks: Hermiteinterpolation  – Lern- und Lehrmaterialien

Fehler bei Vorlage * Parametername unbekannt (Vorlage:Wikibooks): "3"

Literatur

  • Richard L. Burden, J. Douglas Faires: Numerische Methoden. Spektrum, Akad. Verlag, Heidelberg/ Berlin/ Oxford 2000, ISBN 3-8274-0596-3.

Einzelnachweise

  1. A. H. Turetskii: The bounding of polynomials prescribed at equally distributed points. In: Proc. Pedag. Inst. Vitebsk; 3; 1940.
    Siehe auch Runges Phänomen
  2. Ralf Kornhuber, Christof Schütte: Einführung in die Numerische Mathematik. Hrsg.: AG Numerische Mathematik. Freie Universität Berlin April 2008, 3.1.1 Hermite-Interpolation und Taylor’sche Formel, S. 39–45 (PDF, 2.4 MB – Vorlesungsskript). 
  3. Elliot Ward Cheney: Introduction to Approximation Theory, McGraw-Hill Book Company, 1966, Library of Congress Catalog Card Number 65-25916, ISBN 007-010757-2, Seite 225 + 242
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Hermiteinterpolation&oldid=168491148"