Pavel Stránský
Kontakt: Contact
Česky English
Naposledy aktualizováno: 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 2022-2023

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. 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 čtyř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 procvičené téma rozšiřovat. Pokud odevzdáte funkční a srozumitelně napsaný program 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 (90 minut, tj. doba trvání cvičení).

Za zápočtovou úlohu bude možné získat maximálně 14 bodů. K bodům za zápočtovou úlohu se přičtou 3 body za každý správně a úplně vypracovaný domácí úkol. Výsledná známka bude určena na základě následujícího klíče (b je celkový získaný počet bodů):

b≥121 (výborně)
9≤b<122 (velmi dobře)
7≤b<93 (dobře)
Vypracování adekvátního vlastního programu vždy povede na známku 1 (výborně).

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; 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. 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. Text bude aktualizován a doplňován podle toho, co konkrétně bude během výuky procvičeno.

Výsledky domácích úkolů

= uznaný domácí úkol

= domácí úkol za polovic

Kód 1 2 3 4 5 6 7 Body
za
úkoly
Zápočtová
práce
Známka
065 - - 15 - 1
243 - - - - - -
391 - - - 9 3 1
513 - - - - - - 3
552 - - - - - - 3 -
618 - - 10½ 7 1
707 - - 15 - 1
930 - - - - - - 3 -

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

1. cvičení 16.2.2023 Úvod, organizace cvičení
Průled nad základy jazyka Python
Základy syntaxe: introduction.py
Práce s poli: arrays.py
Grafika: plot.py
Textové soubory: files.py
2. cvičení 23.2.2023 Obyčejné diferenciální rovnice
Soustavy diferenciálních rovnic 1. řádu
Eulerova metoda 1. a 2. řádu
Kód ze cvičení: sin.py
3. cvičení 2.3.2023 Verzovací systém Git Domácí úkol na 9.3.2023
(odevzdávejte mailem na pcfyzika@pavelstransky.cz)
Kódy ze cvičení: ode2023
Celý repozitář si stáhnete pomocí příkazu
  git clone https://github.com/PavelStransky/ode2023
4. cvičení 9.3.2023 Řešení parciálních diferenciálních rovnic
Poissonova rovnice
Domácí úkol na 23.3.2023
(odevzdávejte mailem na pcfyzika@pavelstransky.cz)
Kódy ze cvičení: poisson.py, capacitor.py
5. cvičení 16.3.2023
6. cvičení 23.3.2023 Náhodná procházka ve 2D
Hledání minima funkce dvou proměnných
7. cvičení 30.3.2023 Metropolisův algoritmus
Hledání globálního minima funkce více proměnných
Domácí úkol na 6.4.2023
(odevzdávejte mailem na pcfyzika@pavelstransky.cz)
8. cvičení 6.4.2023 LaTeX
Domácí úkol na 13.4.2023:
Napište v LaTeXu pojednání o nějakém fyzikálním (případně matematickém) problému. Dokument by měl obsahovat aspoň jednu číslovanou rovnici a jeden obrázek. Textová část stačí na jednu stránku. (odevzdávejte mailem na pcfyzika@pavelstransky.cz)
9. cvičení 13.4.2023 Rozdělení náhodných čísel
Histogram
Domácí úkol na 27.4.2023
(odevzdávejte mailem na pcfyzika@pavelstransky.cz)
10. cvičení 20.4.2023 Monte Carlo
Využití k integraci
11. cvičení 27.4.2023 Úvod do paralelního programování Domácí úkol na 4.5.2023
(odevzdávejte mailem na pcfyzika@pavelstransky.cz)
12. cvičení 4.5.2023 Mathematica
Symbolické výpočty
Notebook ze cvičení: mathematica.nb
13. cvičení 11.5.2023 Fourierova transformace Domácí úkol na 18.5.2023
(odevzdávejte mailem na pcfyzika@pavelstransky.cz)
14. cvičení 18.5.2023 Zápočtová písemka

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 nejnověji 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.