NOFY056 Programování pro fyziky
Cvičení 25aNOFY056x06: J. Velímský
- Přednáška L.H.
- Přednáška T.L.
- Materiály ke cvičení L.H.,
podle kterých budeme postupovat
- Podmínkou udělení zápočtu je získání 80 bodů
- Za běžné domácí úkoly lze získat max. 100 bodů (jeden úkol 5-15 bodů dle náročnosti)
- Drobné body navíc lze získat za aktivitu v hodině
- Je možné se individuálně domluvit na vypracování většího projektu za předem dohodnuté (maximální) bodové hodnocení.
Přineste si vlastní téma. Příklady: Statistické zpracování experimentálních dat. Počítačová simulace netriviálního
fyzikálního problému.
- E-mail pro zasílání domácích úkolů a dotazů:
jakub.velimsky@mff.cuni.cz
- Cvičení se koná každou středu od 9:00 v posluchárně N10, pavilon Impakt, Troja.
- Bodovací tabulka
- Python programovací jazyk
- Visual studio code vývojové prostředí
- Gnuplot pro zobrazování dat
- Paraview pro 3-D vizualizace
Programy z hodiny
Stacionární řešení 1-D rovnice vedení tepla metodou konečných diferencí
- Integrace vícerozměrné funkce Monte Carlo metodou
- Hledání kořenu funkce bisekcí a Newton-Raphsonovou metodou
Domácí úkoly
- Výpočet pi podle Leibnize a Eulera
- Lissajousovy obrazce (vytvoření dat v pythonu; kreslení v gnuplotu a/nebo Paraview)
- Změňte náhodné procházení Mandelbrotovy množiny (moje verze ze cvičení zde) na
systematické vzorkování reálné a imaginární složky s konstantním krokem a vylepšete obrázek (gnuplot skript zde).
- Doplňte Erastothenovo síto, hledající všechna prvočísla do N, o hledání
prvočíselných dvojčat (prvočísel, která se liší právě o 2) a nakreslete závislost počtu dvojčat na N
- Pomocí kvadratury jedno a dvourozměrných
funkcí spočtěte obsah jednotkového kruhu a objem jednotkové koule; ve druhém případě bonusové body za
úpravu kvadraturní funkce s proměnnými (funkčními) mezemi
- Pomocí funkcí
numpy.linalg.solve()
nebo
numpy.linalg.inv()
najděte inverzi Hilbertovy matice Hij=1/(i+j-1), i,j= 1,...,N pro N= 1,2,...,~12.
Spočtěte součet S(N) všech prvků H-1 pro každé N a nakreslete závislost S(N).
Dokážete uhodnout analytický vzorec pro S(N)? Pro bonusové body porovnejte i s funkcí
scipy.linalg.invhilbert()
a prozkoumejte vliv parametru exact.
- Pomocí funkcí z naší knihovny mypoly.py proložte několika body v
rovině (x,y) jednak přesný polynom (řádu N pro N+1 bodů) a dále různé aproximativní polynomy
řádu M<N. Zobrazte.
- S využitím funkcí shoot a observer v programu ballistic.py
a Runge-Kuttovy metody 4. řádu ode.py naprogramujte iterativní
nalezení optimální elevace pro vedení palby na nepřátelskou loď. Funkce observer poskytuje
pouze informaci o tom, zda byl váš výstřel dlouhý, nebo krátký. Vaše loď má 9 děl, vystřelte
najednou pod různými elevacemi, spočtěte počet krátkých a dlouhých výstřelů a podle toho
zužujte interval elevací v další salvě.
- Nakreslete v programu Paraview >
vánočního kapříka, definovaného jako maximum absolutních hodnot sektorálních sférických harmonik
do stupně 3, tedy r(ϑ,φ)= max(|Y00(ϑ,φ)|,|Y11(ϑ,φ)|,|Y22(ϑ,φ)|,|Y33(ϑ,φ)|).
Výpočet jedné sférické harmoniky pro zvolené n,m a příklad exportu do vtk formátu je zde.
Nebo si vyberte jiný obrázek (šneka, bagel, vajíčko).