Počítačové metody v teoretické fyzice I - NTMF057

Základní informace:     v roce 2020/2021 přednáší Karel Houfek
přednáška a cvičení se koná každou středu od 30.9. do 6.1. (kromě 28.10., 23.12. a 30.12.) od 8:10 přes ZOOM
Meeting ID: 992 4166 8648, Passcode: Gauss

Materiály ke stažení

Poznámky k přednášce

Při přípravě na zkoušku můžete použít poznámky Martina Čížka, které nejsou zatím hotové, ale obsahují odkazy na další studijní literaturu.
Pro základní orientaci si též můžete stáhnout naskenované poznámky používané při přednášce v roce 2018/2019, ale budu se snažit většinu přepsat do čitelnější podoby.

Poznámky a notebooky v Mathematice, které jsem používal při online přednáškách:

Pro většinu demonstrací v Mathematice, které jsou ke stažení u jednotlivých přednášek, je potřeba nejprve nahrát knihovnu funkcí
Basic.Functions.for.TMF057.m
Po otevření klikněte na Run All Code v pravém horním rohu.

  1. přednáška 30.9.2020
  2. přednáška 7.10.2020
  3. přednáška 14.10.2020
  4. přednáška 21.10.2020
  5. přednáška 4.11.2020
  6. přednáška 11.11.2020
  7. přednáška 18.11.2020
  8. přednáška 25.11.2020
  9. přednáška 2.12.2020
  10. přednáška 9.12.2020
  11. přednáška 16.12.2020
  12. přednáška 6.1.2021
Programy v Mathematice

Programy jsou ozkoušené v Mathematice verze 10.0, ale snad by měly být funkčních i ve starších či novějších verzích.

Zadání zápočtových úloh

Podmínkou udělení zápočtu je vypracování jedné ze zápočtových úloh, které jsou ke stažení zde. Jednotlivé úlohy můžete řešit buď individuálně, přičemž si vyberete jednu z podúloh, nebo ve dvou či třech (podle počtu podúloh), kdy vždy jeden řeší jednu konkrétní podúlohu a výsledky můžete navzájem porovnat. Ovšem chce-li si někdo zkusit vyřešit sám více podúloh, tak samozřejmě může. Dva studenti nebo dvě dvojice či trojice mohou řešit stejnou úlohu, ale samostatně. Úlohy je nutné vyřešit v nějakém vyšším programovacím jazyce (FORTRAN, Pascal, C, C++, či Python), nebo v Mathematice, či v Maplu, ovšem není dovoleno používat vestavěných funkcí (jako např. NIntegrate či NDSolve v Mathematice) k přímému řešení, ale pouze ke kontrole, či porovnání. Cílem zápočtových úloh je zkusit si sám naprogramovat určitou numerickou metodu a použít ji na konkrétní problém.

Požadavky ke zkoušce

Níže uvedená témata je potřeba znát v rozsahu přednášky, pokud např. nebyl na přednášce uveden důkaz některého tvrzení, pak nebude požadován ani u zkoušky. U jednotlivých hlavních témat je uvedena literatura, ze které jsem při přípravě přednášky především čerpal. Odkazy jsou na seznam doporučené literatury níže.

  1. Základní pojmy([1] kap. 1.1, [9] kap. 3 a 12-15)
  2. Iterace, urychlování konvergence. Řešení nelineárních rovnic ([5] kap. 6, příp. [1] kap. 9)
  3. Aproximace a interpolace funkcí ([5] kap. 1)
  4. Numerická integrace (kvadratura) ([5] kap. 4)
  5. Numerické řešení obyčejných diferenciálních rovnic - počáteční úloha ([7] kap. 5-8, [8] kap. 1)
  6. Numerická lineární algebra ([9])

Doporučená literatura

Literatury o numerické metodách a numerické analýze je nepřeberné množství. Ač je seznam doporučené literatury poměrně dlouhý, jde stále o základní přehled. Doporučujeme si vybrat jednu či dvě knihy, ze kterých budete čerpat navíc k poznámkám k přednášce.

Základní přehledy numerických metod
[1] Press W. H., Teukolsky S. A., Vetterling W. T., Flannery B. P. - Numerical Recipes - The Art of Scientific Computing, Third Edition, Cambridge University Press, Cambridge 2007, starší vydání dostupné online,
základní kniha, po které sáhne každý fyzik, potřebuje-li něco vyřešit numericky, ale jde spíše o kuchařku než o soustavný výklad
[2]Vitásek E. - Numerické metody, SNTL, Praha 1987,
jde též spíše o kuchařku, vhodná jako referenční kniha
[3]Ralston A. - Základy numerické matematiky, Academia, Praha 1973
obsahuje většinu probraných témat, je ale staršího data a některá témata jsou vyložena jinak
[4]Koonin S. E. - Computational Physics, Benjamin, Menlo Park 1986,
pouze základní metody, ovšem s aplikací na konkrétní úlohy z fyziky
Podrobnější výklad jednotlivých témat
[5]Seghethová J. - Základy numerické matematiky, Karolinum, Praha 2002
řešení nelineárních rovnic, aproximace a interpolace funkcí, numerická integrace a základy numerické lineární algebry, včetně důkazů řady tvrzení
[6]Isaacson E., Keller H. B. - Analysis of Numerical Methods, Dover, New York 1994,
obsahuje (někdy až příliš) podrobný rozbor většiny probraných témat, včetně důkazů mnoha tvrzení,
v kapitola 6.4 je výklad diferenčních operátorů
[7]LeVeque R. J. - Finite Difference Methods for Ordinary and Partial Differential Equations, SIAM, Philadelphia 2007,
především kapitoly 1 (konečné diference) a 5–7 (obyčejné diferenciální rovnice)
[8]Trefethen L. N. - Finite Difference and Spectral Methods for Ordinary and Partial Differential Equations, 1996, dostupné online,
především kapitola 1 (obyčejné diferenciální rovnice)
[9]Trefethen L. N., Bau D. III - Numerical Linear Algebra, SIAM, Philadelphia 1997,
čtivá učebnice numerické lineární algebry, řada témat na přednášce je připravena podle této knihy
[10]Demmel J. W. - Applied Numerical Linear Algebra, SIAM, Philadelphia 2007,
především kapitola 2 (soustavy lineárních rovnic) a případně 4 a 5 (problém hledání vlastních čísel)

Většina z výše uvedené literatury je k dispozici ke stažení v elektronické podobě v "tajném" podadresáři, jehož jméno se dozvíte na přednášce či na požádání (nejlépe zasláním e-mailu přednášejícímu).

Numerické knihovny pro fyziku

Některé z níže zmíněných knihoven (jak ve FORTRANU, tak v jazyku C) a mnohé další pro řadu speciálních problémů lze najít na www.netlib.org.

1) CPC - Library, (hlavně FORTRAN)

Knihovna programů časopisu "Computer Physics Communications", kde lze nalézt články popisující metody. Obsahuje řešení pro mnoho úloh s nimiž se setkáte ve fyzice, včetně pokročilých metod, npř. různé speciální funkce, řešení Hartree-Fockových rovnic, ...Dostupné v doméně fakulty.

2) GSL (Gnu scientific library) (orientovano na C, ale je zde i překladač a knihovny pro F90)

Široké spektrum matematických procedur různého zaměření, vše volně k dispozici.

3) BLAS, EISPACK, LINPACK, LAPACK (Primárně FORTRAN 77, FORTRAN 90, existuje C++ verze)

BLAS je základní balík pro manipulaci s vektory a maticemi (jeho náhrada, která se umí maximálně efektinvě přizpůsobit hardware (optimální využití cache paměti procesoru pro násobení matic atd.) se jmenuje ATLAS). Na něj staví EISPACK pro diagonalizaci matic a LINPACK pro lineární algebru. Jejich sloučením vznikl LAPACK, který obsahuje velké množství procedur pro numerickou lineární algebru.

4) Intel Fortran (C) MKL - library

Matematické knihovny dodávané k intelovským překladačům FORTRANU a C. Obsahují mimo jiné LAPACK a SPARSE SOLVER pro inverzi obecných řídkých matic.

5) NAG library

Komerční profesionální balík matematických knihoven.

6) Super LU - Berkeley

LU dekompozice pro obecné řídké matice.

7) Quadpack

Adaptibilní kvadratury .