Pavel Stránský
Contact: Contact
Česky English
Last updated: 19.11.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 nebo jiné zápočtové práce, k jejímuž vypracování je nebytné použití počítače.

Zápočtová práce:

Téma programu nebo zápočtové práce si můžete zvolit zcela dle svých zájmů, ale mělo by odpovídat zaměření předmětu, tedy být vztažené k fyzice. Program nebo práce by neměly být totožné s těmi, za které jste (byli, budete) klasifikováni v jiných předmětech, a neměly by být kopií nebo triviální úpravou prací běžně dostupných na webu. Doporučuji vám, abyste se mnou svůj nápad konzultovali, než ho začnete vypracovávat.

Kromě svých nápadů se můžete přihlásit i na některou z následujících úloh:

Název Odkaz (obsahuje zadání) Velikost skupiny
Isingův model github.com/CU-ComputersInPhysics/Ising 1-4
Fourierova analýza časové řady github.com/CU-ComputersInPhysics/Fourier 1-2
Pes a myslivec (stíhací křivka) github.com/CU-ComputersInPhysics/Myslivec 1-4
Kulečník ve tvaru stadionu github.com/CU-ComputersInPhysics/Stadion 1-4
Lineární urychlovač částic github.com/CU-ComputersInPhysics/Urychlovac 1-4

Pokyny k vypracování

  • Program nebo práci můžete vypracovávat jednotlivě nebo ve skupině. Při práci ve skupině musí být zdokumentováno, kdo se podílel na které části práce.
  • Programovat nemusíte v Pythonu, ale je nutné, aby byl program čitelný a spustitelný pomocí veřejně dostupných nástrojů nebo pomocí nástrojů, ke kterým má naše fakulta licenci.
  • Program by měl obsahovat stručnou dokumentaci popisující, jaké metody či algoritmy jste použili, co program počítá, jak se spouští a jak se ovládá. Alternativně je možné se domluvit, že mi osobně nebo online program představíte.
  • Vypracovaný program nebo práci (pokud to její charakter umožňuje) budu přijímat v elektronické podobě jako repozitář na githubu nebo v univerzitním gitlabu. Repozitář může být buď veřejný nebo soukromý, ke kterému mě přidáte jako spolupracovníka: mé uživatelské jméno na githubu je PavelStransky.
  • Pokud se rozhodnete vypracovat program z výše uvedeného seznamu, přihlašte se na něj pomocí odkazů, které vám rozešlu do mailu v pondělí 27.5.2024.

Rozsah

K zápočtu stačí odevzdat funkční program, který bude mít cca 200 řádek efektivně napsaného kódu. Berte prosím toto číslo jako orientační: pokud napíšete kvalitní a zajímavý program kratšího rozsahu, uznám Vám ho. To samozřejmě platí i o programu většího rozsahu.

Termín

Zápočtovou práci dokončete a do repozitáře nahrajte prosím nejpozději dva týdny před koncem akademického roku 2023/2024, aby bylo dost času opravit případné nedostatky. Doporučuji Vám, abyste program vypracovali ještě před letními prázdninami.

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 Kafe
(práce se soubory, optimalizace, modelování)

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.