# Romberg-Integration

Die Romberg-Integration ist ein Verfahren zur numerischen Bestimmung von Integralen und wurde von Werner Romberg 1955 entwickelt. Sie ist eine Verbesserung der (Sehnen)-Trapezregel durch Extrapolation.

## Grundgedanke

Die Romberg-Integration basiert auf der Richardson-Extrapolation zum Limes über die Schrittweite einer summierten Quadraturformel, wie beispielsweise der Trapezregel. Die Trapezregel ist hier besonders zu erwähnen, da sie einfach zu berechnen ist und zudem eine Entwicklung in quadratischen Potenzen der Schrittweite besitzt, also eine Extrapolation in Quadraten der Schrittweite möglich ist, die deutlich schneller konvergiert als die einfache Extrapolation zum Limes. Mit Schrittweite h ist hier die Breite der Trapeze bei der Trapezregel gemeint.
Der aufwändige Teil der numerischen Integration sind oft die Funktionsauswertungen. Um deren Anzahl minimal zu halten, ist es somit ratsam, einen Schrittweitenverlauf zu wählen, der die Weiterverwendung von bereits berechneten Funktionswerten erlaubt. Ein Beispiel für eine solche Schrittweite wäre $\textstyle {h_{n}={\frac {b-a}{2^{n-1}}}}$, das zugleich die Bedingungen für eine konvergente Extrapolation erfüllt. Also
$1,{\frac {1}{2}},{\frac {1}{4}},{\frac {1}{8}},{\frac {1}{16}},{\frac {1}{32}},\dots$
Bei dieser sogenannten Romberg-Folge wächst die Anzahl der benötigten Funktionsauswertungen bei großen n schnell an, was nicht immer erwünscht ist.
Um diesem abzuhelfen, kann auch die Bulirsch-Folge verwendet werden:
$1,{\frac {1}{2}},{\frac {1}{3}},{\frac {1}{4}},{\frac {1}{6}},{\frac {1}{8}},\dots$
Hier werden Glieder mit ${\frac {2}{3}}$ zwischengeschaltet.

## Rechenvorschrift

Man nähert das Integral $I[f]=\int _{a}^{b}f(x)\,\mathrm {d} x$ mit der Hilfe von Trapezsummen $T=T(h)$ mit verschiedenen Schrittweiten $h$ an. Dabei nimmt man an, dass der Grenzwert $I[f]=\lim _{h\,\to \,0}T(h)$ erfüllt wird.
Die Rechenvorschrift der Romberg-Integration lautet nun wie folgt.
* Bestimme die Trapezsummen $T=T(h)$ zu Schrittweiten $\left(h_{i}\right)_{i=1,\,\ldots \,,m}$. Dies definiert $T_{i,1}:=T(h_{i})\,,i=1,\,\ldots \,,m\,.$
* Mittels des Neville-Aitken-Schemas wird das Interpolationspolynom bei $h=0$ ausgewertet $T_{i,k}:=T_{i,k-1}+{\frac {T_{i,k-1}-T_{i-1,k-1}}{\left({\frac {h_{i-k+1}}{h_{i}}}\right)^{2}-1}}\,\quad {\text{mit}}\quad 2\leq k\leq i\,.$
Anmerkungen
* Im ersten Schritt berechnet man also die Datenpunkte $\left(h_{i},T(h_{i})\right)_{i=1,\,\ldots \,,m}$. Aufgrund der asymptotischen Fehlerentwicklung der Trapezsumme (es kommen nur Potenzen von $h^{2}$ vor) wird im zweiten Schritt ein Interpolationspolynom zu den Datenpunkten $\left(h_{i}^{2},T(h_{i})\right)_{i=1,\,\ldots \,,m}$ benutzt.
* Im zweiten Schritt wird nicht das vollständige Interpolationspolynom bestimmt, sondern nur die Auswertung an einem bestimmten Punkt: $h=0$. Dies funktioniert besonders effizient mit dem Neville-Aitken-Schema.
* Das Neville-Aitken-Schema liefert eine Approximation des Integrals mittels $T_{m,m}\approx I[f]$.
* Die Durchführung des Neville-Aitken-Schema muss in der „richtigen“ Reihenfolge geschehen. Das folgende Extrapolationstableau soll dies verdeutlichen (man geht spaltenweise vor: zuerst die erste Spalte bestimmen, dann die zweite etc.)
    ${\begin{matrix}T_{1,1}\\&\searrow \\T_{2,1}&\rightarrow &T_{2,2}\\\vdots &&&\ddots \\T_{k-1,1}&\rightarrow &\cdots &\rightarrow &T_{k-1,k-1}\\&\searrow &&\searrow &&\searrow \\T_{k,1}&\rightarrow &\cdots &\rightarrow &T_{k,k-1}&\rightarrow &T_{k,k}\,.\end{matrix}}$