Matematika pro informatiku 4 Doc. RNDr. Alena Šolcová, Ph. D., KTI FIT ČVUT v Praze 7.března 2011 Evropský sociální fond Investujeme do vaší budoucnosti Alena Šolcová
Lámejte si hlavu - L1 Určete všechny podgrupy v grupě zadané Cayleyho tabulkou: x y z x x y z y y z x z z x y Odpovědi zasílejte na adresu: alena.solcova@fit.cvut.cz. Do předmětu zprávy: Jméno, číslo skupiny, L1 2.12.2011 Alena Šolcová, FIT CVUT v Praze 2
Lámejte si hlavu L2 1. Ověřte, zda dané zobrazení je homomorfismus: : (Z, +) (R, +), n = 2n + 1 2. Najděte všechna řešení kongruence 27x + 24 50x + 8 (mod 7) Odpovědi zasílejte na alena.solcova@fit.cvut.cz Subjekt: Jméno, číslo skupiny, L2 2.12.2011 Alena Šolcová, FIT CVUT v Praze 3
Zbytkové třídy podle modulu n Definice: Podmnožiny v Z skládající se právě ze všech čísel, která při dělení číslem n mají stejný zbytek, nazveme zbytkové třídy podle modulu n. Množina zbytkových tříd podle modulu n je rozkladem množiny Z. Třídy jsou disjunktní a jejich počet je n. Každá zbytková třída podle modulu n je úplně určena libovolným svým prvkem. Různé zbytkové třídy nemohou mít žádné společné prvky. Vysvětlete! 2.12.2011 Alena Šolcová, FIT CVUT v Praze 4
Příklad: Všechny zbytkové třídy mod 5 0 = {, -15, -10, -5, 0, 5, 10, 15, } 1 = {, -14, -9, -4, 1, 6, 11, 16, } 2 = {, -13, -8, -3, 2, 7, 12, 17, } 3 = {, -12, -7, -2, 3, 8, 13, 18, } 4 = {, -11, -6, -1, 4, 9, 14, 19, } Z5 = {0, 1, 2, 3, 4} 2.12.2011 Alena Šolcová, FIT CVUT v Praze 5
Skládání kongruencí Věta: Platí-li a a 1 (mod n), b b 1 (mod n), potom 1. a + b a 1 + b 1 (mod n) 2. a. b a 1. b 1 (mod n) Sečteme-li dvě čísla z některých zbytkových tříd podle modulu n, pak výsledek patří do některé zbytkové třídy podle modulu n. Sečteme-li však další dvě čísla, z těchto zbytkových tříd, patří jejich součet opět do stejné třídy, jako patřil součet původních čísel. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 6
Sčítání zbytkových tříd Jsou-li a, b dvě zbytkové třídy z množiny Z n, pak třídu a + b nazveme součtem tříd a, b a píšeme a + b = a + b. Příklad: Z5 = {0, 1, 2, 3, 4} je množina zbytkových tříd podle modulu 5. Potom 1 + 3 = 4, 2 + 3 = 0, 2.12.2011 Alena Šolcová, FIT CVUT v Praze 7
Součin zbytkových tříd Jsou-li a, b zbytkové třídy z množiny Z n, pak třídu ab nazýváme součin zbytkových tříd a, b a píšeme ab = a. b Příklad: Pro třídy ze Z 5 platí např. 2. 1 = 2 3. 4 = 2 2.12.2011 Alena Šolcová, FIT CVUT v Praze 8
Vlastnosti operací na zbytkových třídách Věta: Je-li n libovolné přirozené číslo a Z n množina zbytkových tříd podle modulu n, pak (Z n, +) je konečná abelovská grupa řádu n. Třída 0 je neutrální prvek. Třída opačná k a = n a = -a inverzní prvek. Násobení zbytkových tříd složitější: Věta: Nechť n > 1 je přirozené číslo. Pak násobení. zbytkových tříd podle modulu n je asociativní a komutativní operace na Z n. Přitom v Z n existuje neutrální prvek vzhledem k., který je roven třídě 1. Pro třídu 0 neexistuje inverzní prvek. Není grupa! 2.12.2011 Alena Šolcová, FIT CVUT v Praze 9
(Z n \ {0}) a operace násobení Věta: Je-li n > 1 přirozené číslo, pak ((Zn \ {0}),.) je grupa (abelovská), právě tehdy, když n je prvočíslo. Tabulky pro násobení podle modulů 4 a 5 1 2 3 1 1 2 3 2 2 0 2 3 3 2 1 1 2 3 4 1 1 2 3 4 2 2 4 1 3 3 3 1 4 2 4 4 3 2 1 2.12.2011 Alena Šolcová, FIT CVUT v Praze 10
Čínská věta o zbytcích Řešení soustavy lineárních kongruencí jedné proměnné bylo známo již ve staré Číně, Indii a Řecku Příklad Mistra Suna (mezi 287-473): Najdi číslo, které při dělení třemi dá zbytek 1, při dělení dvěma dá zbytek 5 a při dělení třemi dá zbytek 7. Převedeme-li do jazyka kongruencí: x 1(mod 3), x 2 (mod 5), x 3(mod 2.12.2011 Alena Šolcová, FIT CVUT v Praze 11 7 )
Algebra a algoritmy Algoritmy pro výpočet kořenů polynomů Bolzanova věta Metoda půlení intervalů Newtonova metoda Generátory pseudonáhodných čísel Eukleidovy algoritmy 2.12.2011 Alena Šolcová, FIT CVUT v Praze 12
Slovo algoritmus Abu Abd Allah Muhammad ibn Musa al- Chwarismi (asi 825) - algoritmus Otec Abdulláha, Mohammeda, syn Mojžíšův, narozený v Chorezmu (povodí řeky Abu Darji) Kitab al-jabr wa l-muqabala Pravidla pro odvozování a srovnávání 2.12.2011 Alena Šolcová, FIT CVUT v Praze 13
Literatura Heinz Zemanek: Lecture notes in Computer Science 122 (1981), 1-81. Donald E. Knuth: Umění programování, Computer Press, Brno 2008 (1997 in English The Art of Computer Programming) 2.12.2011 Alena Šolcová, FIT CVUT v Praze 14
Algoritmus E Eukleidův algoritmus Jsou-li dána dvě kladná celá čísla m a n, nalezněte jejich největšího společného dělitele, tedy největší kladné celé číslo, kterým jsou beze zbytku dělitelná m i n. E1. (Nalezení zbytku) Vydělte m číslem n a nechť r je zbytek, 0 r < n. E2. (Je zbytek roven nule?) Pokud r = 0, algoritmus končí a n je odpověď E3. (Redukce) Přiřaďte m n, n r a vraťte se do kroku E1. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 15
Algoritmus E Nalezení zbytku Je zbytek roven nule? Redukce 2.12.2011 Alena Šolcová, FIT CVUT v Praze 16
Algoritmus A1 Modernější Eukleidův algoritmus Jsou-li dána nezáporná celá čísla u a v, pak tento algoritmus nalezne jejich největšího společného dělitele. Pokud algoritmus aplikujeme na Abs(u) a Abs(v), nalezne NSD libovolných dvou celých čísel u a v. A1. v = 0? Je-li v = 0, algoritmus končí a vydá v jako odpověď. A2. Výpočet u mov v Přiřaďte r u mod v, u v, v r a vraťte se na krok A1. Operacemi v tomto kroku se sníží hodnota v, avšak NSD(u,v) zůstane beze změny. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 17
Příklad na použití algoritmu A Určete NSD (40902, 24140): NSD (40902, 24140) = NSD (24140, 16762) = = NSD (16762, 7378) = NSD (7378, 2006) = = NSD (2006, 1360) = NSD (1360, 646) = = NSD (646, 68) = NSD (68, 34) = NSD (34, 0) = = 34 Správnost použití algoritmu plyne z ekvivalence NSD (u, v) = NSD (v, u qv) pro lib. celé q 2.12.2011 Alena Šolcová, FIT CVUT v Praze 18
Bolzanova věta o překročení řeky Nechť f je spojitá funkce na intervalu <a, b> a nechť platí f (a). f (b) < 0. Potom existuje bod x v intervalu (a, b), pro který je f (x) = 0. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 19
Metoda půlení intervalů Metoda půlení intervalu je numerická metoda, která slouží k přibližnému určení kořene rovnice ve tvaru f(x)= 0. Předpoklady: f(x) je spojitá na < a, b > f(a) má opačné znaménko než f(b) Přesnost je určena velikostí intervalu,v němž se bude nacházet skutečná hodnota kořene. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 20
Metoda půlení intervalu příklad Hledáme nulový bod funkce f(x) = x 2 2 Jako výchozí interval <a,b> zvolíme <0,2> Platí: f(0) = 2<0, f(2) = 2>0. Střed intervalu: 1... f(1)= 1 f(1)<0, tedy nahradíme levý krajní bod středem, tj. bodem 1 a 1 = 1 b 1 = 2 f(1.5) = 0.25 > 0 a 2 = 1 b 2 = 1.5 f(1.25) = -0.4375 < 0 a 3 = 1.25 b 3 = 1.5 f(1.375) = -0.1093 < 0 a 4 = 1.375 b 4 = 1.5 f(1.4375) = 0.0664 > 0 a 5 = 1.375 b 5 = 1.4375 f(1.40625) = -0.0224 < 0 a 6 = 1.40625 b 6 = 1.4375 f(1.421875) = 0.0217 > 0 a 7 = 1.40625 b 7 = 1.421875 f(1.4140625) = -0.0004 <0 Kořen leží v intervalu <1.40625, 1.421875>, střed intervalu: 1.4140625, správná hodnota 1.4142135 2.12.2011 Alena Šolcová, FIT CVUT v Praze 21
Newtonova metoda Jeden krok metody tečen při hledání řešení f(x) = 0. x n představuje původní odhad, v bodě f(x n ) je sestrojena tečna ke křivce f(x). V místě, kde tečna protíná osu x, se nachází nový odhad x n + 1. Metoda tečen je iterační numerická metoda žívaná v numerické matematice k numerickému řešení soustav nelineárních rovnic. Nazývá se také Newtonova metoda (nebo Newton-Raphsonova metoda) a metodou tečen je označována, protože přesnější aproximace řešení rovnice f(x) = 0 se hledá ve směru tečny funkce f(x). 2.12.2011 Alena Šolcová, FIT CVUT v Praze 22
Popis algoritmu Newtonova metoda tečen slouží k nalezení řešení rovnice f(x) = 0 za předpokladu, že známe derivaci funkce f'(x), tedy směrnici tečny. Pro jednoduchost dále předpokládejme, že x i f(x) jsou skaláry. Dalším nezbytným předpokladem je znalost počáteční hodnoty x 0, v jejíž blízkosti hledáme řešení. Pokud se funkce f(x) chová rozumně (je spojitá, hladká a monotónní v intervalu, ve kterém hledáme řešení), lze očekávat řešení v místě, kde tečna sestrojená z bodu f(x 0 ) protíná osu x. (Směrnice této tečny je f'(x 0 ).) Tento průsečík označíme x 1 a vypočteme jej podle následujícího vztahu. Za splnění výše uvedených předpokladů by měla hodnota f(x 1 ) být blíže nule než původní f(x 0 ). Stejný postup můžeme opakovat a najít tak ještě přesnější hodnotu x k. Iteraci provádíme tak dlouho, dokud hodnota f(x k ) neleží dostatečně blízko nuly. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 23
Popis algoritmu II Nechť f(x 0 ) = y 0 a je známa derivace f (x 0 ) = k. Nahradíme funkci Taylorovým polynomem 1. stupně: f (x) = y 0 + k (x-x 0 ) Hledáme nulový bod: Řešíme lineární rovnici pro neznámou x 0 = y 0 + k (x x 0 ) kx = kx 0 y 0 x = x 0 y 0 /k Vzorec pro další iteraci tedy je x k+1 = x k f(x k ) / f (x k ), k=0,1,2, 2.12.2011 Alena Šolcová, FIT CVUT v Praze 24
Příklad: Výpočet druhé odmocniny Úkolem je vypočítat druhou odmocninu kladného reálného čísla a. Problém lze definovat také jako nalezení kořenu funkce f(x) = x 2 a, neboli řešení rovnice f(x) = 0. Vypočteme derivaci f'(x). f'(x) = 2x Dosadíme do obecného vzorce a upravíme. Získáváme tak rekurentní rovnici, u které jako počáteční podmínku můžeme zvolit x 0 = a. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 25
Výpočet (druhé odmocniny z devíti) bude podle výše uvedeného algoritmu probíhat následovně. a = 9 x 0 = 9 x 1 = 5 x 2 = 3.4 x 3 = 3.02352941176471 x 4 = 3.00009155413138 x 5 = 3.00000000139698 x 6 = 3.00000000000000 x 7 = 3.00000000000000 Ukázka výpočtu, neboli x 2 9 = 0, metodou tečen. Je vidět, že po několika málo krocích se hodnota x k nemění a ustálí se (konverguje) na hodnotě 3, což odpovídá správnému výsledku. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 26
Poznámka 1 Aproximace derivace Pokud známe pouze funkci f(x) a neznáme její derivaci f'(x), můžeme se pokusit derivaci nahradit numerickou derivací. Případně je možné řešit úlohu metodou sečen, která znalost derivace nevyžaduje. Rychlost konvergence Newtonovy metody je kvadratická, tj. s každým krokem se počet správných číslic přibližně zdvojnásobí. Pro nevhodné počáteční podmínky nemusí Newtonova metoda konvergovat. Jestliže funkce není hladká, je lepší použít metodu půlení intervalu, která konverguje vždy. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 27
Poznámka 2 - Vektory Je-li funkce f(x) skalární funkcí vektorového argumentu ( z vektoru vypočte skalár ), je nutné hledat x k+1 proti směru gradientu. Předpis pro iteraci lze potom napsat takto: Pokud je funkce f(x) vektorovou funkcí vektorového argumentu ( z vektoru vypočte vektor ), lze předpis pro iteraci napsat takto: 2.12.2011 Alena Šolcová, FIT CVUT v Praze 28
Jacobiho matice Matice J je takzvaná Jacobiho matice (a její determinant jakobián) obsahující parciální derivace. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 29
Algoritmus pro generování náhodných čísel Čísla, která vybíráme náhodně jsou užitečná v řadě aplikací: A. Simulace B. Vzorkování C. Numerická analýza D. Programování počítačů E. Rozhodování F. Kryptografie G. Estetika 2.12.2011 Alena Šolcová, FIT CVUT v Praze 30
Návrh Johna von Neumanna 1946 použít čtverec předchozího náhodného čísla a vzít z něho prostřední číslice. Př. 5772156649 10-ciferná čísla 33317792380594909201 Námitka: Jak může být posloupnost cifer náhodná, když je plně určena svým předchůdcem? 2.12.2011 Alena Šolcová, FIT CVUT v Praze 31
Generátor K Knuth 1959 Generátor supernáhodných čísel K1. Výběr počtu iterací Přiřaďte Y X/10 9 K2. Výběr náhodného kroku Přiřaďte Z (X/10 8 ) mod 10 Přejděte na K(3 + Z) K3. Zajištění 5 x 10 9 Je-li X < 5000000000, přiřaďte X X + 5000000000 K4. Prostředek čtverce Nahraďte X za (X 2 /10 5 ) mod 10 K5. Násobení Nahraďte X za (1001001001) mod 10 10 K6. Pseudokomplement Jestliže X < 100000000, pak přiřaďte X X + 9814055677, jinak přiřaďte X 10 10 - X 2.12.2011 Alena Šolcová, FIT CVUT v Praze 32
Generátor K K7. Výměna polovin Prohoďte nižších 5 číslic čísla X s vyššími pěti číslicemi K8. Násobení Proveďte totéž co v K5. K9. Zmenšení číslic Zmenšete každou nenulovou číslici v desítkové reprezentaci čísla X o 1. K10. Úprava o 99 999 Je-li X < 10 5, přiřaďte X X 2 + 99999, jinak přiřaďte X X - 99999 K11. Normalizace (Nyní nemůže být X = 0.) Je-li X < 10 9, přiřaďte X 10 X a opakujte tento krok. K12. Upravený prostředek čtverce Nahraďte X za (X(X - 1)/10 5 ) mod10 10. K13. Opakovat? Je-li Y> 0, zmenšete Y o 1 a vraaťte se na krok K2. Je-li Y = 0, algoritmus končí a X je náhodná hodnota. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 33
Generátor K Nevydává nekonečně mnoho náhodných čísel. Za určitých podmínek konverguje. Zkuste aplikovat K na X = 3830941686 Náhodná čísla nelze generovat náhodně zvolenou metodou, lépe je podpořit výpočet teorií. K je pro procvičení, existují lepší generátory, např. lineární kongruentní posloupnosti. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 34
Lámejte si hlavu H5 Dejme tomu, že potřebujete náhodně zvolit nějakou desítkovou číslici, ale bez počítače, která z metod je vhodná a proč? A)Podíváte se na náramkové hodinky, a pokud se sekundová ručička nachází v poloze mezi 6n a 6(n+1) sekundami, zvolíte číslici n. B) Požádáte přítele, aby si myslel náhodné číslo, a vezmete číslici, kterou vám navrhne. 2.12.2011 Alena Šolcová, FIT CVUT v Praze 35