14.01.2014 Aufrufe

Approximation von Funktionen

Approximation von Funktionen

Approximation von Funktionen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Approximation</strong> <strong>von</strong> <strong>Funktionen</strong><br />

Gegeben sei eine Funktion f(x) sowie ein Intervall [a,b]. Die Aufgabe bestehe darin, die Funktion<br />

f(x) auf dem Intervall [a,b] durch eine andere (einfachere) Funktion<br />

ϕ(x) = α 0 ϕ 0 (x)+α 1 ϕ 1 (x)+...+α n ϕ n (x)<br />

zu approximieren, das heißt anzunähern. Die einzelnen <strong>Funktionen</strong>ϕ 0 (x),ϕ 1 (x),...,ϕ n (x) müssen<br />

dabei vorgegebene <strong>Funktionen</strong> sein. Sie heißen Ansatzfunktionen. In unseren Beispielen<br />

wird es sich dabei meistens um Polynome handeln, zum Beispiel ϕ 0 (x) = 1, ϕ 1 (x) =<br />

x,...,ϕ n (x) = x n . Zu bestimmen sind nun noch die Koeffizienten α 0 ,...,α n , und zwar so,<br />

dass die sich ergebende Funktion ϕ(x) die bestmögliche <strong>Approximation</strong> <strong>von</strong> f(x) ist. Die Idee<br />

bei der Quadratmittelapproximation ist es, die Koeffizienten α k so zu bestimmen, dass das<br />

Integral<br />

∫ b<br />

a<br />

(f(x)−ϕ(x)) 2 dx<br />

einen möglichst kleinen Wert annimmt. Mithilfe <strong>von</strong> Aussagen aus der mathematischen Optimierung<br />

kann man nachweisen, dass man die entsprechenden α k als Lösung eines linearen<br />

Gleichungssystems A⃗α = ⃗ b ermitteln kann. Dieses lineare Gleichungssystem heißt Normalgleichungssystem<br />

und hat folgende Gestalt:<br />

⎛<br />

⎞⎛<br />

⎞ ⎛<br />

(ϕ 0 ,ϕ 0 ) [a,b] (ϕ 0 ,ϕ 1 ) [a,b] ··· (ϕ 0 ,ϕ n ) [a,b] α 0<br />

(ϕ 0 ,ϕ 1 ) [a,b] (ϕ 1 ,ϕ 1 ) [a,b] ··· (ϕ 1 ,ϕ n ) [a,b]<br />

α 1<br />

⎜<br />

⎟⎜<br />

⎟<br />

⎝ . .<br />

... . ⎠⎝<br />

. ⎠ = ⎜<br />

⎝<br />

(ϕ 0 ,ϕ n ) [a,b] (ϕ 1 ,ϕ n ) [a,b] ··· (ϕ n ,ϕ n ) [a,b] α n<br />

⎞<br />

(ϕ 0 ,f) [a,b]<br />

(ϕ 1 ,f) [a,b]<br />

⎟<br />

.<br />

(ϕ n ,f) [a,b]<br />

⎠ . (1)<br />

Die Einträge der Koeffizientenmatrix A bzw. der rechten Seite ⃗ b sind dabei Skalarprodukte der<br />

Ansatzfunktionen untereinander bzw. mit der Ausgangsfunktion f. Für zwei <strong>Funktionen</strong> u,v<br />

wird mit (u,v) [a,b] das Skalarprodukt im <strong>Funktionen</strong>raum L 2 [a,b] bezeichnet. Es berechnet sich<br />

gemäß folgender Vorschrift:<br />

(u,v) [a,b] =<br />

∫ b<br />

a<br />

u(x)·v(x) dx.<br />

Um das Normalgleichungssystem aufstellen zu können, sind also zunächst einige Integrale auszurechnen.<br />

Zusammenfassend wollen wir noch einmal aufschreiben, welche Schritte durchzuführen sind,<br />

wenn eine Funktion f(x) auf dem Intervall [a,b] approximiert werden soll und dabei die Ansatzfunktionen<br />

ϕ 0 (x),...,ϕ n (x) vorgegeben sind.<br />

S1: Berechne für k = 0,1,...,n und l = k,k +1,...,n alle Skalarprodukte (ϕ k ,ϕ l ) [a,b] und<br />

bilde daraus die Koeffizientenmatrix A des Normalgleichungssystems.<br />

S2: Berechne für k = 0,1,...,n alle Skalarprodukte (ϕ k ,f) [a,b] und bilde daraus die rechte<br />

Seite ⃗ b des Normalgleichungssystems.<br />

S3: Bestimme α 0 ,α 1 ,...,α n als Lösung des Normalgleichungssystems A⃗α = ⃗ b.<br />

S4: Das gesuchte Polynom lautet wie folgt:<br />

ϕ(x) = α 0 ϕ 0 (x)+α 1 ϕ 1 (x)+...+α n ϕ n (x).<br />

1


Beispiel: Die Funktion f(x) = e x ist im Intervall [0,1] durch ein Polynom zweiten Grades<br />

anzunähern. Als Ansatzfunktionen sind dabei die Polynome ϕ 0 (x) = 1, ϕ 1 (x) = x und ϕ 2 (x) =<br />

x 2 zu verwenden.<br />

Wir müssen das Normalgleichungssystem A⃗α = ⃗ b gemäß der Vorschrift (1) aufstellen. Dafür<br />

sind zunächst die Skalarprodukte (ϕ i ,ϕ j ) [0,1] für i = 0,1,2 und j ≥ i zu berechnen, um die<br />

Matrix A zu erhalten. Dabei wird mit (·,·) [0,1] das Skalarprodukt des <strong>Funktionen</strong>raumes L 2 [0,1]<br />

bezeichnet, das heißt für zwei <strong>Funktionen</strong> u und v ist:<br />

(u,v) [0,1] =<br />

∫ 1<br />

0<br />

u(x)v(x) dx.<br />

Wir berechnen also nacheinander die auftretenden Integrale:<br />

• (ϕ 0 ,ϕ 0 ) [0,1] = ∫ 1<br />

0 1 dx = x|1 0 = 1,<br />

• (ϕ 0 ,ϕ 1 ) [0,1] = ∫ 1<br />

0 x dx = 1 2 x2∣ ∣ 1 0 = 1 2 ,<br />

• (ϕ 0 ,ϕ 2 ) [0,1] = ∫ 1<br />

0 x2 dx = 1 3 x3∣ ∣ 1 0 = 1 3 ,<br />

• (ϕ 1 ,ϕ 1 ) [0,1] = ∫ 1<br />

0 x2 dx = 1 3 x3∣ ∣ 1 0 = 1 3 ,<br />

• (ϕ 1 ,ϕ 2 ) [0,1] = ∫ 1<br />

0 x3 dx = 1 4 x4∣ ∣ 1 0 = 1 4 ,<br />

• (ϕ 2 ,ϕ 2 ) [0,1] = ∫ 1<br />

0 x4 dx = 1 5 x5∣ ∣ 1 0 = 1 5 .<br />

Die Matrix A sieht demnach wie folgt aus:<br />

⎛ ⎞<br />

1 1/2 1/3<br />

A = ⎝ 1/2 1/3 1/4 ⎠.<br />

1/3 1/4 1/5<br />

Als nächstes ist die rechte Seite, der Vektor ⃗ b, zu berechnen. Dafür müssen alle Skalarprodukte<br />

(ϕ i ,f) [0,1] für i = 0,1,2 berechnet werden:<br />

• (ϕ 0 ,f) [0,1] = ∫ 1<br />

0 ex dx = e x | 1 0 = e−1,<br />

• (ϕ 1 ,f) [0,1] = ∫ 1<br />

0 xex dx = (x−1)e x | 1 0 = 1,<br />

• (ϕ 2 ,f) [0,1] = ∫ 1<br />

0 x2 e x dx = (x 2 −2x+2)e x | 1 0 = e−2.<br />

Die auftretenden Integrale können dabei aus der Integraltabelle des Tafelwerks oder durch<br />

partielle Integration erhalten werden. Für den Vektor ⃗ b erhalten wir somit:<br />

⎛ ⎞<br />

e−1<br />

⃗ b = ⎝ 1 ⎠.<br />

e−2<br />

2


Nun kann das Normalgleichungssystem A⃗α = ⃗ b aufgestellt und mittels Gauß-Verfahren gelöst<br />

werden:<br />

⎛ ⎞<br />

⎛ ⎞<br />

⎝<br />

1 1/2 1/3 e−1<br />

1/2 1/3 1/4 1<br />

1/3 1/4 1/5 e−2<br />

⎠<br />

Aus der letzten Zeile kann nun<br />

Z2=2·Z2−Z1,Z3=3·Z3−Z1<br />

−→<br />

Z3=4·Z3−6·Z2<br />

−→<br />

⎝<br />

⎛<br />

⎝<br />

α 2 = 210e−570 ≈ 0.8391839764<br />

1 1/2 1/3 e−1<br />

0 1/6 1/6 3−e<br />

0 1/4 4/15 2e−5<br />

⎠<br />

1 1/2 1/3 e−1<br />

0 1/6 1/6 3−e<br />

0 0 1/15 14e−38<br />

bestimmt werden. Setzen wir das in die zweite Gleichung ein, ergibt sich<br />

1<br />

6 α 1 + 1 6 ·0.8391839764 = 3−e ⇒ α 1 = 6·<br />

(3−e− 1 )<br />

6 ·0.8391839764 ≈ 0.8511250529.<br />

Alles in die erste Gleichung eingesetzt ergibt schließlich<br />

α 0 + 1 2 ·0.8511250529+ 1 3 ·0.8391839764 = e−1 ⇒ α 0 ≈ 1.01299131.<br />

Als Bestapproximation erhalten wir somit (Werte jeweils auf 4 Nachkommastellen gerundet)<br />

ϕ(x) = 1.0130+0.8511x+0.8392x 2 .<br />

⎞<br />

⎠.<br />

Verwendung orthogonaler Polynome als Ansatzfunktionen<br />

Im letzten Beispiel haben wir gesehen, dass ein gewisser Aufwand darin besteht, das lineare<br />

Gleichungssystem A⃗α = ⃗ b zu lösen. Es stellt sich aber heraus, dass bei geeigneter Wahl der<br />

Ansatzpolynome ϕ k die zugehörige Koeffizientenmatrix A eine sehr einfache Struktur hat. Genauer<br />

gesagt: wählt man die Ansatzfunktionen so, dass die Skalarprodukte (ϕ k ,ϕ l ) [a,b] gleich<br />

Null sind für k ≠ l, dann hat die Matrix A nur noch <strong>von</strong> Null verschiedene Einträge auf ihrer<br />

Hauptdiagonalen. Die Systemmatrix des Gleichungssystems ist dann also eine Diagonalmatrix,<br />

sodass die Lösung des Gleichungssystems dann sehr leicht bestimmt werden kann. Zwei <strong>Funktionen</strong>,<br />

deren Skalarprodukt gleich Null ist, heißen zueinander orthogonal. Wir sind also in<br />

Zukunft bestrebt, orthogonale Ansatzfunktionen zu verwenden.<br />

Für das Intervall[−1,1] sind orthogonale Polynome bekannt, nämlich die sogenannten Legendre-<br />

Polynome, die wir mit P 0 ,P 1 ,P 2 ,... bezeichnen wollen. Definiert sind sie wie folgt:<br />

P 0 (x) = 1,<br />

P 1 (x) = x,<br />

2k +1<br />

P k+1 (x) =<br />

k +1 xP k(x)− k<br />

k +1 P k−1(x) (k = 1,2,3,...). (2)<br />

3


Ab P 2 sind die Legendre-Polynome also rekursiv definiert. Für k ≠ l erfüllen diese Polynome<br />

nun gerade die gewünschte Eigenschaft<br />

(P k ,P l ) [−1,1] =<br />

∫ 1<br />

−1<br />

P k (x)P l (x) dx = 0.<br />

Für k = l, also für Skalarprodukte der Form (P k ,P k ) [−1,1] , gilt<br />

(P k ,P k ) [−1,1] =<br />

∫ 1<br />

−1<br />

(P k (x)) 2 dx = 2<br />

2k +1 .<br />

Diese Werte stehen letztlich auf der Hauptdiagonalen der Matrix A. Zu berechnen sind dann<br />

lediglich noch die Skalarprodukte (P k ,f) [−1,1] für die rechte Seite des Normalgleichungssystems.<br />

Mehr Aufwand hat man bei Verwendung der Legendre-Polynome praktisch nicht.<br />

Nun sind die Legendre-Polynome nur auf dem Intervall [−1,1] orthogonal zueinander. Im Allgemeinen<br />

ist [a,b] aber ein anderes Intervall. Dann verwendet man nicht die Legendre-Polynome<br />

selbst, sondern verallgemeinerte Legendre-Polynome, die wir mit Q 0 ,Q 1 ,Q 2 ,... bezeichnen.<br />

Definiert sind sie durch die Vorschrift<br />

Q k (x) = P k<br />

( 2x−b−a<br />

b−a<br />

Das heißt, die verallgemeinerten Legendre-Polynomen erhält man aus den ursprünglichen Legendre-<br />

Polynomen, indem man anstelle <strong>von</strong> x den Ausdruck 2x−b−a als Argument einsetzt. Wir wollen<br />

b−a<br />

nachweisen, dass die auf diese Weise definierten Polynome Q k wirklich paarweise orthogonal<br />

im <strong>Funktionen</strong>raum L 2 [a,b] sind. Dazu berechnen wir für zwei beliebige Polynome Q k ,Q l das<br />

Skalarprodukt (Q k ,Q l ) [a,b] :<br />

∫ b ∫ b<br />

( ) ( )<br />

2x−b−a 2x−b−a<br />

(Q k ,Q l ) [a,b] = Q k (x)Q l (x) dx = P k ·P l dx.<br />

b−a b−a<br />

Wir substituieren:<br />

a<br />

z = 2x−b−a ⇒ dz<br />

b−a dx = 2 b−a<br />

⇒ dx =<br />

b−a 2 dz.<br />

Auch die Integrationsgrenzen substituieren wir mit. Als neue Grenzen ergeben sich<br />

z(a) = 2a−b−a<br />

b−a<br />

−1<br />

a<br />

)<br />

.<br />

= −1 und z(b) = 2b−b−a<br />

b−a<br />

Das alles in das ursprüngliche Integral eingesetzt liefert:<br />

(Q k ,Q l ) [a,b] = b−a ∫ 1<br />

{<br />

· P k (z)·P l (z) dz =<br />

2<br />

= 1.<br />

0 , falls k ≠ l,<br />

b−a<br />

2k+1<br />

, falls k = l.<br />

Dabei wurde benutzt, was wir über die Legendre-Polynome P k im Intervall [−1,1] wissen. Die<br />

Polynome Q k sind also tatsächlich paarweise orthogonal zueinander bzgl. des Skalarprodukts<br />

im Raum L 2 [a,b]. Wir haben außerdem gleich die Ausdrücke (Q k ,Q k ) [a,b] mit berechnet, sodass<br />

wir auch wissen, welche Werte anschließend auf der Hauptdiagonalen <strong>von</strong> A im Normalgleichungssystem<br />

stehen.<br />

Wir wollen nun noch einmal die Schritte zusammentragen, die durchzuführen sind, wenn folgende<br />

Aufgabenstellung vorliegt: Eine gegebene Funktion f(x) ist auf dem Intervall [a,b] durch<br />

ein Polynom n-ten Grades zu approximieren. Dabei sind orthogonale Ansatzpolynome zu verwenden.<br />

4


S1: Schreibe die Legendre-PolynomeP 0 ,P 1 ,...,P n (bis zum Polynomn-ten Grades) auf. Nutze<br />

dazu die Rekursionsformel (2).<br />

S2: Bilde die auf das Intervall [a,b] angepassten Legendre-Polynome Q 0 ,Q 1 ,...,Q n gemäß<br />

der Vorschrift ( ) 2x−b−a<br />

Q k (x) = P k (k = 0,1,...,n).<br />

b−a<br />

Das heißt, in den P k muss x durch den Ausdruck 2x−b−a<br />

b−a<br />

S3: Berechne die Skalarprodukte der Q k mit f, das heißt berechne<br />

ersetzt werden.<br />

(Q k ,f) [a,b] =<br />

∫ b<br />

a<br />

Q k (x)·f(x) dx für<br />

k = 0,1,...,n.<br />

S4: Die k-te Gleichung im Normalgleichungssystem A⃗α = ⃗ b lautet nun (wegen der Diagonalgestalt<br />

<strong>von</strong> A):<br />

(Q k ,Q k ) [a,b] ·α k = (Q k ,f) [a,b] .<br />

ausgerechnet, sodass nun sofort die Koeffizi-<br />

Wir hatten oben bereits (Q k ,Q k ) [a,b] = b−a<br />

enten α k berechnet werden können:<br />

α k =<br />

S5: Das gesuchte Polynom ist<br />

2k+1<br />

2k +1<br />

b−a ·(Q k,f) [a,b]<br />

(k = 0,1,...,n).<br />

ϕ(x) = α 0 Q 0 (x)+α 1 Q 1 (x)+...+α n Q n (x).<br />

Beispiel: Wir kehren noch einmal zu unserem Beispiel <strong>von</strong> Seite 2 zurück. Dort war die Funktion<br />

f(x) = e x durch ein Polynom zweiten Grades auf dem Intervall [0,1] zu approximieren.<br />

Dieses Mal wollen wir die verallgemeinerten Legendre-Polynome als Ansatzfunktionen nehmen.<br />

Wir arbeiten die eben genannten Schritte nacheinander ab.<br />

S1: Da die Funktion f(x) durch ein Polynom zweiten Grades zu approximieren ist, ist bei uns<br />

n = 2, sodass wir zunächst die Legendre-Polynome P 0 , P 1 und P 2 benötigen. Für P 0 und<br />

P 1 gilt:<br />

P 0 (x) = 1, P 1 (x) = x.<br />

Für P 2 ist die Rekursionsformel (2) zu verwenden:<br />

P 2 (x) = 2·1+1<br />

1+1 xP 1(x)− 1<br />

1+1 P 0(x) = 3 2 x2 − 1 2 .<br />

S2: Das Intervall ist in diesem Beispiel [0,1], also ist a = 0 und b = 1. Für die Q k gilt somit<br />

Q k (x) = P k (2x−1). Also:<br />

Q 0 (x) = P 0 (2x−1) = 1,<br />

Q 1 (x) = P 1 (2x−1) = 2x−1,<br />

Q 2 (x) = P 2 (2x−1) = 3 2 (2x−1)2 − 1 2 = 6x2 −6x+1.<br />

5


S3: Wir berechnen die Skalarprodukte (Q k ,f) [0,1] für k = 0,1,2:<br />

(Q 0 ,f) [0,1] =<br />

(Q 1 ,f) [0,1] =<br />

(Q 2 ,f) [0,1] =<br />

∫ 1<br />

0<br />

∫ 1<br />

0<br />

∫ 1<br />

0<br />

1·e x dx = e x | 1 0 = e−1,<br />

(2x−1)e x dx = (2x−3)e x | 1 0 = 3−e,<br />

(6x 2 −6x+1)e x dx = (6x 2 −18x+19)e x∣ ∣ 1 0 = 7e−19.<br />

S4: Die Koeffizienten α k für k = 0,1,2 werden nach der Vorschrift α k = 2k+1<br />

b−a · (Q k,f) [a,b]<br />

berechnet:<br />

S5: Das gesuchte Polynom lautet:<br />

α 0 = 2·0+1<br />

1−0<br />

α 1 = 2·1+1<br />

1−0<br />

α 2 = 2·2+1<br />

1−0<br />

·(e−1) = e−1,<br />

·(3−e) = 9−3e,<br />

·(7e−19) = 35e−95.<br />

ϕ(x) = (e−1)·1+(9−3e)·(2x−1)+(35e−95)·(6x 2 −6x+1).<br />

Multiplizieren wir aus und runden alle Werte auf vier Nachkommastellen, so erhalten wir<br />

ϕ(x) = 1.0130+0.8511x+0.8392x 2 ,<br />

also exakt dasselbe Polynom, welches wir bei Verwendung der Ansatzfunktionen 1, x und<br />

x 2 erhalten haben. Das ist kein Zufall, das Polynom muss immer dasselbe sein, egal welche<br />

Ansatzfunktionen verwendet werden. Bei Verwendung der orthogonalen Ansatzpolynome<br />

hatten wir aber nicht den Aufwand zur Lösung des linearen Gleichungssystems. Außerdem<br />

konnten wir uns die Berechnung einiger Skalarprodukte sparen.<br />

6

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!