Počítačové metody v teoretické fyzice - TMF057(ZS 2015-16)

Aktualiky: (25. ledna 2016) Do sylabu jsem doplnil literaturu. V SISu jsem vypsal termíny zkoušek, pokud někomu nevyhovuje žádný, napište mi e-mail. Ke zkoušce si přineste jednu vypracovanou zápočtovou úlohu, kterou společně projdeme. Dále dostanete dvě teoretické otázky, jednu k tématům ze zápočtové úlohy, druhou z dalších přednesených témat.

 (15. ledna 2016) Zde je zadání zápočtových úloh (každý si vyberte jednu) a doplnil jsem sylabus a demostrační scripty v pythonu.

LEKCE 1 - Zaokrouhlovací chyby a numerická stabilita. (viz [1], pro hlubší zájemce též [4,5,7])

Demonstrace:

  1. Zaokrouhlovací chyba (triviální příklad) ...................... demoL01.01_wrong_loop.py
  2. Sčítání odpředu = sčítání odzadu? .............................. demoL01.02_suma.py
  3. Zaokrouhlovací chyba při odčítání............................... demoL01.03_cancelation.py
  4. Kvadratická rovnice (minimalizace zaokr. chyby)......... demoL01.04_quadratic.py
  5. Proč nekonverguje absolutně konvergentní řada?......... demoL01.05_Taylor_exp.py

Cvičení: Určení čísla pi Archimedovou metodou. (pokus1-nestabilní, pokus2-funkční, pokus3-urychlení konvergence)

LEKCE 2 - Iterace a řešení nelineárních rovnic. (viz [1], pro hlubší zájemce též [5,7,8])

Demonstrace:

  1. cos(cos(cos(...cos(1.0)...)))..................................demoL02.01_coscos.py
  2. Babylonská metoda výpočtu odmocniny................demoL02.02_Babylon.py
  3. Aitken na cos cos.................................................demoL02.03_Aitken.py
  4. Aiten-Steffensen na cos cos..................................demoL02.04_AitkenSteffensen.py
  5. Newtonův fraktál = odpověď na otázku: "Ke kterému kořenu rovnice z3-1=0 dokonverguje Newtonův algoritmus spuštěný z daného místa komplexní roviny?" dává obrázek https://en.wikipedia.org/wiki/Newton_fractal

LEKCE 3 - Interpolace a interpolační polynomy. (viz [1], pro hlubší zájemce [2,8])

Demonstrace: (používají metod knihovny Turtle graphics z Pythonu pro zobrazení dat)

  1. Interpolace na rovnoměrné síti...............................demoL03.01_regular.py
  2. Chování polynomu omega.....................................demoL03.02_omega.gnu (script pro gnuplot - testováno ve verzi 4.7)
  3. Interpolace na Čebyševově síti..............................demoL03.03_chebychev.py

LEKCE 4 - Interpolace na rovnoměrné síti, diferenční rovnice. (viz [1], pro hlubší zájemce [5])

LEKCE 5 - Numerická derivace derivace a integrace. (viz [1], pro hlubší zájemce [2,5,8])

Cvičení: Numerické derivování, diskretizační a zaokrouhlovací chyba (výpis numerické derivace pro různé hodnoty h do souboru a zobrazení chyby výsledků pomocí gnuplotu).

Demonstrace: (Numerická derivace, diskretizační x zaokrouhlovací chyba)

  1. Derivace různými diskretizačními formulemi .........demoL4.01_derivace.py
  2. Zobrazení výsledků..............................................demoL4.01_derivace.gnu (script pro gnuplot)

LEKCE 6 - Numerická integrace diferenciálních rovnic. (viz [1], pro hlubší zájemce [2,3])

Demonstrace: (Numerické řešení diferenciálních rovnic)

  1. Výpočet řešení počáteční úlohy explicitními formulemi ...........demoL5.01_LIMUFO.py
  2. Zobrazení řešení pro různé metody ....................................... reseni.gnu (script pro gnuplot, ukaze data z predchoziho *.py)
  3. Testování rychlosti konvergence pro zmenšující se krok..........demoL5.02_global.py
  4. Zobrazení rychlosti konvergence ........................................... konverg.gnu
  5. Jako 1,2 ale implicitni.............................................................demoL6.01_implicit.py,    reseni.gnu
  6. Jako 3,4 ale implicitni ............................................................demoL6.02_stiff.py,         kstif.gnu

LEKCE 7 - Numerická lineární algebra - faktorizace matic. (viz [2,4])

Demonstrace: (Faktorizace matice a její použití):

  1. Nalezení vlastních fcí kvantového oscilátoru ..................DemoL8.01_QR_LHO.py
  2. Zpetná stabilita QR faktorizace.....................................DemoL8.02_zpet_stabil.py
  3. Hodnost matice pomocí QR.........................................DemoL8.03_Hello.py

LEKCE 8 - Numerická lineární algebra - Gaussova eliminace. (viz [2,4])

Demonstrace: (Gaussova eliminace a LU rozklad)

  1. Gauss bez pivotace......................DemoL9.01_LU_nestab.py
  2. Gauss s pivotaci...........................DemoL9.02_LU_pivot.py
  3. LU rozklad z knihovny scipy.........DemoL9.03_LU_linalg.py

LEKCE 9 - Numerická lineární algebra - diagonalizace matic. (viz [2,4,5])

Demonstrace: (Diagonalizace Jacobiho metodou)

  1. Pouziti diagonalizace z numpy..........................DemoL10.01_eigval.py
  2. Jacobiho metoda se "speepy"..........................DemoL10.02_Jacobi.py
  3. Jacobiho metoda s vyhledáním max. prvku......DemoL10.03_Jacobi_max.py

LEKCE 10 - Diskrétní Fourierova transformace (odpřednesl jsem zrychleně - nezkouším, základní informace viz [2,3])

DOPORUČENÁ LITERATURA:

Opírám se především o [1] a [4]. Jako vhodný doplněk pro praktickou implementaci algoritmů lze vždy doporučit [2]. Ostatní uvedené knihy jsou vhodným doplňkem k různým tématům, viz zelené poznámky.

Poznámka k Pythonu: Výše uvedené příklady v Pythonu používají knihovny numpy a matplotlib. Python lze stáhnout zdarma. Jedna z možností je:

1 jít na https://www.continuum.io/downloads stáhnout anacondu dle vlastniho výběru
2 nainstalovat
3 spustit Anaconda Launcher
4 spustit Spyder - IDE (obsahuje i interaktivní konzoli) nebo spustit Ipython-qtconsole - interaktivni python .


Informace z loňských stránek Karla Houfka naleznete naleznete zde.