Project-1/src/funcs.cpp
2023-09-12 17:34:40 +02:00

39 lines
740 B
C++

#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);
}