Pavel Stránský
Contact: Contact
Česky English
Last updated: 2.8.2022
Všechny cykly cvičení
2018-2019
2019-2020
2020-2021
2021-2022

Použití počítačů ve fyzice

Akademický rok 2021-2022

Rozvrh cvičení

Výuka probíhá prezenčně ve čtvrtek 15:40 - 17:10, počítačová učebna N10, Impakt, Troja.

Probraná látka a poznámky k cvičením

1. cvičení 17.2.2022 Úvod, organizace cvičení
Newtonův zákon vedení tepla
Hledání minima pomocí Řešitele v Excelu
Soubor s daty: kafe.txt
Řešení v Excelu: kafe.xlsx
2. cvičení 24.2.2022 Jednoduché řešení diferenciálních rovnic
Verzovací systém Git:
- Úvodní nastavení
- 4 stavy souborů v repozitáři
- Inicializace nového repozitáře
- Zapsání (commit)
Řešení v Excelu: kafe.xlsx
3. cvičení 3.3.2022 Obyčejné diferenciální rovnice
Soustavy diferenciálních rovnic
Eulerova metoda 1. a 2. řádu
Kontrola chyby
Repozitář s kódem: PCInPhysics2022
4. cvičení 10.3.2022 Soustavy obyčejných diferenciálních rovnic
Runge-Kuttova metoda 4. řádu
Lorenzův systém
Domácí úkol na 17.3.2022
(odevzdávejte mailem na pcfyzika@pavelstransky.cz)
5. cvičení 17.3.2022 Náhodná procházka ve 2D
Hledání minima funkce dvou proměnných
Domácí úkol na 24.3.2022
(odevzdávejte mailem na pcfyzika@pavelstransky.cz)
6. cvičení 24.3.2022 Metropolisův algoritmus
Hledání globálního minima funkce více proměnných
GitHub
7. cvičení 31.3.2022 Histogram
Centrální limitní věta
8. cvičení 7.4.2022 Generování výběru z libovolného rozdělení
Gaussovské normální rozdělení
Git - větve, vzdálené repozitáře
Domácí úkol na 14.4.2022
(odevzdání přes přístup do vašeho vzdáleného reopozitáře)
9. cvičení 14.4.2022 Stíhací křivka
Obsluha událostí
10. cvičení 21.4.2022 Integrace Monte-Carlo Domácí úkol na 28.4.2022
(odevzdání přes Váš vzdálený repozitář)
11. cvičení 28.4.2022 Paralelní programování
12. cvičení 5.5.2022 LaTeX (Jiří Dolejší)
13. cvičení 12.5.2022 Mathematica
Symbolické výpočty
14. cvičení 19.5.2022 Zápočtová písemka

Poznámky z minulých let

Během dálkové výuky v době koronavirové pandemie jsem sepsal studijní text, jehož součástí jsou i vzorově vypracované úlohy dostupné v repozitáři na Githubu. Jelikož velké části témat z textu se budeme věnovat i letos během prezenční výuky, doporučuji brát tento text jako studijní materiál.

Hodnocení domácích úkolů

= uznaný domácí úkol

Kód 1 2 3 4
027
170 -
199 -
318 -
376 -
465 - -
532
602 -
784
843

Cíl cvičení

Účelem cvičení je pohrát si s jednoduchými fyzikálními problémy, vyzkoušet si různé způsoby jejich řešení (i triviální řešení je řešení) a naučit se zobrazovat výsledky. Většina příkladů bude demonstrována v populárním programovacím jazyce Python, ale dojde i na základy psaní textů v LaTeXu a úvod do použítí komerčního nástroje Mathematica. V průběhu cvičení se také naučíte základy verzovacího systému Git. Další informace k předmětu jsou na stránce SISu.

Ve cvičení nebude probíhat systematická výuka žádného programovacího jazyka ani numerických algoritmů. Pro prohloubení vašich znalostí doporučuji specializované přednášky na oboru fyzika, například

NEVF523 - Numerické metody počítačové fyziky
NPRF050 - Programování v Pythonu
NEVF107 - C++ pro fyziky
NPRF020 - Úvod do programování v prostředí MATLAB, Octave a Scilab
NPRF006 - Pokročilé metody programování
NTMF048 - Použití systémů počítačové algebry ve fyzice
NJSF081 - Software a zpracování dat ve fyzice částic

a nepřeberně přednášek na oboru informatika.

Co se bude probírat

Fyzika, matematika, numerika, algoritmy

  • Řešení diferenciálních rovnic, řešení pohybových rovnic
  • Fitování, aproximace, optimalizace
  • Náhodná čísla, náhodné procházky, metoda Monte-Carlo
  • Lineární algebra, spektrální rozklad matic
  • Fourierova transformace
  • Práce s algebraickými výrazy, symbolické manipulace, program Mathematica

Techniky

  • Python, Mathematica
  • Správa verzí, Git, GitHub
  • Úvod do obsluhy událostí
  • Úvod do paralelního programování
  • Psaní odborného textu v LaTeXu

Zápočet

Klasifikovaný zápočet bude udělen za splnění jednoho z následujících počinů.

Včas odevzdané odladěné programy alespoň za tři témata probraná na cvičení: Na cvičeních budeme probírat uzavřená témata, v rámci kterých společně napíšeme krátké programy. Po dokončení tématu zadám ještě doplňující drobné úkoly na doma, které budou napsaný program rozšiřovat. Pokud program odevzdáte funkční a srozumitelně napsaný nejpozdějí do následujícího cvičení, bude uznán pro zápočet.

Vytvoření vlastního programu: Naprogramujete řešení nějakého fyzikálního problému, který si zvolíte podle svých vlastních zájmů a zálib. Program by neměl být totožný s těmi, za které jste (byli, budete) klasifikováni v jiných předmětech, a neměl by být kopií nebo triviální úpravou programů běžně dostupných na webu. Doporučuji vám, abyste se mnou zadání konzultovali, než se pustíte do práce.

Zápočtová úloha: Na posledním cvičení semestru uložím zápočtovou úlohu, která bude vycházet z problémů procvičených během semestru. Na její vypracování bude omezené množství času (doba trvání cvičení).

K zápočtu tedy vede více možných cest a je na vás, jakou si dle svých preferencí zvolíte.

Programovací jazyky a vývojové prostředí

Ačkoliv převážná část předmětu bude demonstrována příklady v programovacím jazyce Python 3 a vývojovém prostředí Visual Studio Code, rozhodně není nutné, abyste úkoly nebo zápočtové programy vypracovávali pomocí stejných nástrojů. Zvolte si sami, jaký jazyk či vývojové prostředí jsou vám sympatické. Obecně doporučuji takové programovací jazyky, které mají dobrou podporu, jsou živé a ideálně pro které existují kvalitní numerické knihovny a knihovny pro vykreslování grafů. Sám jsem zběhlý v jazycích C/C++, C#, Python, Julia, Mathematica, PHP, Javascript, SQL, Pascal. V nich vám budu schopen poradit, pokud si s něčím nebudete vědět rady.

Literatura

Na webu existuje nepřeberné množství tutoriálů a návodů k Pythonu a jeho knihovnám, které vám pomůžou s konkrétními problémy. Zde uvádím spíš monografie pro pokročilejší, v nichž naleznete seriózní příklady využití tohoto programovacího jazyka ve vědě.

[1]P.R. Turner, T. Arildsen, K. Kavanagh, Applied Scientific Computing With Python (Springer 2018)
[2]R. Johansson, Numerical Python: Scientific Computing and Data Science Applications with Numpy, SciPy and Matplotlib (Springer 2019)
[3]S. Nagar, Introduction to Python for Engineers and Scientists (Springer 2018)
[4]S. Lynch, Dynamical Systems with Applications using Python (Springer 2018)
[5]B.J. Korites, Python Graphics: A Reference for Creating 2D and 3D images (Springer 2018)

Konzultace a možnost diskuze

Pokud se chcete na cokoliv zeptat nebo si potřebujete něco vyjasnit, napište mi e-mail či mě kontaktujte mě přes Skype (pavelstransky).