Úč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
a nepřeberně přednášek na oboru informatika.
Fyzika, matematika, numerika, algoritmy
Techniky
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.
Ú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íce | výborně |
---|---|
3n/2 bodů a více | velmi dobře |
n bodů a více | dobře |
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.
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) |
11. cvičení | 11.5.2021 | Symbolické manipulace. Mathematica | Zápisky ke cvičení - úkoly jsou zakomponované v textu (odevzdání e-mailem do cvičení 18.5.2021) |
12. cvičení | 18.5.2021 | Fourierova transformace | Zápisky ke cvičení - úkoly jsou zakomponované v textu (odevzdání přes vzdálený repozitář; nouzově e-mailem do cvičení 24.5.2021) Z úloh 12.4 a 12.5 stačí, když vyřešíte jednu. |
13. cvičení | 25.5.2021 | Kafe | |
14. cvičení | 1.6.2021 | Zápočtová práce | Zadání (odevzdání přes vzdálený repozitář do 15:40 dne 1.6.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.
Kód | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Σu | P | V | Σ | Zápočet |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
046 | 1¾ | - | 1½ | 1½ | 1 | 2 | 1 | 1½ | 2 | 1 | 13¼ | 6¾ | 20 | 1 | |
125 | 1½ | 1¼ | 1½ | 2 | 1¼ | 2 | 2 | 2 | 2 | - | 15½ | 4½ | 20 | 1 | |
178 | 1½ | - | 1¼ | - | - | - | - | - | - | - | 2¾ | - | 2¾ | 4 | |
285 | 2 | 2 | 2 | 1½ | 2 | 2 | - | 1 | 2 | 2 | 16½ | 6 | 22½ | 1 | |
351 | 2 | 2 | 2 | 2 | 1¾ | 2 | 2 | 2 | 2 | 2 | 19¾ | - | 19¾ | 1 | |
403 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 20 | - | 20 | 1 | |
441 | 1 | - | ¾ | - | - | - | ¾ | 2 | 2 | 2 | 8½ | 2 | 10½ | 3 | |
534 | 2 | - | 1¼ | - | - | ¾ | - | 2 | 2 | - | 8 | 3½ | 11½ | 3 | |
799 | 2 | 2 | 1¾ | 2 | 2 | 1 | 1 | - | 2 | 2 | 15¾ | 7½ | 23¼ | 1 | |
847 | - | - | 1¼ | - | - | - | 1 | 2 | 2 | 2 | 8¾ | 2¼ | 11 | 3 | |
962 | 1¾ | 1 | 1½ | ½ | ¾ | ½ | ¼ | 1½ | 2 | 0 | 9¾ | 4 | 2 | 15¾ | 2 |
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) |
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).