Next: 2.3.3 Fl�cheninhalt, Volumen, Schwerpunkt
Up: 2.3 Integration
Previous: 2.3.1 Oberfl�chenintegrale
Inhalt
Nachdem wir die beiden Formen der Oberfl�chenintegrale vorgestellt
haben und diese auf eine gemeinsame Form eines bivariaten Integrals
gebracht haben, werden wir eine Methode zur numerischen Berechnung
solcher bivariaten Integrale vorstellen. Siehe hierzu auch
[H�l98] und [KU98]. Zun�chst f�hren wir dazu eine
univariate Integrationsformel f�r
 |
(2.57) |
Abbildung 2.7:
Trapezregel
 |
ein. Zur numerischen Approximation dieses Integrals k�nnen wir
st�ckweise durch Polynome approximieren und die Integrale �ber diese
Polynome aufsummieren. Dazu zerlegen wir
durch die
�quidistanten St�tzstellen
in
Teilintervalle,
 |
(2.58) |
Approximieren wir, wie in Abbildung 2.7 gezeigt,
auf jedem Teilintervall durch eine lineare Funktion, erhalten wir nach
der Integration der linearen Funktionen die Trapezregel
:
 |
(2.59) |
Der Fehler der Trapezregel
zum exakten Wert
l��t sich asymptotisch durch folgendes Theorem beschreiben.
Theorem 2.3 (Euler-Maclaurin-Summationsformel)
Sei
![\in C^{2m}([a,b])](img500.png)
. Dann gilt
 |
(2.60) |
f�r
![t\in[a,b]](img502.png)
und den von

unabh�ngigen Konstanten
 |
(2.61) |
die �ber die Bernoulli Polynome

definiert werden:
 |
(2.62) |
Nach (2.60) kann der Fehler der Trapezregel durch
 |
(2.63) |
dargestellt werden. Dabei ist
beliebig, solange
. Die Konstanten
h�ngen dabei nicht von der
Schrittweite
, sondern nur von
selbst ab. Damit lassen sich
einzelne Fehlerterme �ber die Richardson-Extrapolation eliminieren,
Mit der Trapezregel berechnen wir also zun�chst
, wobei wir mit
Punkten anfangen und diese pro Schritt in
verdoppeln. Pro
Schritt in
verschwindet in
jeweils ein Fehlerterm
durch Kombination von
und
. Dieser Algorithmus wird
auch als Romberg-Algorithmus bezeichnet. Er l��t sich auch durch das
folgende Dreieckschema darstellen:
Aus diesem Algorithmus werden wir ein numerisches
Integrationsverfahren f�r bivariate Integrale
 |
(2.65) |
herleiten. F�r unsere Anwendung gen�gt es anzunehmen, da�
ein
zwei-dimensionales Intervall
in
ist.
Wir unterteilen beide Intervalle
und
in jeweils
bzw.
Teilintervalle und wenden die Trapezregel auf beide Integrale
getrennt an. Mit
und
ergibt dies die numerische Integrationsformel
Abbildung 2.8:
Bivariate Trapezregel
 |
Damit erhalten wir eine bivariate Integrationsformel aus dem
Tensorprodukt der univariaten Trapezregel. Wir legen dazu ein
zwei-dimensionales Gitter mit den Schrittweiten
,
�ber das
rechteckige Integrationsgebiet und multiplizieren die Funktionswerte
an den Knoten mit bestimmten Faktoren. Dabei m�ssen wir zwischen
Eckknoten, Randknoten und inneren Knoten unterscheiden. Die Faktoren
aus der Formel (2.66) sind in Abbildung 2.8
dargestellt.
Den Fehler f�r (2.66) k�nnen wir durch zweimaliges Anwenden von
Theorem 2.3 bestimmen. Danach gilt f�r
 |
(2.67) |
 |
(2.68) |
mit
und
. Uns interessiert aber nur
die allgemeine Form des Fehlers und dieser enth�lt wieder nur Terme
mit
,
 |
(2.69) |
Dabei h�ngen die
nur von
ab. Dies
entspricht (2.63) und wir k�nnen damit den
Romberg-Algorithmus (2.64) auch f�r die bivariate
Trapezregel verwenden.
Nun k�nnen wir den allgemeinen Algorithmus zur Berechnung eines
Integrals einer G-Spline-Funktion �ber einer G-Spline-Fl�che der
Form
![\sum_{i\in I} \iint_{[0,1]^2} F_i](img540.png) |
(2.70) |
angeben. Wir gehen davon aus, da� die Fl�che bereits �ber
Bézierfl�chenst�cke
f�r
gegeben ist. Die Funktion
wird auf jedem Bézierfl�chenst�ck
durch
repr�sentiert.
kann dabei wie oben beschrieben �ber ein Bézierkontrollnetz
gegeben sein. Es kann aber auch nur von der Oberfl�che selbst
abh�ngen. Wir m�ssen nur jeweils die Trapezregel, bzw. die in der
Trapezregel verwendete Funktion entsprechend w�hlen. F�r die bisher
vorgestellten Integrale geht dies aus den
Formeln (2.51) und (2.56) hervor.
Algorithmus 2.1
integrate |
Bivariater Romberg-Algorithmus |
- 1.
- Setze das Ergebnis value der Integration auf 0.
- 2.
- Berechne das Integral f�r jedes Bézierkontrollnetz bgs der
G-Spline-Fl�che separat �ber den Romberg-Algorithmus:
- (a)
- Initialisiere die Variablen f�r den Romberg-Algorithmus.
Dabei ist t ein Array der L�nge max_iter,
welche die maximale Anzahl der Iterationen angibt. n
gibt die Anzahl der St�tzstellen in einer Gitterrichtung an und
i wird als Iterationsz�hler auf 1 gesetzt.
- (b)
- Berechne die Trapezregel f�r die Intervalll�nge 1/(n-1)
pro Gitterrichtung (
n
St�tzstellen) und lege das Ergebnis in t[0] ab.
- (c)
- Wiederhole Folgendes, solange die gew�nschte Toleranz
prec nicht erreicht wurde oder die maximale Anzahl der
Iterationen erreicht wurde:
- i.
- Verdopple n.
- ii.
- Berechne die Trapezregel f�r die Intervalll�nge 1/(n-1)
pro Gitterrichtung (
n
St�tzstellen) und lege das Ergebnis in t[i] ab.
- iii.
- F�r j = i:-1:1 berechne die Romberg-Extrapolation
iterativ �ber
t[j-1] = (4
*
t[j] - t[j-1]) / (4
- 1).
- iv.
- Zur Bestimmung der Genauigkeit berechne den Betrag
der Differenz zwischen dem besten Wert der Extrapolation in
t[0] und dem besten Ergebnis der vorherigen Iteration.
- v.
- Erh�he i um 1.
- (d)
- Addiere das Ergebnis des Romberg-Algorithmus' zu value.
- 3.
- Das Ergebnis der Integration steht in value.
Es ist zun�chst zu beachten, da� wir das Array t von rechts
nach links f�llen. Damit ben�tigen wir nur ein einziges,
eindimensionales Array f�r die Extrapolation, in dem aus den alten
Werten die neuen berechnet werden. Im ersten Schritt wird das
Ergebnis der Trapezregel in ein noch nicht benutztes Element
t[i] des Arrays abgelegt und die Extrapolationswerte von
diesem Element aus bis t[0] eingetragen.
Die im Algorithmus verwendete Toleranz prec bezieht sich
dabei auf das Integral �ber eine einzelne Bézierfl�che. Durch
das Aufsummieren der Ergebnisse verringert sich die Toleranz
f�r das gesamte Integral. Bei
Bézierfl�chen ist sie nur noch
prec.
Die verwendete Trapezregel entspricht nat�rlich der bivariaten
Trapezregel (2.66), wobei im Algorithmus die Anzahl der
Intervalle
durch die Anzahl der St�tzstellen
ersetzt wurde. Es
gilt
. Je nach Integral kann
durch andere Funktionen
ersetzt werden. So verwenden wir z.B. f�r das Oberfl�chenintegral von
Vektorfeldern die Funktion
. Spezielle Integrale
stellen wir weiter unten vor.
Abbildung 2.9:
Funktionsauswertungen bei der bivariaten Trapezregel
 |
Weiter ist auch zu beachten, da� wir nach dem ersten Auswerten der
Trapezregel f�r die folgenden Auswertungen die Funktion nicht mehr an
allen St�tzpunkten berechnen m�ssen. Nachdem wir
jeweils
verdoppeln, ben�tigen wir nur noch die St�tzstellen
, bei denen wenigstens eine der beiden
Zahlen
und
ungerade ist. F�r die restlichen St�tzstellen
k�nnen wir das Ergebnis der vorherigen Trapezregel mit
multiplizieren. Die Punkte, an denen die Funktion noch ausgewertet
werden mu�, sind in Abbildung 2.9 gekennzeichnet.
Von den
St�tzstellen wird die Funktion dann nur noch an
St�tzstellen berechnet.
Eine m�gliche Verbesserung des Romberg-Algorithmus' w�re eine
adaptive Anpassung an den Approximationsfehler. Wir berechnen dazu
zun�chst das Integral f�r ein zwei-dimensionales
Integrationsintervall
und sch�tzen zus�tzlich den Fehler des
Ergebnisses ab. Ist dieser Fehler gr��er als eine vorgegebene Toleranz
, unterteilen wir das Intervall
in vier gleichgro�e
Teilintervalle und berechnen f�r diese Intervalle das Integral
getrennt mit der Toleranz
. Dies wird rekursiv
wiederholt, bis die Fehlerabsch�tzung kleiner als die Toleranz ist.
Hierdurch wird die Anzahl der St�tzstellen dem jeweiligen
Approximationsfehler auf dem Teilintervall angepa�t. Nachdem wir aber
schon das Integrationsgebiet am Anfang in die einzelnen quadratischen
Bézierfl�che unterteilen, haben wir den adaptiven Algorithmus nicht
implementiert.
Next: 2.3.3 Fl�cheninhalt, Volumen, Schwerpunkt
Up: 2.3 Integration
Previous: 2.3.1 Oberfl�chenintegrale
Inhalt
Copyright © 1999-2002
Frank C. Langbein. All rights reserved.
Permission is granted to copy, distribute and/or modify this
document under the terms of the
GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation.
Contact: webmaster@langbein.org
URI: http://www.langbein.org/fileadmin/research/surfaces/diploma/HTML/node21.html