Approximation von Funktionen
Approximation von Funktionen
Approximation von Funktionen
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