#include "funcs.hpp" double f(double x) { return 100*std::exp(-10*x); } double u(double x) { return 1. - (1. - std::exp(-10.))*x - std::exp(-10.*x); } void build_g_vec(int n_steps, arma::vec& g_vec) { g_vec.resize(n_steps-1); double step_size = 1./ (double) n_steps; for (int i=0; i < n_steps-1; i++) { g_vec(i) = step_size*step_size*f((i+1)*step_size); } } void build_arrays( int n_steps, arma::vec& sub_diag, arma::vec& main_diag, arma::vec& sup_diag, arma::vec& g_vec ) { sub_diag.resize(n_steps-2); main_diag.resize(n_steps-1); sup_diag.resize(n_steps-2); sub_diag.fill(-1); main_diag.fill(2); sup_diag.fill(-1); build_g_vec(n_steps, g_vec); }