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.
Informace o kursu ● Výuka ● Software ● Zkouška a hodnocení ● Literatura ● Odkazy a zdroje ● Často kladené dotazy
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.
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
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.
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.
2. DERIVA – trend detection in time series; původně pro DERIVA Solutions, s.r.o., uses FOSPATOX.
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.
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).
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.
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.
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.
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.
3. Dieiversary – funny date-related computations.
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.
8. SimuLevitron – numerical simulation of rotation-stabilized levitation of permanent magnets.
9. PIPPA – Perfusion Image Progression and Prognosis Assessment; collaboration with Iveta Bryjová, clinical data kindly provided by Hana Klosová and Jiří Štětinský.
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.
11. Snapdragon (paclet, now obsolete) – an eclectic multipurpose cross-disciplinary collection, here asymmetric Savitzky–Golay kernels and their application are shown.
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).
14. Wormhole Design – oficiální znak Fyzikálního ústavu v Opavě (původní idea Zdeněk Stuchlík).
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.
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.
[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.
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
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í:
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
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
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)
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.