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