Numerische Verfahren und Grundlagen der Analysis

Werbung
Numerische Verfahren und Grundlagen der Analysis
Rasa Steuding
Hochschule RheinMain Wiesbaden
Wintersemester 2011/12
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
1 / 16
4. ”Groß-O”
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
2 / 16
Polynome
Zu a0 , a1 , . . . , an ∈ R, an 6= 0, heißt
p : R→R
x 7→ p(x) =
n
X
ak x k = an x n + · · · + a1 x + a0
k=0
Polynom (n-ten Grades).
Eine Stelle x0 heißt Nullstelle einer Funktion f (x), falls f (x0 ) = 0 ist.
Nullstellen eines Polynomes kann man durch deren Faktorisierung in
Linearfaktoren bestimmen:
x0 = 42 und x0 = −42 sind Nullstellen von
p1 (x) = x 2 − 1764 = (x − 42)(x + 42);
p2 (x) = x 2 + 42 hat keine Nullstellen über R.
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
3 / 16
Rationale Funktionen
Unter einer rationale Funktion versteht man den Quotienten zweier
Polynome:
r
: D→R
p(x)
x 7→
,
q(x)
wobei p(x) und q(x) Polynome sind und D = {x ∈ R : q(x) 6= 0}.
Eine Stelle x0 heißt Polstelle einer rationalen Funktion r (x) =
die Funktion r bei x0 unbeschränkt ist.
p(x)
q(x) ,
falls
Die rationale Funktion r (x) hat bei x0 ∈ R eine Polstelle, wenn entweder
q(x0 ) = 0 und p(x0 ) 6= 0 oder
q(x0 ) = 0 und p(x0 ) = 0 und die Vielfachheit der Nullstelle des
Nenners ist größer ist als die des Zählers.
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
4 / 16
Beispiel
Sei
r (x) =
x 5 + 3x 4 + 2x 3 + 5x 2 − 2
.
x 4 + 3x 3 + 3x 2 + 6x + 2
Bestimmung von Nullstellen des Zählers und des Nenners durch Faktorzerlegung
ist nicht bequem zu bewerkstelligen.
(x 5 + 3x 4 + 2x 3 + 5x 2 − 2) = x(x 4 + 3x 3 + 3x 2 + 6x + 2)
+(−x 3 − x 2 − 2x − 2)
(x 4 + 3x 3 + 3x 2 + 6x + 2) = (−x − 2)(−x 3 − x 2 − 2x − 2)
+(−x 2 − 2)
−(x 3 + x 2 + 2x + 2) = (x + 1)(−x 2 − 2) + 0.
Es ergibt sich als größter gemeinsamer Teiler x 2 + 2 und nach Kürzen
r (x) =
R. Steuding (HS-RM)
x 3 + 3x 2 − 1
.
x 2 + 3x + 1
NumAna
...
Wintersemester 2011/12
5 / 16
Das Bild von r (x)
√
Die Pollstellen von r (x) sind xp = − 32 ± 12 5.
Die Nullstellen von r (x) sind (numerisch mit SAGE berechnet):
x1 = −2.8793852415718164117208743846 . . . ,
x2 = −0.65270364466613928211558004477 . . . ,
x3 = 0.53208888623795602690336181695 . . . .
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
6 / 16
Größter gemeinsamer Teiler von Polynomen
Wir dividieren Pm (x) durch Qn (x) und erhalten als Rest Qn1 (x) ein
Polynom von einem Grade n1 < n. Fortsetzung dieses Verfahrens liefert
eine Folge von Restpolynomen Qnj . Deren Grade nj beständig abnehmen,
so dass auschließlich der Rest Null aufterten muss. Der letzte Rest vor
Null ergibt den grössten gemeinsamen Teiler von P und Q.
Pm (x) = S1 (x)Qn (x) + Qn1 (x),
Qn (x) = S2 (x)Qn1 (x) + Qn2 (x),
...
Qnl−1 (x) = Sl+1 (x)Qnl (x) + Qnl+1 (x),
Qnl (x) = Sl+2 (x)Qnl+1 (x) + 0.
Daraus folgt: Jeder Faktor von Qnl+1 ist auch Faktor von Qnl , daher auch
von Qnl−1 usw., schließlich also gemeinsamer Faktor von Qn und Pm .
Dies ist eine Verallgemeinerung vom Euklidischen Algorithmus.
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
...
7 / 16
Euklidischer Algorithmus. I (Euklid von Alexandria ca.
365-300 v.Chr.)
Euklidischer Algorithnmus liefert den grössten gemeinsamen Teiler von
ganzen Zahlen a und b (bezeichnet als ggT (a, b)).
Idee:
ggT (a, b) = ggT (a, 0) = a für a 6= 0,
ggT (a, b) = ggT (b, a − q · b) für jedes q ∈ Z.
Beispiel: ggT (3054, 1002) ist gesucht.
3054 = 3 · 1002 + 48
1002 = 20 · 48 + 42
48 = 1 · 42 + 6
42 = 7 · 6 + 0
Daraus folgt ggT (3054, 1002) = 6.
R. Steuding (HS-RM)
NumAna
...
Wintersemester 2011/12
8 / 16
Euklidischer Algorithmus. II
Satz 4.1
Die natürlichen Zahlen a > b sei gegeben. Setzt man r0 = a, r1 = b und
definiert man rekursiv rk+2 als Rest bei Division von rk durch rk+1 , so
bricht diese Rekursion irgendwann ab, d.h. rn+1 = 0, und es gilt
rn = ggT (a, b). Also
r0
=
q1 r1 + r2 ,
0 < r2 < r1 ,
r1
=
q2 r2 + r3 ,
0 < r3 < r2 ,
...
rn−2
=
qn−1 rn−1 + rn ,
rn−1
=
qn r n ,
0 < rn < rn−1 ,
mit rn = ggT (a, b). Der letzte nichtverschwindende Rest ist also der
größte gemeinsame Teiler.
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
9 / 16
Euklidischer Algorithmus und Fibonacci Zahlen
Die Anzahl der benötigten Divisionen mit Rest hängt logarithmisch von
der Eingabe a und b ab. Dies zeigt eine worst-case Analyse: der
Algorithmus dauert am längsten, wenn alle qj = 1 sind.
Für a = Fn+1 , b = Fn ergeben sich n Divisionen mit Rest
Fn+1 = 1 · Fn + Fn−1 ,
Fn = 1 · Fn−1 + Fn−2 ,
...
F3 = 1 · F2 + F1 ,
F2 = 1 · F1 + F0 ,
(1 = 1 · 1 + 0).
Es folgt ggT (Fn+1 , Fn ) = F1 = 1.
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
10 / 16
Laufzeit der Algorithmen
Wie effizient (in Bezug auf Geschwindigkeit) ist ein Algorithmus?
Ansätze:
Direktes Messen der Laufzeit, zum Beispiel in Sekunden (hängt von
vielen Faktoren wie Computerkonfiguration, Compiler . . . ab).
Zählen der Elementaroperationen des Algorithmus in Abhängigkeit
von der Größe der Eingabe
Wie verhält sich der Algorithmus bei sehr großen Eingaben?
Wie ändert sich die Laufzeit, wenn die Größe der Eingabe variiert?
Die Komplexität bezüglich Laufzeit eines Algorithmus kann man mit der
O-Notation charakterisieren.
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
11 / 16
O-Notation. I
Seien fn und gn zwei Folgen. Wenn es eine Konstante C und einen
Folgenindex n0 gibt, sodass
|fn | ≤ C |gn | für alle n ≥ n0 ,
dann schreiben wir fn = O(gn ) und sagen fn ist von der Ordnung gn oder
fn ist ”Groß-O” von gn .
Wenn die Folge gfnn konvergent ist, so ist fn = O(gn ). Falls der Grenzwert
sogar gleich Null ist, dann bezeichnet man dies mit fn = o(gn ).
Die Notation O(f ) hat erstmals Bachmann (1894) in seinem Buch über die
Zahlentheorie eingeführt, etwas später hat Landau (1909) auch die Notation o(f )
eingeführt.
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
12 / 16
O-Notation. II
Beispiel: 2n2 + 3n + 1 = O(n2 )
f (n) = 2n2 + 3n + 1 (blau) und f (n) = 6n2 (rot).
Satz 4.2
Ein Polynom p(n) = a0 + a1 n + · · · + ak nk vom Grad k ist von der
Ordnung nk , d.h. a0 + a1 n + · · · + ak nk = O(nk ).
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
13 / 16
Wachstum elementarer Folgen
Satz 4.3
Es gilt
1 = O(loga (n)), für a > 0,
b
loga (n) = O(n ) für a > 0,
n
b1
n
b
a1n
n
a
a 6= 1,
a 6= 1,
b > 0,
b2
= O(n ) für 0 ≤ b1 ≤ b2 ,
= O(an ) für b ≥ 0,
=
O(a2n )
a > 1,
für 0 < a1 < a2 ,
= O(n!) für a > 0
n! = O(nn ).
Die Algorithmen der Komplexität O(nk ) heißen polynomial und zeigen sich
in der Praxis als effizient. Im Gegensatz dazu stehen Algorithmen
exponentiellen Wachstums O(an ), a > 1.
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
...
14 / 16
Rechnen mit dem ”Groß-O”
Sind fn = O(hn ) und gn = O(hn ) und sind a, b ∈ R, so gilt
afn + bgn = O(hn );
Sind fn = O(gn ) und hn = O(kn ), so ist
fn hn = O(gn kn );
Aus fn = O(gn ) und gn = O(hn ) folgt, dass auch fn = O(hn ).
Insbesondere gilt: In einer Summe bestimmt der Summand mit der
höchsten Ordnung die Ordnung der gesamten Summe.
Beispiel: fn = n3 + 42 · 5n = O(5n ).
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
15 / 16
Laufzeit des Euklidischen Algorithnmus
Mit der Binetsche Formel
1
Fn = √ (G n − (−G )−n ),
5
√
5+1
G :=
,
2
folgt
1
Fn = √ G n (1 + O(1)) bzw. n = O
5
log Fn
log G
.
Also gilt i. A. für die Schrittlänge S(a, b) bei euklidischen Algorithmus
S(a, b) = O(log(max{a, b}))
für a, b ≤ Fn+1 .
...
R. Steuding (HS-RM)
NumAna
Wintersemester 2011/12
16 / 16
Herunterladen