Original title:
Knihovna numerických integračních metod v C++
Authors:
Pavlík, Vít ; Smrčka, Aleš (referee) ; Peringer, Petr (advisor) Document type: Bachelor's theses
Year:
2026
Language:
cze Publisher:
Vysoké učení technické v Brně. Fakulta informačních technologií Abstract:
[cze][eng]
Tato bakalářská práce se zabývá návrhem a implementací softwarové knihovny v jazyce C++ pro numerické řešení obyčejných diferenciálních rovnic (ODR). Cílem práce je vytvořit srozumitelnou a kompaktní knihovnu s názvem Integrify, která primárně poslouží ke vzdělávacím účelům a pomůže studentům lépe pochopit problematiku spojité simulace a numerických metod. Na rozdíl od existujících vysoce optimalizovaných řešení klade Integrify důraz na čitelnost zdrojového kódu a jeho snadné použití pro začátečníky. Knihovna implementuje sadu explicitních i implicitních metod, které jsou vhodné mimo jiné pro řešení tuhých (stiff) systémů. Návrh knihovny využívá prvky moderních standardů C++20 a C++23, zejména moduly pro správu rozhraní a koncepty (Concepts) pro typovou bezpečnost. Architektura je postavena na návrhovém vzoru Strategie, což zajišťuje jednotné rozhraní bez výkonnostní režie spojené s virtuálními funkcemi. K řízení simulačního kroku dochází manuálně přes metodu .do_step(), což uživateli dává plnou kontrolu nad simulační smyčkou a možnostmi experimentování s velikostí kroku. Implicitní metody v knihovně využívají automatickou numerickou aproximaci jakobiánu pomocí dopředné diference, čímž uživatele odstiňují od nutnosti dodávat její složitý analytický předpis. Implementace rovněž plně podporuje šablonové datové typy pro flexibilní volbu výpočetní přesnosti bez zásahu do algoritmů. Funkčnost, přesnost a stabilita vytvořených metod bude následně ověřena a zhodnocena na sadě reprezentativních testovacích úloh.
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:
Adams-Bashforth; continuous simulation; educational software; Euler method; initial value problem; modern C++; numerical integration; numerical methods; ordinary differential equations; Runge-Kutta; software library; stiff systems; trapezoidal rule; Adams-Basforth; C++; Eulerova metoda; lichoběžníková metoda; numerická integrace; numerické metody; obyčejné diferenciální rovnice; počáteční úloha; Runge-Kutta; softwarová knihovna; spojitá simulace; tuhé systémy; výukový software
Institution: Brno University of Technology
(web)
Document availability information: Fulltext is available in the Brno University of Technology Digital Library. Original record: http://hdl.handle.net/11012/258874