Implement a module for approximating integrals using composite numerical integration formulas of the form
where
Implement a module for solving Ordinary Differential Equations (ODEs) of the form
where
CSV
file with header columns t, y1, y2, ..., yN
.The integration of third-party libraries is highly encouraged, such as:
Boost
(e.g., the modules Histogram
, JSON
, Math
, Odeint
).Eigen
, for linear algebra classes (vectors, matrices, linear solvers).GetPot
, for parsing comand line arguments and configuration files.GNU GSL
, for a wide range of mathematical routines.muParserX
, to parse string expressions such as "sin(pi * x) * exp(x)"
as mathematical functions.or any other library of your choice, and showcase their synergy with your code.
Discuss considerations and challenges in using third-party libraries.
Organize your implementation into subfolders and files with meaningful names.
Ensure a clear separation between function declarations and definitions by placing them in different files whenever possible.
The 2 modules implemented should be part of the same framework, e.g., by sharing namespaces, styling, and common utilities. However, each of them should be compilable as a standalone shared library, allowing independent use.
Before submission, ensure your code's compatibility with various compilers by testing it, e.g. on GodBolt, and enabling the following compilation flags:
-std=c++17 -Wall -Wextra -Wpendantic -Werror
README
file that:
Makefile
or CMake
as build tools.Homework_02_Surname1_Surname2.ext
) containing all source code, the README
, and any other relevant files or third-party libraries (please comply to their licences).