Bachelor's Thesis

Knihovna numerických integračních metod v C++

Final Thesis 1.97 MB

Author of thesis: Bc. Vít Pavlík

Acad. year: 2025/2026

Supervisor: Dr. Ing. Petr Peringer

Reviewer: Ing. Aleš Smrčka, Ph.D.

Abstract:

This bachelor's thesis focuses on the design and implementation of a software library in C++ for the numerical solution of ordinary differential equations (ODEs). The aim of the thesis is to create an understandable and compact library named Integrify, which will primarily serve educational purposes and help students better understand the topic of continuous simulation and numerical methods. Unlike existing highly optimized solutions, Integrify emphasizes source code readability and ease of use for beginners. The library implements a set of both explicit and implicit methods that are suitable, among other things, for solving stiff systems. The library design utilizes features of the C++20 and C++23 standards, particularly modules for interface management and Concepts for type safety. The architecture is based on the Strategy design pattern, which ensures a uniform interface without the performance overhead associated with virtual functions. Simulation step control is performed manually, giving the user full control over the simulation loop and the ability to experiment with step sizes. The implicit methods in the library employ automatic numerical approximation of the Jacobian matrix using forward differences, thereby relieving the user from the need to supply its analytical form. The implementation also fully supports template data types for flexible selection of computational precision without modifying the algorithms. The implemented methods will subsequently be verified and evaluated on a set of representative test problems.

Keywords:

ordinary differential equations, numerical methods, numerical integration, continuous simulation, initial value problem, stiff systems, modern C++, software library, educational software, trapezoidal rule, Euler method, Runge-Kutta, Adams-Bashforth

Date of defence

17.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaBznamka

Grading

B

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm B.

Topics for thesis defence

  1. Jak si vysvětlujete výrazně horší výsledek ověřeného testu t10-decay s metodou ben_method oproti ostatním ověřeným příkladům?
  2. Nepotřeboval jste v práci využít Taylorovu řadu?

Language of thesis

Czech

Faculty

Department

Study programme

Information Technology (BIT)

Composition of Committee

doc. Ing. František Zbořil, CSc. (předseda)
doc. Ing. Michal Španěl, Ph.D. (místopředseda)
Ing. Jan Pluskal, Ph.D. (člen)
Ing. Aleš Smrčka, Ph.D. (člen)
Ing. Josef Strnadel, Ph.D. (člen)

Supervisor’s report
Dr. Ing. Petr Peringer

Celkově byla aktivita studenta mírně podprůměrná. Návrh API knihovny je vlastním přínosem studenta. Navrhuji celkové hodnocení stupněm C.

Evaluation criteria Verbal classification
Informace k zadání

Práce je zaměřena na numerické metody pro spojitou simulaci implementované v moderním C++. Zadání je relativně jednoduché, náročnější jsou pouze implicitní metody, které se v bakalářském studiu typicky nepřednáší. Zadání bylo podle mého názoru splněno a některé části by mohly být použitelné ve výuce předmětu IMS.

Práce s literaturou

Literaturu si student vyhledával zcela samostatně.

Aktivita během řešení, konzultace, komunikace

Student byl po celou dobu řešení přiměřeně aktivní a pravidelně informoval o postupu práce. Konzultace byly pouze minimální, student převážně pracoval samostatně.

Aktivita při dokončování

Text práce student konzultoval s předstihem, většina mých připomínek byla do textu zapracována, nicméně např. metodika hodnocení numerických metod by mohla být zpravována lépe.

Publikační činnost, ocenění

-

Points proposed by supervisor: 70

Grade proposed by supervisor: C

Reviewer’s report
Ing. Aleš Smrčka, Ph.D.

Práce představuje kvalitně zpracovaný bakalářský projekt s reálným přínosem v návrhu a implementaci výukově orientované knihovny numerických metod. Technická zpráva je logicky vystavěná, rešeršní i návrhová část jsou zpracovány věcně a programové řešení je použitelné pro výuku numerických metod. Celkově pozitivní hodnocení však vyrovnává menší rozsah implementačního popisu, méně čistá struktura odevzdané přílohy a ne zcela vyrovnaná kvalita numerických výsledků. Přes tyto výhrady považuji bakalářskou práci za nadprůměrnou a navrhuji ji hodnotit stupněm B.

Evaluation criteria Verbal classification Points
Náročnost zadání

Evaluation level: obtížnější zadání

Zadání kombinuje rešerši numerických metod a existujících nástrojů, návrh vlastního API, implementaci knihovny v C++23 a experimentální ověření na sadě 10 úloh. Na bakalářskou práci jde o technicky poměrně náročné zadání, zejména s ohledem na požadavek na porozumění, implementaci a použití numerických metod, které jsou nad rámec běžného studia v bakalářském programu.

Prezentační úroveň technické zprávy

Technická zpráva má logickou strukturu a jednotlivé kapitoly na sebe navazují. Rešeršní část vytváří výborný podklad pro vlastní návrh, který je popsán srozumitelně a s použitím odpovídajících technických prostředků včetně diagramů a grafů. Slabší stránkou je menší míra detailu v implementační části a jen omezené kritické zhodnocení některých omezení navrženého řešení.

85
Formální úprava technické zprávy

Formální a jazyková úprava technické zprávy je celkově dobrá. Text je čitelný, terminologie je převážně konzistentní a odkazy na obrázky, kapitoly i literaturu jsou používány systematicky.

85
Realizační výstup

Příloha obsahuje vlastní knihovnu numerických integračních metod v C++23 se srozumitelnou strukturou, dokumentací a sadou 10 testovacích úloh. Pozitivně hodnotím, že se projekt podařilo v připraveném kontejnerovém prostředí přeložit a že část deklarovaného postupu byla prakticky ověřena včetně běhu testu využívajícího Octave a gnuplot. Malé výhrady mám k menší čistotě odevzdané přílohy, která obsahuje i build a rozsáhlé generované artefakty, dále k absenci explicitních licenčních informací u převzatých podpůrných souborů a k tomu, že numerická kvalita výsledků není zjevně vyrovnaná. Při praktickém ověření se to projevilo zejména u testu t10-decay, který sice doběhl, ale vykázal o několik řádů horší relativní chybu než ostatní ověřené příklady.

80
Využitelnost výsledků

Výsledkem práce je výukově orientovaná knihovna, která může posloužit jako srozumitelný doplněk k výuce numerických metod a spojité simulace. Práce nepřináší nový teoretický poznatek, ale představuje smysluplné programové dílo zvoleného tématu. Praktická využitelnost je spíše pedagogická a demonstrační.

Rozsah splnění požadavků zadání

Evaluation level: zadání splněno

Předložená práce pokrývá všechny hlavní body zadání. Technická zpráva obsahuje prozkoumání relevantních nástrojů, návrh knihovny i zhodnocení dosažených výsledků. Elektronická příloha zahrnuje vlastní projekt v C++23 s implementací explicitních i implicitních metod a sadu 10 testovacích úloh. Praktickým ověřením v kontejnerovém prostředí se podařilo projekt přeložit a spustit část deklarovaného testovacího workflow.

Rozsah technické zprávy

Evaluation level: je v obvyklém rozmezí

Technická zpráva má cca 74 normostran a po obsahové stránce pokrývá všechny podstatné oblasti práce. Část prostoru zaujímají obrázky a grafy. Text je informačně použitelný, avšak podrobnější popis implementačních detailů by si zasloužil větší rozsah.

Práce s literaturou

Student pracuje s literaturou tematicky relevantně a pokrývá jak teoretické zdroje, tak dokumentaci existujících nástrojů a knihoven. Pozitivně hodnotím vazbu rešerše na vlastní návrh práce. Slabší stránkou je vyšší podíl webových zdrojů a dokumentace oproti odborným článkům nebo knihám.

80
Topics for thesis defence:
  1. Jak si vysvětlujete výrazně horší výsledek ověřeného testu t10-decay s metodou ben_method oproti ostatním ověřeným příkladům?
Points proposed by reviewer: 80

Grade proposed by reviewer: B

Responsibility: Mgr. et Mgr. Hana Odstrčilová