Numerické metody ve fyzice

Numerical Methods in Physics (NuMet)

FU:TFNSP0006 – nMgr SP FU N0533A110045 TFYZNM Teoretická fyzika (všechny specializace): 1/4/0, 7 kreditů, Zko

Garant: doc. RNDr. Jan Schee, Ph.D., <jan.schee@physics.slu.cz>, +420 553 68 4293
Přednášky a cvičení: doc. RNDr. Stanislav Hledík, Ph.D.

sh_NuMet_1.gif

Informace o kursuVýukaSoftwareZkouška a hodnoceníLiteraturaOdkazy a zdrojeČasto kladené dotazy

Informace o kursu

Anotace

Předmět seznamuje se základními numerickými metodami obecně používanými pro počítačové výpočty ve fyzice. Pro implementaci se používá programovacích jazyků C/C++ a Wolfram Language (v prostředí Mathematica).

Sylabus

1. Prerekvisity

Programovací jazyk C/C++: seznámení s vývojovým prostředím, překladač, oddělený překlad, sestavení, organizace programu a řídicí struktury, vlastnosti důležité pro numerické výpočty. Wolfram Language: seznámení s prostředím Mathematica, základní principy (1. programování založené na porovnávání vzorů a nahrazovacích pravidlech – pattern matching and replacement rules, 2. funkcionální programování), vlastnosti relevantní pro numerické výpočty.

2. Čísla v počítači

Reprezentace čísel v počítači a počítačová aritmetika. Dekadická, binární, oktanová a hexadecimální reprezentace; chyba, přesnost, stabilita výpočtu; záludnosti floating-point čísel. Složitost numerického algoritmu.

3. Řešení lineárních algebraických rovnic

Gaussova–Jordanova eliminace, Gaussova eliminace se zpětnou substitucí, LU dekompozice.

4. Interpolace a extrapolace

Polynomiální/racionální interpolace a extrapolace, kubické splajny.

5. Integrace funkcí (numerická kvadratura)

Numerická integrace. Klasické formule (otevřené, uzavřené, polootevřené) a algoritmy (lichoběžníkové, Simpsonovo pravidlo); Rombergova integrace; Gaussovy kvadratury a ortogonální polynomy; nevlastní a multidimensionální integrály.

6. Vyčíslování funkcí

Polynomiální a racionální funkce, řady a jejich konvergence; numerická derivace; Čebyševova aproximace; vyhlazování a derivace navzorkovaných zašuměných dat.

7. Obyčejné diferenciální rovnice

Problém počátečních podmínek, problém okrajových podmínek; Eulerova metoda; fixní a adaptivní integrační krok; integrační schémata Runge–Kutta, Bulirsch–Stoer, prediktor–korektor; analýza stability.

8. Hledání kořenů a řešení nelineárních rovnic

Bracketing, bisekce, metody sečen, regula falsi, Ridderova, Brentova, Newtonova–Raphsonova; kořeny polynomických rovnic n-tého řádu v reálném a v komplexním oboru.

9. Hledání maxim a minim funkcí

Hledání minim/maxim jednorozměrných funkcí; hledání extrémů vícerozměrných funkcí pomocí „Downhill Simplex” metody.

10. Fourierova transformace a spektrální metody

Diskrétní Fourierova transformace (DFT), rychlá Fourierova transformace (FFT),  jejich odrůdy, FFT ve dvou a více dimensích; konvoluce, korelace, odhad výkonového spektra; wavelety.

11. Náhodná čísla

Generátory rovnoměrného rozdělení; transformační a rejekční metoda pro generování jiných rozdělení; Monte Carlo integrace.

12. Statistika a modelování dat

Distribuce, momenty; elementy inferenční statistiky; obecný lineární fit (regrese), nelineární fit.

▲▲  

Výuka

Přednášky/cvičení

Standardní čas výuky: podle aktuálního rozvrhu.

Přednášky ani cvičení nemusejí nutně sledovat strukturu témat uvedenou v sylabu.

V rámci výuky využívané online materiály naleznete v mém Dropbox cloudu přes zkrácený odkaz

j.mp/slunivo

v adresáři NuMet (případně můžete použít přímý link do NuMet).

V případě, že něčemu neporozumíte nebo si budete chtít něco ujasnit, jsou k dispozici konzultace.

Pro případ mimořádných okolností uvádím odkaz na organizaci případné online výuky.

▲▲  

Software

ASCII editory

gedit: https://gedit-technology.github.io/apps/gedit/ (rozumná volba pro začátečníky)

vim: https://www.vim.org/ (nativní editor na různých unixech, mocný, ale specifické ovládání, někdo adoruje, jiný zatracuje)

GNU Emacs: https://www.gnu.org/software/emacs/, port pro Windows http://ftp.gnu.org/gnu/emacs/windows/ (kultovní editor, opět specifické ovládání, adorován/haněn, budu používat na výuce)

joe – Joe’s Own Editor: https://joe-editor.sourceforge.io/

Další zde: https://www.thefreecountry.com/programming/editors.shtml

Kompilátory C/C++, terminály a shelly

Windows:  MSYS2 (https://www.msys2.org/) je kolekce nástrojů a knihoven, které poskytují snadno použitelné prostředí pro vytváření, instalaci a spouštění nativního softwaru Windows (kompilátor a další náležitosti se dodatečně nainstalují pomocí balíčkovacího systému). V sekci Často kladené dotazy je pro usnadnění instalace návod Jak nainstalovat MSYS2?

Linux: bývá automaticky přítomno obojí (typicky terminál, bash shell + kompilátor GCC, Make a další nástroje).

MacOS: nemám zde zkušenosti, ale jelikož MacOS je klon Unixu, měl by být k dispozici terminál, shell a lze doinstalovat kompilátor. Viz též Visual Studio Code níže.

IDE pro C/C++

Visual Studio Code, free, built on Open Source, runs everywhere: https://code.visualstudio.com/ (doporučuji, navíc funguje na Win, MacOS i Linuxu)

Dev-C++, Open Source C/C++ IDE for Windows: https://www.bloodshed.net/

Code::Blocks, the free C/C++ and Fortran IDE: https://www.codeblocks.org/

Numerické knihovny pro C/C++

Press et al.: Numerical Recipes – komerční knihovna, viz [PreEtal2007, PreEtal1997, VetEtal1995] v subsekci Literatury Implementace numerických metod v jazyce C/C++. Ve starších verzích existuje i pro Fortran 90, Fortran 77, Pascal a BASIC.

The NAG (Numerical Algorithm Group) Library – komerční knihovna, “The world’s biggest commercially available library of robust, documented, and tested numerical and statistical algorithms.”

The IMSL Numerical Libraries – komerční knihovna pro jazyky Fortran, C/C++, Python, Java.

GSL – GNU Scientific Library – free software under the GNU General Public License. The GSL is a numerical library for C and C++ programmers.

CERN ROOT – an open-source data analysis framework used by high energy physics and others.

LAPACK – Linear Algebra PACKage, freely-available software package.

BLAS – Basic Linear Algebra Subprograms, freely-available software package.

Intel® oneAPI Math Kernel Library (oneMKL). Fast, efficient, easy-to-use freeware math library. Contains LAPACK and BLAS.

Další: List of numerical libraries, List of numerical-analysis software.

Projekty (malé i trochu větší) vyučujícího napsané v C/C++

Dostupné přes odkaz do mého Dropbox cloudu v sekci Výuka v adresáři Resources/SampleProjects (případně můžete použít link do Resources/SampleProjects). Zatím zveřejněny č. 1, 5, 9, 11–13. Zbylé “hopefully coming soon”.

1.  CUMDA – CUMulative Data Analysis (smoothing/computing derivatives of unevenly sampled cumulative time series, formerly CONSRATE); collaboration with Daniel Štencel in writing his Diploma Thesis in 2016–17.

sh_NuMet_2.gif

2.  DERIVA – trend detection in time series; původně pro DERIVA Solutions, s.r.o., uses FOSPATOX.

sh_NuMet_3.gif

3.  ENTROPY – calculates Shannon entropy of a file and prints it on stdout.

4.  FAKEPS – makes FAKed EPS mockup images to replace enormously big originals; comes handy when writing image-rich ΤeΧ papers.

sh_NuMet_4.gif

5.  FOSPATOX – FOurier and SPectral Application TOols (or TOys) for eXperiments (Fourier and wavelets).

6.  FRACALC – FRActional CALCulus: computes fractional derivative and integral via FFT.

7.  FRESNEL – digital holography using an ordinary photo camera (unveiled imaging chip behind removed lenses); collaboration with Hynek Sekanina.

8.  GRPFS – General Relativistic Polytropic Fluid Spheres (and extension GRPFS+ with stability analysis added); collaboration with Zdeněk Stuchlík, basis for a few scientific papers and posters (see also NOUTILS).

sh_NuMet_5.gif

9.  MIERANUS – MIE theory RAinbow NUmerical Simulation (EM wave scattering on spherical water droplets; below are examples of rainbow for water droplet radii 10 μm, 30 μm, 45 μm, 125 μm, 250 μm, 0.5 mm, 0.7 mm, 1.0 mm, respectively, from left to right); collaboration with Andrea Břemková in writing her Diploma Thesis in 2003.

sh_NuMet_6.gif

10.  NOUTILS – a suite of utilities that enable effective handling results issued by a numerical program (e.g. GRPFS).

11.  PRIME – interactively tests an input integer number > 1 for being a prime.

sh_NuMet_7.gif

12.  SUMADLO – lehce stupidní terminálová hra pro tři hráče: dva lidi a počítač:-) Původní idea cca 1982–1983 na koleji Větrník v Praze-Petřinách spolu s Alešem Langrem a Mirkem Holečkem jako zobecnění hry kámen-nůžky-papír.

sh_NuMet_8.gif

13.  TEXWIPE – wipes recreatable files generated by LaΤeΧ. Well, it’s not written in C, it’s mere bash script. But anyway, isn’t bash written in C?

Wolfram Language & Mathematica

Posluchačům bude poskytnuta oficiální studentská licence programu Wolfram Mathematica.

Viz kurs Symbolické výpočty a literatura a reference tamtéž.

Projekty vyučujícího napsané ve Wolfram Language

Dostupné na vyžádání.

1.  Customizzer (paclet) – customizing Wolfram Mathematica on the user-specific level.

2.  Cuticurve (paclet) – an application to analyze skin viscoelastic curves; clinical data kindly provided by Hana Klosová, Jiří Štětinský and Iveta Bryjová. Used for preparation of the Bachelor’s Thesis of Arina Navoychik in the academic year 2023/24.

sh_NuMet_9.gif

3.  Dieiversary – funny date-related computations.

sh_NuMet_10.gif

4.  Examplet (paclet) – an instructional and testing single-context paclet.

5.  ExampletMultiplex (paclet) – an instructional and testing multi-context paclet.

6. GRPFS – rendering GRPFS data outputs into images; calling an external C-program and processing its output.

7.  Hemanalytica (paclet) – an assemblage of hematologic data (kindly provided by Zenon Lasota and Iveta Bryjová) accompanied by programmatic tools to facilitate haematologic research.

sh_NuMet_11.gif

8.  SimuLevitron – numerical simulation of rotation-stabilized levitation of permanent magnets.

sh_NuMet_12.gif

9.  PIPPA – Perfusion Image Progression and Prognosis Assessment; collaboration with Iveta Bryjová, clinical data kindly provided by Hana Klosová and Jiří Štětinský.

sh_NuMet_13.gif

10.  RSITools – Rectifying Stereoscopic Images, a program to interactively create 3D vision from a pair of images taken by an ordinary camera; collaboration with Simona Beerová in writing her Diploma Thesis in 2023.

sh_NuMet_14.gif

11.  Snapdragon (paclet, now obsolete) – an eclectic multipurpose cross-disciplinary collection, here asymmetric Savitzky–Golay kernels and their application are shown.

sh_NuMet_15.gif

12.  sh_WebPages – systém pracovních webových stránek vyučujícího (včetně balíčku funkcí WebUtils.wl).

13.  SyCo – systém pro zadávání úloh k procvičování v předmětu Symbolické výpočty (včetně stylesheetu SyCo_Style.nb a balíčku funkcí SyCo.wl).

sh_NuMet_16.gif

14.  Wormhole Design – oficiální znak Fyzikálního ústavu v Opavě (původní idea Zdeněk Stuchlík).

sh_NuMet_17.gif

▲▲  

Zkouška a hodnocení

Každému posluchači bude zadáno téma semestrální práce, může být přihlédnuto k zaměření diplomové práce. Zadaná úloha bude řešena pomocí numerických metod probraných ve výuce. Zkouška se skládá z obhajoby semestrální práce a diskuse o jejích aspektech. Výsledek zkoušky je klasifikován na základě bodového zisku podle 30-bodové klasifikační stupnice. Další podrobnosti na přednášce.

Návrh témat semestrálních prací

1.  Keplerova úloha s velikou excentricitou orbitální elipsy a počtem oběhů v řádu tisíců – numerická analýza trajektorie.

2.  Rovinné matematické kyvadlo s elastickým závěsem – numerická analýza trajektorií.

3.  Sférické kyvadlo – řešení exaktní a s kvadratickým potenciálem.

4.  Kapicovo (invertní) kyvadlo – numerická analýza přibližné podmínky stabilizace invertní rovnováhy.

5.  Studium van der Polova oscilátoru.

6.  Balistika se započtením odporu prostředí a Magnusova jevu.

7.  Vyhlazování a derivace časové řady pomocí Savitzkyho–Golayova FIR filtru.

8.  Studium dat o onemocnění COVID-19 získaných z webu Ministerstva zdravotnictví ČR.

9.  Kompartmentální SIR epidemiologický model.

Možnost navázat na některý vhodný projekt v C/C++ nebo Wolfram Language, např. GRPFS, MIERANUS nebo SimuLevitron.

▲▲  

Literatura

Matematické základy numerických metod

[Ral1978]   Ralston, A.: Základy numerické matematiky. Academia, Praha, 1978. Dostupné v knihovně.

[StoBul2002]   Stoer, J.; R. Bulirsch, R.: Introduction to numerical analysis. Springer-Verlag, New York, 2002, ISBN 0-387-95452-X. Dostupné v knihovně.

[Vit1987]   Vitásek, E.: Numerické metody. SNTL – Nakladatelství technické literatury, Praha, 1987. Dostupné v knihovně.

[Hof2001]   Hoffman, J. D.: Numerical methods for engineers and scientists. CRC Press, Taylor & Francis Group, Boca Raton, FL, 2001. ISBN 0-8247-0443-6. Dostupné v knihovně.

[QuSaSa2000]   Quarteroni, A.; Sacco, R.; Saleri, F.: Numerical Mathematics. Texts in Applied Mathematics 37. Springer-Verlag New York, Inc., 2000. ISBN 0-387-98959-5. Dostupné na https://www.researchgate.net/publication/230554864_Numerical_Mathematics.

Implementace numerických metod v jazyce C/C++

[PreEtal2007]   Press, W. H.; Teukolsky, S. A.; Vetterling, W. T. & Flannery, B. P.: Numerical Recipes: The Art of Scientific Computing. Cambridge University Press, Cambridge, 3rd edition, 2007, 4th printing 2017, ISBN 978-0-521-88068-8. URL http://numerical.recipes/. Dostupné v  knihovně. Pozn.: používá programovací jazyk C++; zdrojové kódy na CD-ROM v3.02 jsou rovněž k dispozici v knihovně.

[PreEtal1997]   Press, W. H.; Teukolsky, S. A.; Vetterling, W. T. & Flannery, B. P.: Numerical Recipes in C: The Art of Scientific Computing. Cambridge University Press, Cambridge, 2nd edition, 1997. ISBN 0-521-43108-5. URL http://numerical.recipes/. Pozn.: používá programovací jazyk C; zdrojové kódy na CD-ROM v2.10 jsou rovněž k dispozici v knihovně.

[VetEtal1995]   Vetterling, W. T.; Teukolsky, S. A.; Press, W. H. & Flannery, B. P.: Numerical recipes : example book (C). Cambridge University Press, Cambridge, 1995. ISBN 0-521-43720-2. Dostupné v knihovně včetně diskety s kódy ISBN 0-521-43724-5.

Programovací jazyk C/C++

[Her2003]  Herout, P.: Učebnice jazyka C. KOPP, České Budějovice, 2003. ISBN 80-85828-21-9. Dostupné v knihovně.

[Her2004a]  Herout, P.: Učebnice jazyka C. 1. díl. KOPP, České Budějovice, 2004. ISBN 80-7232-220-6. Dostupné v knihovně.

[Her2004b]  Herout, P.: Učebnice jazyka C. 2. díl. KOPP, České Budějovice, 2004. ISBN 80-7232-221-4. Dostupné v knihovně.

[KerRit1988]   Kerninghan, B. W.; Ritchie, D. M.: The C Programming Language. Englewood Cliffs, Prentice Hall, 2nd edition, 1988. ISBN 0-13-110362-8. Dostupné v knihovně.

[RicSal1998]   Richta, K.; Šaloun, P.: Programovací jazyk C. Vydavatelství ČVUT, Praha, 1998. ISBN 80-01-01890-3. Dostupné v knihovně.

[Sal1999]   Šaloun, P.: Jazyk C pro zelenáče. Neocortex, Praha, 1999. ISBN 80-86330-02-X. (Ne)dostupné v knihovně. Viz též  stránku autora na VŠB-TUO.

[Eck2000]   Eckel, B.: Thinking in C++, Volume 1. MindView, Inc., 2nd edition, 2000. Available at https://www.micc.unifi.it/bertini/download/programmazione/TICPP-2nd-ed-Vol-one-printed.pdf

[Eck1999]   Eckel, B.: Thinking in C++, Volume 2. MindView, Inc., 1999. Available at http://vergil.chemistry.gatech.edu/resources/programming/pdf/TIC2Vtwo.pdf

[Vir2001]   Virius, M.: Programování v C++. Vydavatelství ČVUT, Praha, 2001. ISBN 80-01-01874-1. Dostupné v knihovně.

[Rac1994]   Racek, S.: Objektově orientované programování v C++. KOPP, České Budějovice, 1994. ISBN 80-85828-20-0. Dostupné v knihovně.

[Lib2007]   Liberty, J.: Naučte se C++ za 21 dní. Computer Press, Brno, 2007. ISBN 978-80-251-1583-1. Zahrnuje CD-ROM. Dostupné v knihovně.

Wolfram Language & Mathematica

Viz Wolfram Language & Mathematica v subsekci Software.

▲▲  

Odkazy a zdroje

V průběhu semestru mohou být průběžně doplňovány. Dostupnost byla naposledy ověřena návštěvou 2024-05-09.

Tabulky funkcí a integrálů “Abramowitz–Stegun online”: The NIST Digital Library of Mathematical Functions

Tabulky funkcí, integrálů a řad “Gradštejn–Ryžik online”: Table of Integrals, Series, and Products

Fyzikální konstanty (aktuální hodnoty): The NIST Reference on Constants, Units, and Uncertainty

▲▲  

Často kladené dotazy

Q: Jak nainstalovat MSYS2?

A: Pokyny pro instalaci jsou detailně popsány na https://www.msys2.org/, …

… ale pro úsporu času a nervů nabízím “kuchařku”, jak s minimálním úsilím vybavit váš počítač s Windows vším potřebným a kompatibilním s tím, co budu používat ve výuce (předpokladem je 64-bitový OS Windows 8.1+). Volitelné činnosti či kroky jsou šedě, ostatní jsou povinné:

0.  Pokud již máte starší instalaci MSYS2, doporučuji ji úplně odinstalovat standardním způsobem přes Windows Settings.

1.  Stáhněte si aktuální instalátor ‘msys2-x86_64-YYYYMMDD.exe’ ze stránky MSYS2.

2.  Spusťte instalátor a absolvujte standardní instalační proceduru. Neinstaluje se žádný nežádoucí bloatware nebo adware a všechny instalační kroky lze bezpečně “odentrovat”; terminál spuštěný v posledním kroku ukončíte vložením příkazu ‘exit’ a odentrováním. Doporučuji přijmout defaultní instalační adresář C:\msys64. Chcete-li instalační adresář změnit, volte rozumně krátkou cestu na NTFS souborovém systému (žádný FAT jako na flešce) obsahující pouze ASCII znaky (žádná diakritika), bez mezer (fuj, jak Microsoft a Apple naučily lidi páchat zvěrstva jako soubory či adresáře nazvané ‘Žluťoučký kůň’ a pod:-), žádné symbolické linky či síťové disky.

3.  Z nabídky ‘Start’ vyberte pod položkou MSYS2 podpoložku ‘MSYS2 ▶ UCRT64’, a pro snadné spouštění si ji připíchněte na taskbar nebo udělejte zástupce na ploše. Barva ikony pro environment UCRT64 je následující:

sh_NuMet_18.gif

4.  Spusťte MSYS2, pravým tlačítkem myši klikněte na písmeno ‘M’ v levém horním rohu rámečku okna terminálu, a pomocí menu ‘Options…’ si nastavte font, barvy a velikost terminálového okna, případně další preference podle svých požadavků. Doporučuji v položce ‘Looks’ vybrat barevné téma ‘gruvbox’ (je příjemné na oči a nevypadá jako neonová reklama na vykřičený dům), v položce ‘Window’ dostatečnou šířku (alespoň 100 znaků) a výšku přes celou obrazovku (neprojeví se hned, musíte MSYS2 ukončit a znovu spustit).

5.  Aktualizujte váš MSYS2 změnami, jež se objevily v časovém intervalu mezi publikací použité verze instalátoru a okamžikem vaší instalace spuštěním příkazu

pacman -Suy

Je nutno striktně dodržet malá a velká písmena, nejlépe je příkazy odsud zkopírovat a rovnou vkládat do terminálu; do něj ale se vkládá a kopíruje pomocí pravého tlačítka myši a vybráním Copy nebo Paste z kontextového menu.

Tento proces bude občas přerušován dotazem, zde může pokračovat – vždy odpovězte kladně, tj. odentrováním. Aktualizace si navíc obvykle vynutí zavření okna terminálu, v tom případě musíte MSYS2 znovu spustit, načež proveďte výše uvedený aktualizační příkaz znovu (aktualizace může pokračovat dalším kolem). Opakujte aktualizaci, dokud neuvidíte něco jako

sh_NuMet_19.gif

Tím je aktualizace skončena.

6.  Nainstalujte všechny potřebné vývojové nástroje (včetně překladače GCC a managementu překladu GNU Make) spuštěním příkazu:

pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

Viz také Using GCC with MinGW a Group: mingw-w64-ucrt-x86_ 64-toolchain.

7.  Nemáte-li již k dispozici nějaký oblíbený ASCII editor, nainstalujte si třeba gedit spuštěním příkazu

pacman -S mingw-w64-ucrt-x86_64-gedit

Můžete si jej připíchnout na taskbar, udělat zástupce na ploše, nebo jej prostě spouštět z terminálu příkazem

gedit &

Ti, kdo preferují Vim či GNU Emacs, jej místo toho mohou naisntalovat spuštěním příkazu

pacman -S vim

nebo

pacman -S mingw-w64-ucrt-x86_64-emacs

Ukázková konfigurace editoru Emacs, jak ji používám na svých počítačích, je ke stažení v jedné z dalších odpovědí níže.

8.  Vytvořte si v domovském adresáři systému MSYS2 adresář ‘bin’ (může se hodit jako lokace pro instalaci vašich programů) pomocí

cd; mkdir bin

Domovský adresář vašeho systému MSYS2 je v adresářové struktuře disku typicky ‘C:\msys64\home\<username>’, ale MSYS2 jej “vidí” jako ‘/home/<username>’. Váš domovský adresáři v systému Windows je typicky ‘C:\Users\<username>’, kde <username> je vaše uživatelské jméno, které bude zděděno do systému MSYS2.

9.  Občas se hodí utility pro archivaci a kompresi (třeba hned v následujícím kroku):

pacman -S compression
pacman -S mingw-w64-ucrt-x86_64-7zip

10.  Stáhněte z adresáře ‘Resources/Exercises/01_Prerequisites’ ve výše uvedeném cloudu (kam můžete také jít přímým linkem) archiv ‘msys2_config_sh.zip’. Za předpokladu, že si jej uložíte do standardní složky pro stažené soubory, spusťte příkaz

i=/c/Users/${USERNAME}/Downloads/msys2_config_sh.zip; unzip -od ${HOME} $i; rm -vf $i

(při jiném umístění musíte cestu k ‘msys2_config_sh.zip’ modifikovat). Tím se doplní a přepíší stávající konfigurační soubory shellu ‘/home/<username>/.bash*’ ve vašem domovském adresáři MSYS2 odpovídajícími modifikovanými konfiguračními soubory z archivu ‘msys2_config_sh.zip’ (ten bude po rozbalení smazán).

Mimo jiné tím navíc získáte aliasy typu ‘gohome’, ‘godown’, ‘godesk’, … umožňující rychlý přechod do vašeho domácího adresáře ve Windows (ne v MSYS2!, viz výše), adresáže pro stahování, adresáře plochy, …, a podobně. Bez této akce by se rovněž adresář ‘bin’ vytvořený v kroku 8 nechoval tak, jak se od něj očekává (tj. že programy v něm umístěné budou systémem nalezeny, takže je nemusíte prefixovat pomocí ‘./’).

Kdo si chce přidat další aliasy, může editovat soubor ‘.bash_aliases’, ale je předtím dobré se přesvědčit, zda alias, který chcete přidat, už z dřívějška neexistuje. Seznam aliasů pak můžete vidět pomocí příkazu

$ cd; cat .bash_aliases

11.  Budete-li instalovat další programové komponenty, dejte přednost těm, které po spuštění vyhledávacího příkazu (pozor na rozdíl oproti instalačnímu příkazu)

pacman -Ss <název_komponenty>

zobrazí požadovanou komponentu s barevným prefixem environmentu ‘ucrt64/’. Například výstupem příkazu (v ukázce výpisu je již nainstalován):

pacman -Ss 7zip

je něco jako

sh_NuMet_20.gif

V tom případě je třeba instalovat takto (viz tentýž příkaz kousek výše):

pacman -S mingw-w64-ucrt-x86_64-7zip

Někdy pod prefixem ‘ucrt64/’ požadovanou položku nenajdete, například v případě příkazu

pacman -Ss pkzip

s výstupem (v ukázce výpisu je již nainstalován)

sh_NuMet_21.gif

Pak se bude instalovat takto:

pacman -S zip

K environmentu UCRT s prefixem ‘ucrt64/’ lze použít pouze environment MSYS s prefixem ‘msys/’. Nemíchejte k nim další environmenty s prefixy ‘clang32/’, ‘clang64/’, ‘clangarm64/’, ‘mingw32/’, ‘mingw64/’, nebude to fungovat. Blíže viz Environments v dokumentaci MSYS2.

12.  Perfekcionisté si mohou spustit příkazy

paccache -r

a

pacman -Qm

z nichž první by měl odpovědět

==> no candidate packages found for pruning

a druhý zůstat bez odezvy.

Q: Jaké jsou nejnutnější příkazy linuxového shellu bash v systému MSYS2?

A: Pokud jde o “základní přežití”, …

… navštivte například některý z odkazů

A Beginner's Guide to Surviving in the Linux Shell

Bash cheat sheet: Top 25 commands and creating custom commands

Kompletní referenční manuál najdete zde: Bash Reference Manual.

Pokud jste si podle kroku 10 otázky “Jak nainstalovat MSYS2?” přizpůsobili nastavení, nalezenete v konfiguračních souborech ‘.bash_aliases’ a ‘.bash_functions’ sídlících ve vašem ${HOME} aliasy s dalšími příkazy a funkcemi, např. ‘ll’ pro “dlouhý” výpis obsahu adresáře.

Q: Jak psát soubory Makefile pro management kompilace pomocí GNU Make?

A: Pro potřeby kursu stačí, …

… tutoriál Learn Makefiles with the tastiest examples

Kompletní referenční manuál najdete zde: GNU Make Manual.

Q: Jak provést kontrolu pravopisu v editoru GNU Emacs?

A: Postupujte následovně:

0.  Předpokladem je nainstalovaný GNU Emacs, například podle bodu 7 v otázce Q: Jak nainstalovat MSYS2? nebo mimo MSYS2 z repozitářů, na něž míří odkazy výše, dále je nezbytný funkční MSYS2.

1.  Do systému MSYS2 doinstalujte balíky ‘hunspell’ a ‘hunspell-en’ pomocí příkazů (viz též Q: Jak nainstalovat MSYS2?)

pacman -S mingw-w64-ucrt-x86_64-hunspell
pacman -S mingw-w64-ucrt-x86_64-hunspell-en

Jiné slovníky než ty s různými odrůdami angličtiny zatím nejsou v balíčkovacím systému MSYS2 k dispozici (více k tomu je uvedeno níže). Slovníkové soubory *.{aff,dic} budou typicky nainstalovány do

c:/msys64/ucrt64/share/hunspell/

a identické soubory do

c:/msys64/ucrt64/share/myspell/dicts/

2.  Stáhněte si archiv ‘hunspell_cs.zip’ s novou podporou češtiny z článku Nová verze české kontroly pravopisu Hunspell Miroslava Pošty (tento web je odkázán rovněž z článku Nová verze českého slovníku pro Hunspell).

3.  Extrahujte z archivu ‘hunspell_cs.zip’ dva soubory ‘cs_CZ.{aff,dic}’ do adresáře

c:/msys64/ucrt64/share/hunspell/

(do toho druhého adresáře uvedeného výše není třeba).

4.  Nastavte kontrolu pravopisu s více slovníky (v našem příkladu s en_US a cs_CZ) najednou podle tohoto odkazu. Pozor, tento článek je odkázán z článku Setting up spell checking with multiple dictionaries in Emacs, kde je však v příslušném kódu syntaktická chyba. Prakticky to znamená, že do konfiguračního souboru ‘.emacs’ přidáte určitý kód; pro úplnost uvádím jeho znění tak, jak jej mám na jednom ze svých počítačů já. Snadno si jej upravíte pro své vlastní potřeby:

(with-eval-after-load "ispell"
    (setenv "LANG" "en_US.UTF-8")
    (setq ispell-program-name "c:/msys64/ucrt64/bin/hunspell.exe")
    (setq ispell-dictionary "en_US,cs_CZ")
    (ispell-set-spellchecker-params)
    (ispell-hunspell-add-multi-dic "en_US,cs_CZ"))
(setq ispell-personal-dictionary "c:/Users/hledik/Dropbox/texmf/tex/generic/hunspell/emacs_personal.dic")
(unless (file-exists-p ispell-personal-dictionary)
    (write-region "" nil ispell-personal-dictionary))

Jinou možností je stažení archivu Emacs_Config.zip, v němž naleznete vzorový konfigurační soubor ‘.emacs’ včetně předcházejícího kódu, opět stačí si jej přiohnout pro své vlastní potřeby.

5.  V mém případě, jak je vidět z předcházejícího kódu, jsem pro personální slovník volil umístění v adresáři Dropboxu, aby se synchronizoval přes všechny počítače, na kterých pracuji,

c:/Users/hledik/Dropbox/texmf/tex/generic/hunspell/emacs_personal.dic

Konkrétní umístění je samozřejmě na vás, dejte si jej tam, kde to považujete za užitečné chcete, např.

(setq ispell-personal-dictionary "~/.hunspell_personal")

umístí personální slovník do souboru ‘.hunspell_personal’ v domovském adresáři systému MSYS2 (viz poznámku o domovském adresáři).

6.  Spouštějte hunspell obvyklým příkazem Emacsu M-x ispell-*. Není nutné přepínat slovník, bude se kontrolovat jak čeština (slovník cs_CZ), tak americká angličtina (slovník en_US), a neznámá slovíčka (pokud to přikážete) se budou ukládat do personálního slovníku popsaného v předešlém bodě.

7.  Potřebujete-li kromě en_US a cs_CZ slovníky i pro další jazyky, navštivte stránku FreeOffice Dictionaries a stáhněte *.sox soubor(y) pro požadované jazyky. Ze souborů *.sox, které nejsou ničím jiným než zip-archivy, extrahujte příslušné dva ‘*.{aff,dic}’ soubory do adresáře se slovníky. Dále je možné upravit konfiguraci editoru GNU Emacs tak, aby současně kontroloval více jazyků, takže například pro přidání slovenčiny nahraďte v konfiguraci “en_US,cs_CZ” řetězcem “en_US,cs_CZ,sk_SK”, a podobně pro další jazyky. Lepší je ale podle mého názoru konfiguraci neměnit a přepnout manuálně pomocí ‘M-x ispell-change-dictionary’ a po odentrování následným vložením sk_SK. Zpětné přepnutí se provede podobně, s vložením en_US,cs_CZ (nebo jen třeba cs_CZ, chcete-li). Analogicky můžete přepnout na slovník britské angličtiny (en_UK) nebo jiné její odrůdy.

▲▲  

Created with the Wolfram Language