Vous êtes sur la page 1sur 9

TU Dresden, Fakult at Mathematik und Naturwissenschaften, Institut f ur Numerische Mathematik.

Grundpraktikum
Numerische Berechnung von uneigentlichen Integralen am Beispiel der Gau-Laguerre-Quadratur

Bearbeiter: Christoph Klingenberg


Matrikel-Nr: 3038790

Alexander M uller
Matrikel-Nr: 3265725

Betreuer: Mag. Hanka Pfeifer

Eingereicht am 18.01.2010

Inhaltsverzeichnis
1 Numerische Integration 1.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Uneigentliche Integrale . . . . . . . . . . . . . . . . . . . . . . 1.3 Gau-Quadratur . . . . . . . . . . . . . . . . . . . . . . . . . 2 Beschreibung des Verfahrens: Gau-Laguerre-Quadratur 3 Quadraturfehler der Gau-Laguerre-Formel 4 Auswertung einiger Beispiele 5 Dokumentation zum Programm 2 2 2 3 3 4 5 5

1
1.1

Numerische Integration
Allgemeines
b

Viele Integrale I (f ) = a f (x) dx lassen sich in der Praxis nicht explizit berechen, weil es zu der betrachteten Funktion f (x) keine Stammfunktion F mit F = f gibt oder der Aufwand zur Bestimmung der Stammfunktion unverh altnism aig hoch ist. Daher m ussen die Integrale numerisch berechnet werden, wobei man in der Regel versucht, eine Quadraturformel Q(f ) zu nden, die eine gute Ann aherung f ur das Integral I (f ) ist:
b

Q(f ) I (f ) =
a

f (x) dx

Diese Quadraturformel wird dann an einer vorgegebenen Anzahl von St utzstellen in einem festgelegten Intervall ausgewertet und f uhrt somit auf eine N aherung f ur das Integral I (f ).

1.2

Uneigentliche Integrale

Bei der numerischen Berechnung uneigentlicher Integrale ergibt sich das Problem, dass ein unendlich groes Intervall nur an einer endlichen Anzahl von St utzstellen ausgewertet wird. Man kann diesem Problem auf drei verschiedene Weisen beikommen: 1. Nur den relevanten Bereich betrachten und den Rest absch atzen. 2. Gau-Laguerre-Quadratur oder Gau-Hermite-Quadratur 3. Transformation auf ein endliches Intervall: x Man kann die Integration u ber [0, ) durch die Transformation t = 1+ x oder t = ex auf das Intervall (0, 1] u bertragen. Durch die Transforex 1 mation t = e ber. Allerdings entsteht x +1 geht (, +) in (1, +1) u dabei selten ein stetiger Integrand, meit f uhrt sie auf eine Singularit at im Integranden. (vgl. H ammerlin, G unther; Homann, Karl-Heinz (1994): Numerische Mathematik, Springer: Berlin [u.a.])

1.3

Gau-Quadratur

Die nach Carl Friedrich Gau benannten Quadraturformeln teilen die zu integrierende Funktion in eine Gewichtsfunktion und ein spezielles Polynom auf, die an bestimmten Stellen ausgewertet werden. 1. Gau-Legendre-Quadratur Normintervall [1; 1], (x) = 1
b n n n

I=
a

f (x) dx,

Gn+1 = (ba)
k=0

Ak f (xk ) =
k=0

k f (xk ),
k=0

Ak = 1

2. Gau-Tschebysche-Quadratur (1.Art) Normintervall [1; 1], (x) = 1 2


(1x ) 1

I=
1

1 f (x) dx, 1 x2

GTn+1 =
k=0

k f (xk ),
k=0

k =

3. Gau-Hermite-Quadratur 2 Normintervall [; ], (x) = ex


n n

I=

x2

f (x) dx,

GHn+1 =
k=0

k f (xk ),
k=0

k =

4. Gau-Laguerre-Quadratur Normintervall [0; ], (x) = ex


n n

I=
0

e f (x) dx,

GLn+1 =
k=0

k f (xk ),
k=0

k = 1

Beschreibung des Verfahrens: Gau-LaguerreQuadratur

Wir betrachten zun achst Funktionen auf dem Intervall [0, ). Bei der Gau Laguerre Quadratur werden die St utzstellen xi nicht (wie bei vielen anderen Verfahren) a quidistant gew a hlt, sondern f ur die Funktion optimiert. Eine 3

hohe Fehlerordnung wird erreicht, indem die Nullstellen (x0 , x1 , . . . , xn ) des n-ten Laguerre-Polynoms Ln+1 (x) = 0 als St utzstellen festgelegt werden. Die Laguerre-Polynome sind rekursiv deniert:

L0 = 1 L1 = 1 x . . . Ln+1 = (2n + 1 x)Ln n2 Ln1

Sie k onnen aber auch explizit berechnet werden: n! 2 0 ( (n(ni))! ) 1 n n (1)i xi (1) x + n! (n i)! i=n1
n>0

Die Laguerre-Polynome sind zur Gewichtsfunktion (x) = ex orthogononal, wodurch optimale Genauigkeit erreicht wird. Das Integral wird nun durch die Quadraturformel angen ahert:
n

ex f (x) dx
0 i=1

i f (xi )

Die Gewichte i lassen sich mit folgender Formel bestimmen: i = ((n + 1)!)2 xi = 2 Ln+2 (xi )Ln+1 (xi ) (n + 1) (Ln+1 (xi ))2

Sollte der Integrand nicht in der Form ex f (x) vorliegen, so kann man die Quadraturformel dennoch aufstellen, indem man f (x) durch g (x) = ex f (x) ersetzt und somit die Quadraturformel f ur das Integral von ex g (x) berechnen kann.

Quadraturfehler der Gau-Laguerre-Formel

Der Quadraturfehler f ur die Gau-Laguerre-Quadratur ist 4

(n!)2 2n R (f ) = f ( ) (2n)! Dabei ist [0, ) eine beliebige Stelle aus dem Integrationsintervall und n die Anzahl der St utzstellen. Wie wir sehen, ist der Quadraturfehler auerdem von der Funktion f abh angig: Sie muss beschr ankt sein, damit der Fehler endlich ist. Weiterhin ist zu beachten, dass der Fehler f ur zu groe n nicht unbedingt kleiner wird, da der Z ahler auch entsprechend schnell w achst.

Auswertung einiger Beispiele


Lo sung 0.886226 0.99574 0.143841 = 0.5 = 0.5 =6 GLQ n=5 n=10 n=15 n=20 0.89554 0.88950 0.88801 0.88738 0.087521 0.097106 0.09800 0.099355 0.142276 0.143484 0.143685 0.143754 0.48068 0.50068 0.50005 0.49984 0.50053 0.50000 0.50000 0.50000 6.00000 6.00000 6.00000 6.00000 n=25 0.88705 0.099494 0.143786 0.49993 0.50000 6.00000

Integral x e x dx 0 e x dx 9 x 1 dx 2 x3 x x dx 0 (1+x2 )2 2x 2xe dx 0 x 3 e x dx 0

Im letzten Beispiel wurde der genaue Wert 6 schon ab n=2 erreicht. Alle Berechnungen wurden mit GNU Octave 3.2.3durchgef uhrt.

Dokumentation zum Programm

Zu erst muss die zu integrierende Funktion in f.m eingetragen werden. Die Beispielfunktionen sind bereits enthalten und m ussen nur noch auskommentiert werden:
function y=f ( x ) y=sqrt ( x ) ; y=exp( sqrt ( x+9) ) / sqrt ( x+9) ; y =1/(( x+2)3 (x+2) ) ; y=x/(1+x 2 ) 2 ; y=2 x exp ( 2 x ) ; y=x 3 ;

% % % % % end ;

Das Hauptprogramm GLQ.m organisiert die Benutzereingabe, ruft die Unterprogramme zur Berechnung auf und gibt das Ergebnis aus:
clear a l l ; n=input ( Geben S i e den Grad n d e s L a g u e r r e Polynoms e i n : ) ; i f ( n<1 | | n > 33) disp ( Der Grad d e s Laguerre Polynoms muss z w i s c h e n 1 und 33 l i e g e n . ) ; else % Berechnen d e s Laguerre Polynoms L=GLQL1( n ) ; % Berechnen d e r S t u e t z s t e l l e n x=roots (L) ; % Berechnen d e r Gewichte w=GLQWeights ( x ) ; % Berechnen d e r Q u a d r a t u r f o r m e l INT=zeros ( 1 , 2 ) ; f o r i =1:n INT ( 1 )+=(w( i ) f ( x ( i ) ) ) ; INT ( 2 )+=(w( i ) exp ( x ( i ) ) f ( x ( i ) ) ) ; end ; disp ( ) ; disp ( 1 . Wert : Loesung mit Gewichten wi | | 2 . Wert : Loesung mit Gewichten wi exp ( x ) ) ; disp ( ) ; INT end ;

Bei der Ausgabe ist zu beachten, dass zum einen das Ergebnis mit Gewichten i und zum anderen das Ergebnis mit Gewichten i ex ausgegeben wird. Wenn die Funktion also bereits ex enth alt, ist der erste Wert zu entnehmen, sonst der Zweite. Als erstes wird das Unterprogramm GLQL1.m aufgerufen, welches das LaguerrePolynom vom Grad n explizit berechnet:
function L=GLQL1( n ) % Laenge d e s V e k t o r s L wird f e s t g e l e g t L=zeros ( 1 , n+1) ; % L a g u e r r e Polynom vom Grad 1 L ( 1 ) =( 1)n ; % Berechnung d e s L a g u e r r e Polynoms vom Grad n f o r i =0:( n 1) L( n+1 i ) =(( f a c t o r i a l ( n ) / f a c t o r i a l ( n (n i ) ) ) 2/ f a c t o r i a l ( n i ) ) ( 1) i ; end ; L=(1/ f a c t o r i a l ( n ) ) L ;

end ;

Alternativ dazu kann auch das Programm GLQL2.m aufgerufen werden, welches das Laguerre-Polynom vom Grad n rekursiv berechnet:
function L=GLQL2( n ) i f ( n < 0) disp ( U n g u e l t i g e Eingabe : n < 0! ) ; return ; end ; % Rueckgabewert b e l e g e n L=zeros ( 1 , n+1) ; % Matrix , i n d e r d i e Laguerre Polynome g e s p e i c h e r t werden M =zeros ( n+1) ; % Laguerre Polynom vom Grad 0 M( 1 , : )=GLQV2M( [ 1 ] , n+1) ; i f ( n > 0) % Laguerre Polynome vom Grad 1 M( 2 , : )=GLQV2M([ 1 1 ] , n+1) ; i f ( n > 1) % R e k u r s i o n s f o r m e l f u e r Grad n>1 M( n + 1 , : ) =(1/n ) ( conv ([ 1 2 ( n 1) +1] , GLQL2( n 1) )GLQV2M( ( n 1) GLQL2( n 2) , n +1) ) ; end ; end ; L= M( n + 1 , : ) ; end ;

Dazu ist zus atzlich GLQV2M.m n otig, welches ein Polynom P vom Grad m in einen Zeilenvektor der L ange n mit vorangehenden Nullen umwandelt falls n > m ist:
function V=GLQV2M(P , n ) V=zeros ( 1 , n ) ; m =length (P) ; i f (m >=n ) V=P ; else f o r i =1:m V( n m +i )=P( i ) ; end ; end ;

end ;

Nach der Berechnung der Laguerre-Polynome (entweder explizit oder rekursiv) werden mit GLQWeights.m die Gewichte berechnet. Dabei ist x der Vektor mit den St utzstellen des n-ten Laguerre Polynoms
function w=GLQWeights ( x ) % Grad d e s Polynoms n=length ( x ) ; % Rueckgabewert b e l e g e n w=zeros ( 1 , n ) ; % L a g u e r r e Polynom vom Grad n+1 L=GLQL1( n+1) ; f o r i =1:n % Berechnen d e r Gewichte w( i )=x ( i ) / ( ( n+1) 2 ( polyval (L , x ( i ) ) ) 2 ) ; end ; end ;

Vous aimerez peut-être aussi