Computer methods in theoretical physics - TMF057(ZS 2017-18)

News: (February 8, 2018) English version of syllabus is available now.

(January 4, 2018) I translated LIST OF PROBLEM FOR CREDITS (Zápočtové úlohy) and I corrected few minor errors there.

(December 22, 2017) I am currently translating this web page to English. You can still see the previous version below. It contains most of the examples in Python (some using NumPy libraries) which you could see in the lecture. On the last lecture I presented preliminary LIST OF PROBLEM FOR CREDITS (Zápočtové úlohy). Only Czech version is currently available. You should select one of the problems and solve it in suitable programming language (C, C++, C#, Fortran, Pascal, Python) using floating point arithmetic. You will present your solution at the exam including your understanding of the theory related to the subject of the selected problem. The exam will consist of this presentation and one additional theoretical question. 

 

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.