Problem 3’s statement says that “Your implementation should be memory conserving. For example, the tridiagonal matrix can be stored in 3 one-dimensional
arrays, or another similar structure.”
Does this imply we need to implement a set of (tridiagonal) matrix functions from scratch (e.g., a matrix class and a vector class, supporting additions, multiplications, etc.), or is it allowed to use an existing library, such as Eigen?
Using a library such as Eigen has many advantages such as clarity of code (very meaningful type names) and high performance while also being lightweight and easy to install (header-only library for C++).
(Obviously I would only use the storage aspects of Eigen, and not the built-in numerical solvers.)