Cvičení z "Programování pro fyziky" (pondělí, 14:00 - 15:30)

email address as a .gif file



Zadání domácích úloh

  1. Napište program, který vytiskne prvních n řádek trojúhelníku složeného z hvězdiček, zarovnaného vpravo (na i-tém řádku vždy i hvězdiček). Číslo n načtěte z klávesnice. (termín odevzdání: 29.10.) (řešení)
  2. Napište program, který vytiskne všechna prvočísla od 2 do N. (termín odevzdání: 12.11.) (řešení)
  3. Napište program, který pro zadanou počáteční rychlost a úhel spočítá dráhu šikmého vrhu a výsledek vykreslí. (termín odevzdání: 19.11.) (řešení)
  4. Zadefinujte si vlastní funkce pro skalární a vektorové násobení a s jejich pomocí na konkrétně zvolených vektorech A, B, C demonstrujte platnost pravidla "BAC minus CAB". (termín odevzdání: 26.11.) (řešení)
  5. Zadání 5. domácího úkolu (termín odevzdání: 3.12.) (řešení)
  6. "Ověřte" centrální limitní teorém pomocí náhodných čísel. Vygenerujte celem milión desetic čísel od 0 do 1 (tj. celkem deset miliónů náhodných čísel). Pro každou z nich spočítejte průměrnou hodnotu (bude mezi 0 a 1, hodnoty kolem 0.5 budou nejčastější). Vytvořte histogram těchto průměrných hodnot (100 binů od 0 do 1) a vykreslete jej, optimálně normovaný na "hustotu pravděpodobosti" (tj. tak, aby jeho integrál byl roven 1). Překreslete odpovídající Gaussovku (střední hodnota 0.5, sigma=1/sqrt(12*N), kde N=10). (termín odevzdání: 17.12.) (jak by mělo vyjít) (řešení)
  7. Zadání 7. domácího úkolu (termín odevzdání: 17.12.) (jak by mělo vyjít) (řešení)
  8. Zadání 8. domácího úkolu (termín odevzdání: 7.1.) (řešení)

Hodnocení domácích úloh (na zápočet potřeba 65b, ostatní individuálně)

Jméno DÚ 1 DÚ 2 DÚ 3 DÚ 4 DÚ 5 DÚ 6 DÚ 7 DÚ 8 Celkem
Radek Brabenec 10 10 10 10 10 10 10   70 (zápočet)
Emma Deáková 10 5 10 8 10 10 10 7 70 (zápočet)
Boris Gut 10 10 0 10 10 10 9 9 68 (zápočet)
Amálie Anna Kulhánková 10 10 7 10 10 10 10   67 (zápočet)
Adam Kutálek 10 8 10 10 10 10 9 9 76 (zápočet)
Adam Oliver Kužílek 10 9 10 10 10 10 10   69 (zápočet)
Šimon Láznička 10 9 10 10 10 10 10   69 (zápočet)
Xuan My Le 10 9 10 10 10 10 10   69 (zápočet)
Vojtěch Lembej 10 9 10 10 10 10 10 10 79 (zápočet)
Ivan Lichý 10 8 10 10 10 10 10   68 (zápočet)
Silvia Majbová 10 7 10 10 10 10 10 10 77 (zápočet)
Jan Mareš 0 0 0 0 0 0 0   0
Matyáš Mazal 10 10 10 10 10 10 10 9 79 (zápočet)
Petr Vitko 10 10 10 10 10 10 10   70 (zápočet)

Úlohy probrané na cvičení

2. října 2023

Slovní úlohy "s algoritmickou tématikou"

9. října 2023

Ahoj světe!
Nejjednodušší program, vytiskne text
Obsah kruhu
Načte poloměr kruhu a spočítá jeho obsah
Sudé liché
Načte číslo a určí, zda je sudé či liché
Kvadraty s "for" cyklem
Vytiskne kvadráty čísel od 0 do 10 pomocí for cyklu
Součet čísel od 1 do 100
Spočítá a vytiskne součet čísel od 1 do 100
Faktoriál
Vypočítá faktoriál zadaného čísla

16. října 2023

Trojciferná čísla s ciferným součtem 16
Zjistí, kolik je trojciferných čísel s ciferným součtem 16
Pí řada
Spočítá hodnotu čísla Pí jako součet (nekonečné) řady

23. října 2023

Je prvočíslo
Zjistí, zda je dané číslo prvočíslo či nikoli
Trojúhelník
Vytiskne trojúhelník složený z hvězdiček
Kvadráty s "while" cyklem
Vytiskne kvadráty čísel od 0 do 10 pomocí while cyklu
Ciferný součet
Vytiskne ciferný součet zadaného čísla
Aritmetický průměr
Načte řadu reálných čísel (ukončená nulou) a vytiskne její aritmetický průměr
Euklid
Najde největšího společného dělitele dvou zadaných čísel

30. října 2023

Součet řady 1/2 + 1/4 + 1/8 + ...
pomocí while
Nejdelší rostoucí úsek
Vytiskne délku nejdelšího rostoucího úseku v zadané posloupnosti (posloupnost ukončená číslem 0)
Rozložení zadaného čísla na prvočinitele
Načte číslo a vytiskne jeho rozklad na prvočitele
Úvod do seznamů (list)
Učíme se dělat seznamy

6. listopadu 2023

Pokračování se seznamy (list)
Už je celkem umíme
Dvojková soustava
převede zadané číslo do dvojkové soustavy
Najdi maximum
Vytiskne nejvyšší číslo obsažené v daném poli
Pascalův trojúhelník
vytiskne prvních N řádek Pascalova trojúhelníku

13. listopadu 2023

Opakující se výskyty
která čísla se v poli opakují a počet jejich výskytů
Bubblesort
Řazení pole pomocí "probublávání"
Úvod do polí (np.array)
Učíme se dělat pole
Úvod do kreslení (matplotlib.pyplot)
Učíme se kreslit

20. listopadu 2023

Pokračování s poli (np.array)
Už je celkem umíme
Pokračování s kreslením (matplotlib.pyplot)
Už to celkem umíme
Najdi číslo v setřízeném poli
Zjistí, zda se dané číslo vyskytuje či nevyskytuje v poli
Úvod do funkcí
Učíme se psát vlastní funkce
Lokální / globální proměnné
Tušíme co a jak
Absolutní hodnota
Funkce vracející absolutní hodnotu čísla
Faktoriál
výpočet faktoriálu pomocí rekurze
Fibbonaciho posloupnost
pomocí rekurze

27. listopadu 2023

Hanojské věže
řešení pomocí rekurze
Úvod do náhodných čísel (random)
Učíme se generovat náhodná čísla
Střední hodnota a směrodatná odchylka
Výpočet, netřeba si pamatovat všechny
Střední hodnota a směrodatná odchylka rychleji (numba njit)
Demonstrace numba.njit
Monte Carlo - výpočet Pí
výpočet čísla Pí pomocí náhodných čísel

4. prosince 2023

Půlení intervalu
řešení rovnice metodou půlení intervalů
Newtonova metoda tečen
řešení rovnice metodou tečen
Quicksort
řazení pole
Quicksort 2
jiná verze algoritmu (bonus, nedělali jsme, jen zmiňovali)
Úvod do práce se soubory
ASCII soubory + np.save/savez/load

18. prosince 2023

"Vzorová písemka"
odkaz na google colab
Řešení prvního příkladu
snad
Řešení příkladu dvě A
to
Řešení příkladu dvě B
takhle
Řešení příkladu tři
může
Řešení příkladu čtyři
být
Zbytek práce se soubory
pickle + json
Numerické řešení diferenciální rovnice 1. řádu
nejjednodušší, Eulerova metoda
Numerické řešení diferenciální rovnice 2. řádu (harmonický oscilátor)
polohu počítáme z nové rychlosti - vede k lepší přesnosti

8. ledna 2024

Neharmonické kmity
a testování různých počátečních podmínek
Obdoba minulého příkladu
oddělení "řešiče" do zvláštní funkce a reprezentace polem
Oběh Země kolem Slunce
rádi bychom dostali kružnici
Oběh Země kolem Slunce
přesnější metoda
Oběh Země kolem Slunce
s využitím knihovny
Náhodná procházka
1D, střední uražená vzdálenost
Cesta koně
mezi dvěma poli na šachovnici