Milí studenti, posílám opět trošku zábavy s programováním. 1. Je dána aritmetická posloupnost, a1 = 3, d = 5. 1a) Uložte do seznamu prvních 10 členů. 1b) Vypočtěte součet prvních 10 členů. Postupujte hrubou silou (prostě sčítejte), vyzkoušejte cyklus for s krokem 5. 1c) Vypočtěte součet prvních 10 členů. Použijte vzorec pro součet prvních n členů Co může pomoci při řešení úlohy 1b: Vyzkoušejte si všechny tři varianty generátoru range(): # od 0 do 10 (bez 10) for k in range(10): print(k) print() # od 2 do 10 (bez 10) for k in range(2, 10): print(k) print() # od 1 do 20 (bez 20) s krokem 3 for k in range(1, 20, 3): print(k) 2. Zábava s faktoriály a kombinačními čísly 2a) Napište funkci faktorial(n), použijte programu, který jsme napsali společně v závěru semináře. 2b) Pomocí funkce faktorial(n) napište funkci kombin(n, k), která bude vracet hodnotu kombinačního čísla n nad k. 2c) Napište program, který vypíše prvních 10 řádků Pascalova trojúhelníku. Jeho řádky toří kombinační čísla, výpis tedy bude vypadat takto: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 Využijte funkci kombin(n, k). 2d) Napište program, který vypíše součet všech kombinačních čísel v jednotlivých řádcích Pascalova trojúhelníku. Výpis proveďte pro prvních 10 řádků Pascalova trojúhelníku. Výsledkem by tedy mělo být 9 čísel, která by měla být rovna těmto součtům: 1 1+1 1+2+1 1+3+3+1 1+4+6+4+1 1+5+10+10+5+1 1+6+15+20+15+6+1 1+7+21+35+35+21+7+1 1+8+28+56+70+56+28+8+1 2e) Tentokrát není potřeba psát žádný program, jen uvažujme. Funkci vracející kombinační čísla jsme napsali pomocí funkce faktorial(n). Násobíme tedy n čísel, k čísel a n-k čísel. Celkem je to 2n násobení. Další nevýhoda: n! je obrovské číslo. Pokud budeme počítat n nad k podle vztahu n * (n-1) * (n-2) * (n-2) * ... * (n-k+1) // ( 1*2*3* ... * k ), dostaneme mnohem efektivnější program (méně násobení (2k), menší čísla): def kombin(n, k): komb = 1 for i in range(1, k+1): komb = komb * (n-i+1) // i return komb 3. Dá se dokázat, že Eulerovo číslo e = 1 + 1/1! + 1/2! + 1/3! + 1/4! + ... Napište program, který vypočte a vypíše součet aspoň prvních 100 členů této řady. Můžete použít funkci faktorial(n). Přeji příjemnou zábavu s programováním i s matematikou. Těším se na příští programování, Zdeněk Halas