Přístupnostní navigace
E-application
Search Search Close
Bachelor's Thesis
Author of thesis: Bc. Vít Pavlík
Acad. year: 2025/2026
Supervisor: Dr. Ing. Petr Peringer
Reviewer: Ing. Aleš Smrčka, Ph.D.
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.
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)
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
Language of thesis
Czech
Faculty
Fakulta informačních technologií
Department
Department of Intelligent Systems
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 reportDr. 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.
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.
Literaturu si student vyhledával zcela samostatně.
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ě.
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.
-
Grade proposed by supervisor: C
Reviewer’s reportIng. 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 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.
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í.
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.
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.
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í.
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.
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.
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.
Grade proposed by reviewer: B
Responsibility: Mgr. et Mgr. Hana Odstrčilová