Uvod v numerične metode B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 1 / 56 Jernej Kozak Jadranska 21, IV. nadstropje, št. 407. Iz dvigala, v desno, do konca hodnika in korak v smeri Krima. Jernej.Kozak@fmf.uni-lj.si http://www.fmf.uni-lj.si/~kozak/.htm Asistent: Gašper Jaklič
Obveznosti B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 2 / 56 V dogovorjenem roku je treba uspešno rešiti dve domači nalogi. Pozitivna ocena domačih nalog predstavlja 20%-ni delež pisnega dela končne ocene. Opraviti je treba pisni izpit. Ocena pisnega izpita predstavlja 80%-ni delež pisnega dela končne ocene. Opravljen pisni izpit velja en mesec. Ustni izpit. Predpogoj za opravljanje ustnega izpita je pozitivna ocena pisnega dela. Na ustni izpit se prijavite na strani http: //www.fmf.uni-lj.si/~kozak/prijavenaustneizpite/.
Osnovno o numeričnem računanju B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 3 / 56 Pri numeričnem reševanju dane naloge iščemo rešitev v numerični obliki. To pomeni, da npr. kot namesto iracionalnega števila 3 vrnemo njegov numerični približek 1.73205.... Numerična metoda Numerična metoda je postopek, ki iz vhodnih numeričnih podatkov s končnim zaporedjem elementarnih operacij izračuna numerični približek za rešitev danega problema. Elementarne operacije Elementarne operacije, ki jih lahko numerična metoda uporabi, so odvisne od okolja. Mi bomo privzeli kar +,, /, in. Za zglede bomo uporabljali program Matlab, včasih bo za demonstracijo primernejši program Mathematica. Namesto Matlaba lahko doma uporabljate prosto dostopen program Octave.
Numerično računanje se razlikuje od eksaktnega računanja Prva nadloga: predstavitev realnih števil v računalniku. Računamo s števili, ki so predstavljena v plavajoči piki (ali plavajoči vejici). Je kaj pri računanju s tako predstavljenimi števili kaj nepričakovanega? Vzamemo kalkulator in izračunamo 100 (100/3 33) 100/3. Rezultat je (ne)pričakovan, npr. v Matlabu dobimo 2.3448 10 13 0. Za osnovne računske operacije naj bi veljala asociativnost, toda, če npr. vzamemo potem v Matlabu dobimo x = 0.1234567890 y = 0.0987654321 z = 0.9911991199, x y z z y x = 1.7347 10 18 0. B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 4 / 56
Numerična matematika B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 5 / 56 Numerična matematika se ukvarja z razvojem in analizo algoritmov za numerično reševanje matematičnih problemov. Ukvarjali se bomo z naslednjimi problemi: linearni sistem: poišči x R n, ki reši sistem Ax = b za A R n n in b R n. nelinearni sistem: poišči rešitev enačbe f (x) = y, kjer je f : R n R n. linearni problem najmanjših kvadratov: poišči x R n, ki minimizira Ax b 2 za A R m n in b R m, kjer je m > n. lastne vrednosti: izračunaj lastne vrednosti in vektorje matrike A R n n. interpolacija: poišči polinom, ki gre skozi točke (x 0, f (x 0 )),..., (x n, f (x n )). integriranje: izračunaj integral b a f (t)dt. diferencialne enačbe: reši začetni problem y = f (x, y), y(x 0 ) = y 0.
Povezani predmeti B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 6 / 56 Prva stopnja: Numerična linearna algebra Numerične metode II (IŠRM) Druga stopnja: Iterativne numerične metode v linearni algebri Numerična aproksimacija in interpolacija Računalniško podprto (geometrijsko) oblikovanje Numerična integracija in navadne diferencialne enačbe Numerično reševanje parcialnih diferencialnih enačb Numerične metode za linearne sisteme upravljanja
Ozadje B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 7 / 56 Številne fizikalne, tehnološke, in druge procese lahko simuliramo na računalniku. Postopek je sestavljen iz naslednjih korakov: 1 razvoj matematičnega modela, 2 razvoj numeričnih metod za numerično reševanje modela, 3 implementacija numeričnih metod, 4 simuliranje procesov z računalnikom, 5 predstavitev dobljenih numeričnih rezultatov v pregledni obliki, 6 analiza dobljenih rezultatov, po potrebi se vrnemo na enega izmed prejšnjih korakov. Mi se bomo ukvarjali v glavnem s točkama 2. in 3.
Kdaj uporabljamo numerične metode B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 8 / 56 Ko drugih možnosti ne poznamo, npr.: iskanje ničel polinoma pete stopnje: x 5 + 3x 1 = 0, reševanje transcendentne enačbe: x + ln x = 0, računanje določenega integrala: 1 0 ex2 dx, večina nelinearnih enačb, diferencialnih enačb,.... Kadar so udobnejše oziroma manj časovno ali prostorsko zahtevne od analitičnih rešitev, npr.: računanje inverzne matrike velikosti 100 100, Cardanove formule za določanje ničel kubičnega polinoma.
Problem prevedemo na lažji problem B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 9 / 56 Glavni princip pri numeričnem reševanju je, da namesto podanega težkega problema rešujemo lažji problem, ki ima ali enako rešitev ali pa se rešitvi ne razlikujeta dosti. Npr.: neskončne procese nadomestimo s končnimi procesi, neskončno razsežne prostore nadomestimo s končno razsežnimi, diferencialne enačbe nadomestimo z algebraičnimi enačbami, nelinearni problem nadomestimo z linearnim, zapletene funkcije nadomestimo z enostavnejšimi, npr. s polinomi, matrike nadomestimo z matrikami, ki imajo enostavnejšo obliko, npr. zgornja trikotna oblika, zgornja Hessenbergova oblika.
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 10 / 56 Zanimalo nas bo torej: kakšna je tipska oblika določenega problema in kako jo učinkovito in stabilno rešimo, kako splošni problem čim bolj učinkovito in stabilno prevedemo na tipsko obliko.
Dobra numerična metoda Glavne zahteve za dobro numerično metodo so: zanesljivost: na enostavnih problemih vedno deluje pravilno. robustnost: običajno deluje na težjih problemih, kadar pa ne deluje, nas o tem obvesti. natančnost: izračuna rešitev tako natančno, kot je to možno glede na natančnost podanih začetnih podatkov. ekonomičnost: časovna (število operacij) in prostorska (poraba prostora v pomnilniku). uporabnost: lahko jo uporabimo na širokem spektru problemov. prijaznost do uporabnika: je dobro dokumentirana in ima enostaven uporabniški vmesnik. Numerične metode se stalno razvijajo. Dejavniki razvoja so: novi problemi, novi pristopi in novi algoritmi, razvoj računalnikov, razvoj paralelnih računalnikov oz. večjedrnih procesorjev. B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 11 / 56
Absolutna in relativna napaka B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 12 / 56 Pri numeričnem računanju vedno izračunamo numerični približek za točno rešitev problema. Razlika med približkom in točno vrednostjo je napaka približka. Ločimo absolutno in relativno napako. absolutna napaka = približek točna vrednost, relativna napaka = absolutna napaka točna vrednost. Naj bo x točna vrednost, x pa približek za x. Če je x = x + d a, potem je d a = x x absolutna napaka. Če je x = x(1 + d r ) oziroma d r = x x, potem je d r x relativna napaka.
Plavajoča vejica (ali pika) B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 13 / 56 V računalniku so števila zapisana v plavajoči vejici kot x = ±m b e, kjer je m = 0.c 1 c 2,... c t mantisa in b: baza (2, lahko tudi 10 ali 16), t: dolžina mantise, e: eksponent v mejah L e U, c i : števke v mejah od 0 do b 1. Če je c 1 0, potem je število normalizirano, sicer pa subnormalizirano. Množica predstavljivih števil Množico predstavljivih števil označimo s P(b, t, L, U).
Zgled B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 14 / 56 Vsa normalizirana pozitivna predstavljiva števila iz množice P(2, 3, 1, 1) so: 0.100 2 2 1 = 0.2500 0.100 2 2 0 = 0.500 0.100 2 2 1 = 1.00 0.101 2 2 1 = 0.3125 0.101 2 2 0 = 0.625 0.101 2 2 1 = 1.25 0.110 2 2 1 = 0.3750 0.110 2 2 0 = 0.750 0.110 2 2 1 = 1.50 0.111 2 2 1 = 0.4375 0.111 2 2 0 = 0.875 0.111 2 2 1 = 1.75 0 0.25 0.5 0.75 1 1.25 1.5 1.75 2
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 15 / 56 Subnormalizirana števila (možna le pri najmanjšem eksponentu) so: 0.011 2 2 1 = 0.1875 0.010 2 2 1 = 0.1250 0.001 2 2 1 = 0.0625
Standard IEEE B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 16 / 56 single: P(2, 24, 125, 128), število je shranjeno v 32 bitih, predznak: prvi bit eksponent: naslednjih osem bitov mantisa: zadnjih 23 bitov double: P(2, 53, 1021, 1023), število je shranjeno v 64 bitih, predznak: prvi bit eksponent: naslednjih 11 bitov mantisa: zadnjih 52 bitov standard IEEE pozna še števila 0,, in NaN.
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 17 / 56 Tehnične podrobnosti zapisa predstavljivih števil Če je s predznak, 0 e 255 eksponent in 0 f < 1 število 0.c 2... c 24, velja 0 < e < 255 poljuben f x = ( 1) s (1 + f ) 2 e 127 e = 255 f = 0 x = ( 1) s e = 255 f 0 x = NaN e = 0 f = 0 x = ( 1) s 0 e = 0 f 0 x = ( 1) s (0 + f ) 2 126 Primeri pozitivnih števil: e f število 10000010 01100000000000000000000 x = (1 + 2 2 + 2 3 ) 2 130 127 = 11 11111111 00000000000000000000000 x = 11111111 01011010100000000000000 x = NaN 00000000 00000000000000000000000 x = 0 00000000 00000100000000000000000 x = 2 6 2 126 = 2 132
Osnovna zaokrožitvena napaka B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 18 / 56 Števila, ki niso predstavljiva, predstavimo s približki, ki jih dobimo z zaokrožanjem. Naj bo x število in fl (x) najbližje predstavljivo število. Z naslednjim izrekom bomo dokazali, da velja kjer je osnovna zaokrožitvena napaka: fl(x) = x(1 + δ) in δ u, u = 1 2 b1 t enojna natančnost: u = 2 24 = 6 10 8, dvojna natančnost: u = 2 53 = 1 10 16.
Izrek Če število x leži znotraj intervala predstavljivih števil, potem velja fl(x) x x u 1 + u. Dokaz. Naj bo x = (y + z)b e, kjer je y = 0.d 1... d t in z = 0.0... 0d t+1 d t+2... in naj bo fl(x) = mb e, kjer je m = 0.c 1... c t. Predpostavimo lahko, da je x pozitiven. a) d t+1 < b/2 = m = y fl(x) x x = z 1 y + z 2 b t b 1 + 1 = 2 b t Pri oceni smo izbrali največji z in najmanjši y. b) d t+1 b/2 = m = y + b t fl(x) x x = b t z y + z b t 1 2 b t b 1 + 1 2 b t = Pri oceni smo izbrali najmanjši z in najmanjši y. u 1 + u. u 1 + u. B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 19 / 56
Računanje po standardu IEEE B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 20 / 56 Standard IEEE zahteva, da mora za operacije procesne enote veljati: fl(x y) = (x y)(1 + δ), δ u za = +,, /,, fl( x) = x(1 + δ), δ u. Izjema je, če pride do prekoračitve (overflow) ali podkoračitve (underflow) obsega predstavljivih števil. V tem primeru dobimo po IEEE: prekoračitev: ±, podkoračitev: 0.
Nesreča rakete Arianne 4. junija 1996 je pri prvem poletu rakete Ariane 5, ki naj bi nadomestila manjšo raketo Ariane 4,prišlo do nesreče. Raketa je po 40 sekundah zavila s prave poti in eksplodirala. Izkazalo se je, da je do nesreče prišlo zaradi prekoračitve obsega. Ker program ni imel testiranja prekoračitve, se je sesul, s tem pa tudi celoten polet. Podrobna analiza je pokazala, da je del programa, ki je povzročil napako, prišel iz programa za Ariane 4, kjer je vedno deloval brez napak. Tokrat pa je močnejša raketa povzročila, do so bile izmerjene količine prevelike in prišlo je do prekoračitve obsega. B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 21 / 56
Občutljivost problema B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 22 / 56 Če se rezultat pri majhni spremembi argumentov (motnji oz. perturbaciji) ne spremeni veliko, je problem neobčutljiv, sicer pa je občutljiv. S tem se ukvarja teorija motenj. Poglejmo zgled. x + y = 2 a) = x = y = 1. x y = 0 Zmotimo desno stran: x + y = 1.9999 x y = 0.0002 Ta sistem je neobčutljiv. = x = 1.00005, y = 0.99985.
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 23 / 56 b) x + 0.99y = 1.99 0.99x + 0.98y = 1.97 Zmotimo desno stran: x + 0.99y = 1.9899 0.99x + 0.98y = 1.9701 Ta sistem je zelo občutljiv. = x = y = 1. = x = 2.97, y = 0.99.
Wilkinsonov zgled Polinom p(x) = (x 1)(x 2) (x 20) = x 20 210x 19 + + 20! ima ničle 1, 2,..., 20, polinom pa ima ničle g(x) = p(x) 2 23 x 19 x 9 = 8.91752 x 10,11 = 10.0953 ± 0.64310i. x 16,17 = 16.7307 ± 2.81263i x 18,19 = 19.5024 ± 1.94033i x 20 = 20.8469 Čeprav so vse ničle enostavne in lepo separirane, majhna motnja povzroči velike spremembe. Wilkinson je s tem primerom pokazal, da računanje lastnih vrednosti preko karakterističnega polinoma ni stabilno. B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 24 / 56
Stopnja občutljivosti B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 25 / 56 Stopnjo občutljivosti merimo z razmerjem med velikostjo spremembe rezultata in velikostjo spremembe podatkov. Zgled: občutljivost izračuna vrednosti funkcije Naj bo f : R R zvezna in odvedljiva funkcija. Kakšna je občutljivost izračuna vrednosti f v točki x? Naj bo δx majhna sprememba x. Po Lagrangeovem izreku je f (x + δx) f (x) f (x) δx. Torej je f (x) absolutna občutljivost f v točki x. Za oceno relativne napake dobimo f (x + δx) f (x) f (x) f (x) x f (x) δx x, torej je f (x) x f (x) relativna občutljivost f v točki x.
Aproksimacije pri numeričnem računanju B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 26 / 56 Naj bo izračun vrednosti funkcije f : X Y pri danem x abstraktna predstavitev numeričnega reševanja določenega problema pri podatkih x. Numerična metoda vrne približek ŷ za y = f (x), točno rešitev. Razlika D = y ŷ je celotna napaka približka. V njej se skriva več vrst napak. Izvori napak nenatančnost začetnih podatkov, napaka numerične metode, zaokrožitvene napake med računanjem.
Celotno napako lahko razdelimo na tri dele B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 27 / 56 Neodstranljiva napaka Napaka metode Zaokrožitvena napaka Neodstranljiva napaka Namesto s podatkom x računamo s približkom x in namesto y = f (x) izračunamo y = f (x). Neodstranljiva napaka je D n = y y. D n je posledica napak v začetnih podatkih. Zgled neodstranljive napake Izračun vrednosti sin(π/10) z osnovnimi operacijami v P(10, 4, 5, 5). Namesto z x = π/10 računamo z x = 0.3142 10 0 D n = y y = sin(π/10) sin(0.3142) = 3.9 10 5
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 28 / 56 Napaka metode Namesto vrednosti funkcije f računamo vrednost njene aproksimacije g, ki jo lahko izračunamo s končnim številom operacij. Namesto y = f (x) tako izračunamo ỹ = g(x). Napaka metode je D m = y ỹ. Pri sami numerični metodi pogosto neskončen proces nadomestimo s končnim (seštejemo le končno členov neskončne vrste, po končnem številu korakov prekinemo iterativno metodo). Zgled napake metode Namesto sin(x) izračunamo g(x) za g(x) := x x 3 /6. Napaka metode je D m = y ỹ = 2.5 10 5
D z = ỹ g(x) = 3.0 10 5 B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 29 / 56 Zaokrožitvena napaka Pri računanju ỹ = g(x) se pri vsaki računski operaciji pojavi zaokrožitvena napaka, tako da namesto ỹ izračunamo ŷ. Sama vrednost ŷ je odvisna od vrstnega reda operacij in načina izračuna g(x). Zaokrožitvena napaka je D z = ỹ ŷ. D z je odvisna je od vrstnega reda in načina računanja g(x). Primer zaokrožitvene napake a 1 = fl(x x) = fl(0.09872164) = 0.9872 10 1 a 2 = fl(a 1 x) = fl(0.03101154) = 0.3101 10 1 a 3 = fl(a 2 /6) = fl(0.0051683...) = 0.5168 10 2 ŷ = fl(x a 3 ) = fl(0.309032) = 0.3090 10 0 Zaokrožitvena napaka je torej
Celotna napaka B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 30 / 56 Celotna napaka Celotna, končna napaka je seštevek vseh napak, D = D n + D m + D z. Velja tudi D D n + D m + D z. Zgled celotne napaka Celotna napaka je D = D n + D m + D z = 1.6 10 5
Stabilnost metode B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 31 / 56 Pri računskem procesu pravimo, da je stabilen oz. nestabilen, ločimo pa direktno in obratno stabilnost. S tem se ukvarja analiza zaokrožitvenih napak. direktna analiza: Iz x namesto y = f (x) izračunamo ŷ. Če je razlika med y in ŷ majhna (absolutno oz. relativno), je proces direktno stabilen (absolutno oz. relativno), sicer pa nestabilen. obratna analiza: Iz x namesto y = f (x) izračunamo ŷ. Sedaj se vprašamo, za koliko moramo spremeniti argument x v x, da bo f ( x) = ŷ. Če je razlika med x in x majhna (absolutno oz. relativno), je proces obratno stabilen (absolutno oz. relativno), sicer pa nestabilen.
Občutljivost, stabilnost in natančnost B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 32 / 56 Algoritem je stabilen, če so rezultati, ki jih vrne, relativno neobčutljivi na motnje, ki se pojavijo zaradi zaokrožitvenih napak med samim računanjem. Obratno stabilen algoritem tako vrne točno rešitev bližnjega problema. Če je problem občutljiv, se točna rešitev bližnjega problema lahko zelo razlikuje od točne rešitve začetnega problema in izračunani rezultat je nenatančen. Nenatančnost je tako lahko posledica: uporabe stabilnega algoritma na občutljivem problemu, uporabe nestabilnega algoritma na neobčutljivem problemu. Natančnost je zagotovljena, kadar neobčutljiv problem rešimo s stabilno numerično metodo.
Analiza zaokrožitvenih napak za produkt n + 1 števil B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 33 / 56 Računamo produkt p = x 0 x 1 x n predstavljivih števil x 0, x 1,..., x n. Eksaktni algoritem: p 0 = x 0 i = 1,..., n p i = p i 1 x i p = p n Dejanski algoritem: p 0 = x 0 i = 1,..., n p i = p i 1 x i (1 + δ i ), p = p n δ i u Dobimo Velja p = p(1 + γ) = p(1 + δ 1 ) (1 + δ n ). (1 u) n 1 + γ (1 + u) n.
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 34 / 56 Ocenimo (1 ± u) n = 1 ± ( ) n u + 1 Če je nu 1, dobimo oceno ( ) n ( u 2 + + u n = 1 ± nu + O (nu) 2). 2 γ nu + O ( (nu) 2). To pomeni, da je ocena relativne napake linearno odvisna od števila množenj. Za relativno napako izračunanega produkta torej velja p p p ( = γ nu + O (nu) 2). Podobno lahko ugotovimo, da je izračunani produkt p cen produkt malo spremenjenih podatkov x i = x i (1 + δ i ). S tem smo dokazali tale izrek. Izrek Računanje produkta n + 1 števil je direktno in obratno stabilno.
Analiza zaokrožitvenih napak za skalarni produkt B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 35 / 56 Dana sta vektorja predstavljivih števil x = (x 1 x n ) T in y = (y 1 y n ) T. Izračunati je treba skalarni produkt s := y T x = n x i y i. i=1 Eksaktni algoritem: s 0 = 0 i = 1,..., n p i = x i y i s i = s i 1 + p i s = s n Dejanski algoritem: ŝ 0 = 0 i = 1,..., n p i = x i y i (1 + α i ), α i u ŝ i = (ŝ i 1 + p i )(1+β i ), β i u ŝ = ŝ n
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 36 / 56 Ker prištevanje števila 0 opravimo eksaktno, privzamemo β 1 = 0. V izračunu nastopajo le istoležni produkti podatkov x i y i. Zato se pri obratni analizi vprašajmo, za kakšen faktor 1 + γ i je treba spremeniti te produkte, da dobimo končni izračunani rezultat, n ŝ = x i y i (1 + γ i ). i=1 Iz algoritma preberemo relacije 1 + γ i = (1 + α i )(1 + β i )(1 + β i+1 ) (1 + β n ), i = 1, 2,..., n. Podobno kot pri produktu števil ocenimo, z malo svobode pri γ 1 ( γ i (n i + 2)u + O (nu) 2), i = 1, 2,..., n. To pomeni, da je ŝ točni skalarni produkt relativno malo zmotenih vektorjev x in y in potrdi sledeči izrek. Izrek Računanje skalarnega produkta je obratno stabilno.
Direktna analiza za izračun skalarnega produkta Pri direktni analizi najprej izračunamo absolutno napako, ŝ s = n n x i y i (1 + γ i ) x i y i = i=1 i=1 n x i y i γ i, i=1 torej ocenimo, ob ugotovitvi γ i nu in zanemarjanju členov višjega reda, ŝ s n n x i y i γ i nu x i y i = nu y T x. i=1 i=1 Dobimo ŝ s s y T x y T x nu. Če so vsi x i y i enakega predznaka, dobimo ŝ s s nu in računanje je direktno stabilno, sicer pa imamo v primeru, ko sta vektorja skoraj pravokotna, lahko veliko relativno napako. B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 37 / 56
Računanje vrednosti polinoma s Hornerjevim algoritmom B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 38 / 56 Dan je polinom p(x) = a 0 x n + a 1 x n 1 + + a n, računamo pa vrednost v točki x po Hornerjevem algoritmu. Eksaktni algoritem: p 0 = a 0 i = 1,..., n p i = p i 1 x + a i p = p n Dejanski algoritem: p 0 = a 0 i = 1,..., n p i = ( p i 1 x(1+α i )+a i )(1+β i ) p = p n Dobimo p = a 0 x n (1 + γ 0 ) + a 1 x n 1 (1 + γ 1 ) + + a n (1 + γ n ), kjer je 1 + γ 0 =(1 + α 1 ) (1 + α n )(1 + β 1 ) (1 + β n ), 1 + γ i =(1 + α i+1 ) (1 + α n )(1 + β i ) (1 + β n ), i = 1,..., n 1, 1 + γ n =(1 + α n ).
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 39 / 56 Torej lahko ocenimo γ 0 2nu in γ i (2(n i) + 1)u, i = 1,..., n. Računanje vrednosti polinoma je obratno stabilno, saj smo izračunali vrednost bližnjega polinoma s koeficienti a i (1 + γ i ) namesto a i. Iz absolutne napake sledi p p = a 0 x n γ 0 + a 1 x n 1 γ 1 + + a n γ n p p p 2nu( a 0 x n + a 1 x n 1 + + a n ) a 0 x n. + + a n Računanje vrednosti polinoma po Hornerju ni direktno stabilno, težave nastopijo tam, kjer členi a i x n i niso enakega predznaka, a je njihova vsota blizu 0.
Računanje vrednosti polinoma, numerično B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 40 / 56 Za predstavo o dobljenih ocenah si poglejmo računanje polinoma (x 2) 9 =x 9 18x 8 + 144x 7 672x 6 + 2016x 5 4032x 4 + 5376x 3 4608x 2 + 2304x 512 v okolici točke 2. Z Matlabom dobimo, če vrednosti gosto tabeliramo v bližini korena 2, Napake niso povsem naključne, saj v bližini 2 odkrijemo vzorec.
Računanje vrednosti polinoma, z oceno B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 41 / 56 V algoritem lahko vstavimo sprotno računanje ocene. Sproti poleg vrednosti samega polinoma računamo tudi glavni del števca ocene, torej vsoto a 0 x n + a 1 x n 1 + + a n. Algoritem: p 0 = a 0 e 0 = a 0 i = 1,..., n p i = p i 1 x + a i e i = e i 1 x + a i p = p n e = 2nu en p
e je ocena za relativno napako. Graf prikazuje razmerje med resnično napako in oceno (minus desetiški logaritem nam da ravno število točnih decimalk). Ocena je res zgornja meja in dejanska napaka je manjša ali enaka, vendar zgled kaže, da so v bližini točke 2 napake res večje in tudi obnašajo se tako, kot napoveduje ocena. B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 42 / 56
Poučni primeri - računanje števila π B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 43 / 56 π je limita obsega S n pravilnega mnogokotnika, včrtanega v krog s polmerom r = 1 2. Naj bo a n stranica pravilnega n-kotnika. Poiščimo zvezo med a n in a 2n : Velja a 2n = ( a n 2 ( ) ) 2 1 1 ( + 2 4 an ) 2 2 = 2 1 1 an 2. 2
Računanje števila π, 2.del Od tod pa iz S n = na n sledi 1 S 2n = 2na 2n = 2n 1 ( S n 2 n ) 2 Začnemo pri n = 6, S 6 = 3 in uporabimo to formulo iterativno. n S n n S n 6 3.0000000 768 3.1430726 12 3.1058285 1536 3.1486607 24 3.1326292 3072 3.1374750 48 3.1393456 6144 3.1819804 96 3.1410184 12288 3.0000000 192 3.1413245 24576 4.2426405 384 3.1416743 49152 0.0000000 Formula odpove, saj pride do odštevanja skoraj enako velikih števil, napaka se množi z 2n. V zgornji tabeli so napačne decimalke rdeče. B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 44 / 56.
Računanje števila π, 3.del B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 45 / 56 Kadar imamo nestabilen postopek, nam ne pomaga niti računanje z večjo natančnostjo. Prava rešitev je preurediti postopek tako, da se med računanjem ne izgublja natančnost. Za stabilno računanje je potrebno formulo preurediti in se izogniti odštevanju enako velikih števil. Stabilna oblika je ( 1 S 2n = 2n 1 ( ) S n ) 2 n (1 + ( 2 1 + 2 = S n 1 + 1 ( S n ). 2 n 1 ( S n n ) 2 ) 1 ( S n n ) 2 )
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 46 / 56 Sedaj dobimo pravilne rezultate: n S n n S n 6 3.0000000 768 3.1415839 12 3.1058285 1536 3.1375906 24 3.1326287 3072 3.1415923 48 3.1393502 6144 3.1415927 96 3.1410320 12288 3.1415927 192 3.1414526 24576 3.1415927 384 3.1415577 49152 3.1415927
Seštevanje Taylorjeve vrste za e x Vemo, da Taylorjeva vrsta za eksponentno funkcijo e x = ( 1) n x n n! n=0 konvergira za vsak x C. Če to vrsto seštevamo numerično po vrsti, za x 0 ne dobimo pričakovanih rezultatov. x e x vrsta relativna napaka 1 3.678795 10 1 3.678794 10 1 1.4 10 7 2 1.353353 10 1 1.353353 10 1 2.3 10 7 3 4.978707 10 2 4.978702 10 2 9.3 10 7 4 1.831564 10 2 1.831531 10 2 1.8 10 5 5 6.737947 10 3 6.737477 10 3 7.0 10 5 6 2.478752 10 3 2.477039 10 3 6.9 10 4 7 9.118820 10 4 9.139248 10 4 2.2 10 3 8 3.354626 10 4 3.485951 10 4 3.9 10 2 9 1.234098 10 4 1.799276 10 4 4.6 10 1 10 4.539992 10 5 7.266693 10 5 2.6 10 0 B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 47 / 56
Seštevanje Taylorjeve vrste za e x, 2. del B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 48 / 56 Za alternirajoče vrste vemo, da konvergirajo, če členi od nekega člena naprej padajo in je njihova limita enaka 0. Prav to, da zaporedje členov vrste alternira in po absolutni vrednosti nekaj časa narašča, je razlog za nesmiselni rezultat. Ko so členi največji, se zameglijo majhne decimalke, ki ostanejo netočne do konca računanja.
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 49 / 56 Izračunane vrednosti členov in delnih vsot vrste kaže sledeča tabela. n a n s n n a n s n 0 1.000000 1.000000 20 41.103188 13.396751 1 10.000000 9.000000 21 19.572947 6.176195 2 50.000000 41.000000 22 8.896794 2.720599 3 166.666672 125.666672 23 3.868171 1.147572 4 416.666687 291.000000 24 1.611738 0.464166 5 833.333374 542.333374 25 0.644695 0.180529 6 1388.888916 846.555542 26 0.247960 0.067430 7 1984.127075 1137.571533 27 0.091837 0.024407 8 2480.158936 1342.587402 28 0.032799 0.008392 9 2755.732178 1413.144775 29 0.011310 0.002918 10 2755.732178 1342.587402 30 0.000380 0.000852 11 2505.211182 1162.623779 31 0.001216 0.000364 12 2087.676025 925.052246 32 0.000380 0.000016 13 1605.904663 680.852417 33 0.000115 0.000099 14 1147.074707 466.222290 34 0.000034 0.000065 15 764.716492 298.494202 35 0.000010 0.000075 16 477.947815 179.453613 36 0.000003 0.000072 17 281.145782 101.692169 37 0.000001 0.000073 18 156.192108 54.499939 38 0.000000 0.000073 19 82.206375 27.706436 39 0.000000 0.000073
B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 50 / 56 Računanje vrednosti integrala I 10 Integrale I n := 1 0 x n e x 1 dx, n = 0, 1,..., lahko računamo rekurzivno po formuli, ki jo dobimo z integracijo per partes, I n = x n e x 1 1 1 0 n x n 1 e x 1 dx = 1 ni n 1. 0 Poznamo začetno vrednost I 0 = 1 e 1. V enojni natančnosti dobimo n I n n I n 0 0.6321205 7 0.1124296 1 0.3678795 8 0.1005630 2 0.2642411 9 0.0949326 3 0.2072767 10 0.0506744 4 0.1708932 11 0.4425812 5 0.1455340 12 4.3109741 6 0.1267958 13 57.0426636 Razlog je v formuli I n = 1 ni n 1. Napaka pri členu I n 1 se pomnoži z n in torej po absolutni vrednosti hitro narašča, točne vrednosti I n pa padajo.
Računanje I 10, 2. del Če računamo v obratni smeri, I n 1 = 1 I n, n se napaka v vsakem koraku deli z n. Če začnemo pri nekem dovolj velikem členu, lahko z napačnim začetnim I n = 0 izračunamo vse začetne člene dovolj natančno. Če začnemo z I 26 = 0 tako dobimo (v enojni natančnosti) vse člene od I 12 do I 0 na vse decimalke točno. n I n n I n 0 0.6321205 8 0.1009320 1 0.3678795 9 0.0916123 2 0.2642411 10 0.0838771 3 0.2072766 11 0.0773522 4 0.1708934 12 0.0717733 5 0.1455329 13 0.0669477 6 0.1268024.. 7 0.1123835 26 0.0000000 B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 51 / 56
Zaporedno korenjenje in kvadriranje Vzamemo število x > 0, ga najprej 80-krat korenimo in nato 80-krat kvadriramo. Kaj dobimo? Izkaže se, da za x 1 dobimo 1, za 0 < x < 1 pa dobimo 0! Za razumljivejšo razlago si poglejmo model kalkulatorja HP 48G, kjer je baza desetiška, dolžina mantise pa je 12. Poglejmo najprej primer 0 < x < 1. Za takšne x velja x > x. Največje predstavljivo število, ki je še manjše od 1, je 1 10 12 oziroma 0. 9 }. {{.. 9 }. 12 Zaradi 1 + x = 1 + 1 x 1 x 2 + velja 2 8 1 10 12 = 1 1 2 10 12 1 8 10 24 + = 0. 9 }. {{.. 9 } 4 9 }. {{.. 9 } 87..., 12 11 in število se zaokroži na 0. 9 }. {{.. 9 }. Tako s korenjenjem nikoli ne pridemo do 1, 12 ko pa kvadriramo, je število vedno manjše, dokler ne pride do podkoračitve in dobimo 0. Prvo predstavljivo število, ki je večje od 1 je 1 + 10 11. Tu dobimo 1 + 10 11 = 1 + 1 2 10 11 1 8 10 22 + = 1. 0 }. {{.. 0 } 4 9 }. {{.. 9 } 87..., 11 10 kar se zaokroži na 1. Tako s korenjenjem pridemo do 1, s kvadriranjem pa se to ne spremeni. B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 52 / 56
Seštevanje številske vrste B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 53 / 56 Znano je, da velja k=1 1 k 2 = π2 6 = 1.644934066848... Kako bi to sešteli, če tega ne bi vedeli? Prištevamo člene, dokler se vsota ne spreminja več. V enojni natančnosti tako dobimo 1.64472532..., vrednost pa dosežemo pri k = 4096. V tem koraku delni vsoti 1.6 prištevamo 2 24. Seštevamo v obratnem vrstnem redu od malih cifer proti velikim. Izkaže se, da bi za približek 1.64493406 z 8 točnimi decimalkami morali sešteti 10 9 členov! Seveda nobeden izmed zgornjih dveh načinov ni primeren, se pa da z ustrezno numerično metodo dobiti dovolj natančen približek z uporabo relativno malo členov.
Tričlenska rekurzivna formula B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 54 / 56 Dana je tričlenska rekurzivna formula x k+1 = 2.25x k 0.5x k 1 in začetni dve vrednosti x 1 = 1/3 in x 2 = 1/12. Pri teh pogojih je splošna rešitev x k = 4 3 4 k. Numerično dobimo naslednje točke (logaritemska skala)
Tričlenska rekurzivna formula, 2.del B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 55 / 56 Odgovor se skriva v dejstvu, da je splošna rešitev dane diferenčne enačbe ( ) 1 k x k = α + β2 k. 4 Zaradi zaokrožitvenih napak je β 0 in prej ali slej drugi člen prevlada. Zaradi zaokrožitvenih napak imamo na začetku x 1 = 1 3 (40 + 2 56 ) x 2 = 1 3 (4 1 + 2 55 ) Splošna (točna) rešitev za zgornja x 1, x 2 je x k = 1 3 (41 k + 2 k 57 ), do preobrata pride ravno ko je 4 1 k = 2 k 57 oziroma k 20.
Reševanje kvadratne enačbe Rešitvi kvadratne enačbe ax 2 + bx + c = 0 sta podani s formulo x 1,2 = b ± b 2 4ac. 2a Če vzamemo npr. a = 1.2345678, b = 76543210.5, c = 0.1122334455, v dvojni natančnosti dobimo x 1 = 6.200000558900046 10 7, x 2 = 6.034970778375905 10 9, točni ničli pa sta x 1 = 6.200000558900046 10 7, x 2 = 1.466275647008561 10 9. Težava se je pojavila pri odštevanje približno enako velikih števil pri računanju x 2. Rešitev je, da eno rešitev izračunamo po formuli (odvisno od predznaka b), drugo pa dobimo iz Vietove formule x 1 x 2 = c/a. Tako iz x 2 = c/(ax 1 ) dobimo pravilno x 2 = 1.466275647008561 10 9. To ni edina težava, ki se lahko pojavi pri formulu za kvadratno enačbo. Če so koeficienti zelo veliki ali zelo majhni, potem lahko pride do prekoračitve ali podkoračitve obsega pri računanju b 2 4ac. Temu se lahko izognemo, če celo enačbo delimo s tistim koeficientom a, b, c, ki ima največjo absolutno vrednost. B. Plestenjak, J.Kozak: Uvod v numerične metode 2011-2012 56 / 56