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

Použití počítačů ve fyzice (NOFY 084)

Akademický rok 2023-2024

Rozvrh cvičení

Výuka probíhá prezenčně ve čtvrtek 14:50 - 16:20, počítačová učebna N10, Impakt, Troja.

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 analzyovat a zobrazovat obdržené 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 a základy práce v týmu. 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

Uvedený seznam není závazný. Jelikož se jedná o volitelný předmět, lze témata přizpůsobit přáním a schopnostem účastníků kurzu.

Zápočet

Klasifikovaný zápočet bude udělen za vypracování a obhajobu zápočtového programu. Téma programu by mělo odpovídat zaměření předmětu, mělo by tedy být vztažené k fyzice, jinak si ho můžete zvolit zcela dle svých zájmů. 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. Vypracovávat ho můžete jednotlivě nebo ve skupině. Doporučuji vám, abyste se mnou zadání konzultovali, než se pustíte do práce.

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; v nich vám budu schopen nejsnáze poradit a pomoci, pokud budete potřebovat.

Poznámky ke cvičení

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. Velké části témat z textu se budeme věnovat i letos, a proto lze brát tento text jako studijní materiál.

Probraná látka

1. cvičení 22.2.2024 Úvod, organizace cvičení
Náhodná procházka ve 2D
Anketa
2. cvičení 29.2.2024 Úvod do verzování pomocí Git
git init, add, commit, status, log
3. cvičení 7.3.2024 Náhodná procházka v obecné dimenzi
Větve v Gitu, návrat k předchozím verzím
git branch, switch, merge
4. cvičení 14.3.2024 Hledání minima funkce pomocí náhodné procházky
Vzdálené repozitáře, github
fork, pull request
5. cvičení 21.3.2024 Metoda Monte-Carlo
6. cvičení 28.3.2024 Úvod do psaní textů v LaTeXu Hustý LaTeXový soubor se všemi nejčastěji používanými příkazy a fígly.
Pojednání o kvadratické funkci v LaTeXu vzniklé na cvičení.
7. cvičení 4.4.2024 Integrace Monte-Carlo
8. cvičení 11.4.2024 Úvod do paralelního programování
9. cvičení 18.4.2024 Řešení obyčejných diferenciálních rovnic I
10. cvičení 25.4.2024 Řešení obyčejných diferenciálních rovnic II
11. cvičení 2.5.2024 Řešení parciálních diferenciálních rovnic
12. cvičení 9.5.2024 Wolfram Mathematica
Symbolické výpočty
13. cvičení 16.5.2024 Fourierova transformace
14. cvičení 23.5.2024

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. Odpovědi najdete na diskuzních fórech (např. Stack Overflow) nebo dotazem na chatbot (např. Chat GPT).

Pokročilejší monografie, v nichž naleznete seriózní příklady využití programovacího jazyka Python 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)

Algoritmy obecně:

[6]M. Mareš, T. Valla, Průvodce labyrintem algoritmů (CZ.NIC 2022)

Náhodně vybrané (ale zajímavé) eseje k programování obecně:

[7]S. Wolfram, What Is ChatGPT Doing... and Why Does It Work? (2023)
[8]I. Suzdalnitski, Object-Oriented Programming - The Trillion Dollar Disaster (2019)
[9]Ch. Scalfani, Goodbye, Object Oriented Programming (2016)

Konzultace

Pokud se chcete na cokoliv zeptat nebo si potřebujete něco vyjasnit, stavte se na konzultaci.