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

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

Akademický rok 2020-2021

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

Forma cvičení

Výuka bude probíhat online každé úterý letního semestru v době | 14:00 - 15:30 na platformě ZOOM.

Domácí úkoly: Součástí většiny cvičení bude úkol k samostatnému vypracování. Na vypracování úkolů budete mít jeden týden. Hodnocení úkolů a jejich vliv na získání zápočtu je popsáno v následující sekci.

Zápočet

Úkoly: V průběhu semestru budu zadávat jednoduché úlohy „na doma“. Celkem bude zadáno n úkolů. Za každý správně a úplně naprogramovaný úkol získáte 2 body, odevzdáte-li ho nejpozději v den uvedený v zadání (vesměs se bude jednat o den následujícího cvičení). Za kdykoliv později odevzdaný a správně vyřešený úkol získáte nanejvýš 1 bod. Za domácí úkoly tedy budete moci získat až 2n bodů.

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í). Za její správné a úplné vypracování získáte n bodů.

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. Za tento program vám dám dle rozsahu, správnosti a originality až 2n bodů.

Získané body se sečtou a klasifikace proběhne podle následujícího klíče:

2n bodů a vícevýborně
3n/2 bodů a vícevelmi dobře
n bodů a vícedobře
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. 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.

Probraná látka a domácí úkoly

1. cvičení 2.3.2021 Úvod, organizace cvičení -
2. cvičení 9.3.2021 Instalace Pythonu, VS Code, Gitu
Úvod do Gitu a Pythonu
-
3. cvičení 16.3.2021 Řešení obyčejných diferenciálních rovnic 1. řádu úkol (odevzdání e-mailem do cvičení 23.3.2021)
4. cvičení 23.3.2021 Soustavy obyčejných diferenciálních rovnic
Zapsání (commit) v Gitu
úkol (odevzdání e-mailem do cvičení 30.3.2021;
z úloh 4.4 až 4.6 stačí, když vyřešíte jednu)
5. cvičení 30.3.2021 Náhodná procházka, pseudonáhodná čísla
Větve v Gitu
úkol (odevzdání e-mailem do cvičení 6.4.2021)
6. cvičení 6.4.2021 Minimalizace pomocí náhodné procházky
Návrat k předchozím verzím v Gitu
úkol (odevzdání e-mailem do cvičení 13.4.2021)
7. cvičení 13.4.2021 Histogram
Vzdálené repozitáře v GitHubu
úkol (odevzdání přes vzdálený repozitář;
nouzově e-mailem do cvičení 20.4.2021;
z úloh 7.5 až 7.7 stačí, když vyřešíte jednu)
8. cvičení 20.4.2021 Metoda Monte-Carlo Zápisky ke cvičení - úkoly jsou zakomponované v textu
(odevzdání přes vzdálený repozitář;
nouzově e-mailem do cvičení 20.4.2021)
9. cvičení 27.4.2021 Paralelizace úkol (odevzdání přes vzdálený repozitář;
nouzově e-mailem do cvičení 4.5.2021)
10. cvičení 4.5.2021 LaTeX Zápisky ke cvičení - úkoly jsou zakomponované v textu
(odevzdání přes vzdálený repozitář;
nouzově e-mailem do cvičení 11.5.2021)

Poznámky ke cvičení, a vypracované příklady a vzorová řešení domácích úloh jsou v doprovodném repozitáři na GitHubu.

Hodnocení domácích úkolů

Kód 3 4 5 6 7 8
046 - 1 2
125 2 2
178 - - - -
285 2 2 2 2 2
351 2 2 2 2 2
403 2 2 2 2 2 2
441 - - ¾ - - -
534 2 - - - ¾
799 2 2 2 2 1
847 - - - - -
962 1 ½ ¾ ½

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).