Výuka probíhá prezenčně ve čtvrtek 14:50 - 16:20, počítačová učebna N10, Impakt, Troja.
Úč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
a nepřeberně přednášek na oboru informatika.
Fyzika, matematika, numerika, algoritmy
Techniky
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.
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í
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.
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.
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.
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í) |
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) |
Pokud se chcete na cokoliv zeptat nebo si potřebujete něco vyjasnit, stavte se na konzultaci.