|
Algorithms_in_C++
1.0.0
Set of algorithms implemented in C++.
|
Go to the documentation of this file.
9 #ifndef NUMERICAL_METHODS_QR_DECOMPOSE_H_
10 #define NUMERICAL_METHODS_QR_DECOMPOSE_H_
36 const char separator =
' ';
39 for (
size_t row = 0; row < v.size(); row++) {
40 for (
size_t col = 0; col < v[row].size(); col++)
55 const char separator =
' ';
58 for (
size_t row = 0; row < v.size(); row++) {
103 template <
typename T>
111 std::cerr <<
"[" << __func__ <<
"] Possible division by zero\n";
115 double scalar = num / deno;
145 template <
typename T>
157 for (
int i = 0; i < COLUMNS; i++) {
167 for (j = 0; j < ROWS; j++) {
168 tmp_vector[j] = A[j][i];
169 col_vector[j] = A[j][i];
171 for (j = 0; j < i; j++) {
172 for (
int k = 0;
k < ROWS;
k++) {
173 col_vector2[
k] = Q[0][
k][j];
175 col_vector2 =
vector_proj(col_vector, col_vector2);
176 tmp_vector -= col_vector2;
185 for (j = 0; j < ROWS; j++) Q[0][j][i] = tmp_vector[j] / mag;
192 for (
int kk = 0; kk < ROWS; kk++) {
193 col_vector[kk] = Q[0][kk][i];
200 for (
int k = i;
k < COLUMNS;
k++) {
201 for (
int kk = 0; kk < ROWS; kk++) {
202 col_vector2[kk] = A[kk][
k];
204 R[0][i][
k] = (col_vector * col_vector2).sum();
210 #endif // NUMERICAL_METHODS_QR_DECOMPOSE_H_
bool check_termination(long double delta)
Definition: durand_kerner_roots.cpp:91
void save_exact_solution(const double &X0, const double &X_MAX, const double &step_size, const std::valarray< double > &Y0)
Definition: ode_midpoint_euler.cpp:156
double Sqrt(double a)
Definition: sqrt_double.cpp:16
unsigned int lcm(unsigned int x, unsigned int y)
Definition: least_common_multiple.cpp:43
void tests()
Definition: least_common_multiple.cpp:48
std::vector< int > prime_numbers
Definition: prime_factorization.cpp:16
int main()
Definition: primes_up_to_billion.cpp:26
double semi_implicit_euler(double dx, double x0, double x_max, std::valarray< double > *y, bool save_to_file=false)
Compute approximation using the semi-implicit-Euler method in the given limits.
Definition: ode_semi_implicit_euler.cpp:103
std::ostream & operator<<(std::ostream &out, std::vector< std::vector< T >> const &v)
Definition: lu_decompose.cpp:75
#define MAX_ITERATIONS
Maximum number of iterations to check.
Definition: false_position.cpp:24
friend std::istream & operator>>(std::istream &input, stats_computer2 &stat)
Definition: realtime_stats.cpp:97
#define MAX_ITERATIONS
Maximum number of iterations to check.
Definition: newton_raphson_method.cpp:21
#define EPSILON
solution accuracy limit
Definition: golden_search_extrema.cpp:17
void test3()
Test function to find maxima for the function in the interval Expected result: .
Definition: brent_method_extrema.cpp:188
void semi_implicit_euler_step(const double dx, const double &x, std::valarray< double > *y, std::valarray< double > *dy)
Compute next step approximation using the semi-implicit-Euler method.
Definition: ode_semi_implicit_euler.cpp:82
std::vector< int > primes(int max)
Definition: prime_numbers.cpp:12
bool miller_rabin_primality_test(T num, T repeats)
Definition: miller_rabin.cpp:125
uint64_t f[MAX]
Definition: fibonacci_fast.cpp:27
std::vector< T > operator+(std::vector< T > const &A, std::vector< T > const &B)
Definition: ordinary_least_squares_regressor.cpp:196
static double eq(double i)
Definition: newton_raphson_method.cpp:29
int main()
Definition: brent_method_extrema.cpp:204
#define EPSILON
system accuracy limit
Definition: brent_method_extrema.cpp:23
static double eq_der(double i)
Definition: newton_raphson_method.cpp:39
void exact_solution(const double &x, std::valarray< double > *y)
Exact solution of the problem. Used for solution comparison.
Definition: ode_forward_euler.cpp:67
int multiply(int x, int res[], int res_size)
Definition: power_for_huge_numbers.cpp:25
int main(int argc, char *argv[])
Definition: ode_forward_euler.cpp:188
ll ans(ll n)
Definition: matrix_exponentiation.cpp:94
int main()
Definition: sieve_of_eratosthenes.cpp:59
void print(uint32_t N)
Definition: sieve_of_eratosthenes.cpp:40
const char * complex_str(const std::complex< double > &x)
Definition: durand_kerner_roots.cpp:76
void test3()
Test function to find maxima for the function in the interval Expected result: .
Definition: golden_search_extrema.cpp:123
double get_minima(const std::function< double(double)> &f, double lim_a, double lim_b)
Get the real root of a function in the given interval.
Definition: brent_method_extrema.cpp:35
int sgn(T val)
Definition: bisection_method.cpp:32
double std() const
Definition: realtime_stats.cpp:48
void midpoint_euler_step(const double dx, const double &x, std::valarray< double > *y, std::valarray< double > *dy)
Compute next step approximation using the midpoint-Euler method.
Definition: ode_midpoint_euler.cpp:85
std::vector< std::pair< int, int > > factors
Definition: prime_factorization.cpp:19
bool is_square(std::vector< std::vector< T >> const &A)
Definition: ordinary_least_squares_regressor.cpp:55
int main()
Definition: prime_factorization.cpp:62
std::vector< T > reverse_binary(T num)
Definition: miller_rabin.cpp:19
void power(int x, int n)
Definition: power_for_huge_numbers.cpp:56
Functions to compute QR decomposition of any rectangular matrix.
std::vector< std::vector< T > > operator*(std::vector< std::vector< T >> const &A, std::vector< std::vector< T >> const &B)
Definition: ordinary_least_squares_regressor.cpp:72
void test1()
Test function to find minima for the function in the interval Expected result = 2.
Definition: golden_search_extrema.cpp:78
int main()
Definition: prime_numbers.cpp:26
void forward_euler_step(const double dx, const double &x, std::valarray< double > *y, std::valarray< double > *dy)
Compute next step approximation using the forward-Euler method.
Definition: ode_forward_euler.cpp:86
int main()
Definition: modular_inverse_fermat_little_theorem.cpp:84
std::pair< uint32_t, double > durand_kerner_algo(const std::valarray< double > &coeffs, std::valarray< std::complex< double >> *roots, bool write_log=false)
Definition: durand_kerner_roots.cpp:109
std::ostream & operator<<(std::ostream &out, std::vector< std::vector< T >> const &v)
Definition: ordinary_least_squares_regressor.cpp:20
void test()
Definition: sum_of_digits.cpp:58
void test2()
Definition: sum_of_digits.cpp:49
void save_exact_solution(const double &X0, const double &X_MAX, const double &step_size, const std::valarray< double > &Y0)
Definition: ode_forward_euler.cpp:152
void init()
Definition: sieve_of_eratosthenes.cpp:52
std::valarray< T > vector_proj(const std::valarray< T > &a, const std::valarray< T > &b)
Definition: qr_decompose.h:104
int main()
Definition: false_position.cpp:39
double vector_mag(const std::valarray< T > &a)
Definition: qr_decompose.h:92
ll k
Definition: matrix_exponentiation.cpp:48
double variance() const
Definition: realtime_stats.cpp:89
unsigned int gcd(unsigned int x, unsigned int y)
Definition: least_common_multiple.cpp:16
int main()
Definition: sqrt_double.cpp:42
void sieve(uint32_t N)
Definition: sieve_of_eratosthenes.cpp:25
T modular_exponentiation(T base, const std::vector< T > &rev_binary_exponent, T mod)
Definition: miller_rabin.cpp:43
std::complex< double > poly_function(const std::valarray< double > &coeffs, std::complex< double > x)
Definition: durand_kerner_roots.cpp:53
int main(int argc, char **argv)
Definition: lu_decompose.cpp:91
int main()
Definition: ordinary_least_squares_regressor.cpp:358
void test1()
Definition: durand_kerner_roots.cpp:207
std::vector< float > predict_OLS_regressor(std::vector< std::vector< T >> const &X, std::vector< float > const &beta)
Definition: ordinary_least_squares_regressor.cpp:340
int main()
Definition: gaussian_elimination.cpp:9
#define ACCURACY
Definition: durand_kerner_roots.cpp:45
double mean() const
Definition: realtime_stats.cpp:42
Definition: realtime_stats.cpp:72
std::ostream & operator<<(std::ostream &out, std::valarray< std::valarray< T >> const &v)
Definition: qr_decompose.h:33
double forward_euler(double dx, double x0, double x_max, std::valarray< double > *y, bool save_to_file=false)
Compute approximation using the forward-Euler method in the given limits.
Definition: ode_forward_euler.cpp:102
int main(int argc, char **argv)
Definition: realtime_stats.cpp:158
int sgn(T val)
Definition: false_position.cpp:34
vector< ll > a
Definition: matrix_exponentiation.cpp:53
void problem(const double &x, std::valarray< double > *y, std::valarray< double > *dy)
Problem statement for a system with first-order differential equations. Updates the system differenti...
Definition: ode_semi_implicit_euler.cpp:53
void test_function(const float *test_data, const int number_of_samples)
Definition: realtime_stats.cpp:118
void SieveOfEratosthenes(int N)
Definition: prime_factorization.cpp:23
bool miller_test(T d, T num)
Definition: miller_rabin.cpp:73
int main()
Definition: least_common_multiple.cpp:67
#define EPSILON
system accuracy limit
Definition: newton_raphson_method.cpp:20
void problem(const double &x, std::valarray< double > *y, std::valarray< double > *dy)
Problem statement for a system with first-order differential equations. Updates the system differenti...
Definition: ode_forward_euler.cpp:54
int data[MAX]
test data
Definition: hash_search.cpp:24
#define MAX
Definition: sieve_of_eratosthenes.cpp:16
std::vector< float > fit_OLS_regressor(std::vector< std::vector< T >> const &X, std::vector< T > const &Y)
Definition: ordinary_least_squares_regressor.cpp:310
std::vector< T > operator-(std::vector< T > const &A, std::vector< T > const &B)
Definition: ordinary_least_squares_regressor.cpp:175
int64_t binExpo(int64_t a, int64_t b, int64_t m)
Definition: modular_inverse_fermat_little_theorem.cpp:52
std::vector< std::vector< float > > get_inverse(std::vector< std::vector< T >> const &A)
Definition: ordinary_least_squares_regressor.cpp:218
void new_val(T x)
Definition: realtime_stats.cpp:32
void test2()
Test function to find root for the function in the interval Expected result: .
Definition: brent_method_extrema.cpp:165
double vector_dot(const std::valarray< T > &a, const std::valarray< T > &b)
Definition: qr_decompose.h:76
void problem(const double &x, std::valarray< double > *y, std::valarray< double > *dy)
Problem statement for a system with first-order differential equations. Updates the system differenti...
Definition: ode_midpoint_euler.cpp:53
void new_val(T x)
Definition: realtime_stats.cpp:77
double variance() const
Definition: realtime_stats.cpp:45
int main()
Definition: newton_raphson_method.cpp:44
int sum_of_digits(int num)
Definition: sum_of_digits.cpp:23
double midpoint_euler(double dx, double x0, double x_max, std::valarray< double > *y, bool save_to_file=false)
Compute approximation using the midpoint-Euler method in the given limits.
Definition: ode_midpoint_euler.cpp:107
int main()
Definition: number_of_positive_divisors.cpp:62
int main()
Definition: miller_rabin.cpp:183
int main()
Definition: power_for_huge_numbers.cpp:82
void prime_factorization(int num)
Definition: prime_factorization.cpp:40
int main()
Definition: sum_of_digits.cpp:68
Definition: realtime_stats.cpp:27
void test2()
Test function to find maxima for the function in the interval Expected result: .
Definition: golden_search_extrema.cpp:100
double std() const
Definition: realtime_stats.cpp:92
int main()
Definition: golden_search_extrema.cpp:139
bool isprime[MAX]
Definition: sieve_of_eratosthenes.cpp:19
void test1()
Definition: sum_of_digits.cpp:40
void qr_decompose(const std::valarray< std::valarray< T >> &A, std::valarray< std::valarray< T >> *Q, std::valarray< std::valarray< T >> *R)
Definition: qr_decompose.h:146
int main(int argc, char *argv[])
Definition: ode_semi_implicit_euler.cpp:189
static double eq(double i)
Definition: false_position.cpp:28
void test1()
Test function to find root for the function in the interval Expected result = 2.
Definition: brent_method_extrema.cpp:143
std::string add(std::string a, std::string b)
Definition: string_fibonacci.cpp:24
void save_exact_solution(const double &X0, const double &X_MAX, const double &step_size, const std::valarray< double > &Y0)
Definition: ode_semi_implicit_euler.cpp:153
#define MAX_ITERATIONS
Maximum number of iterations to check.
Definition: bisection_method.cpp:22
void exact_solution(const double &x, std::valarray< double > *y)
Exact solution of the problem. Used for solution comparison.
Definition: ode_semi_implicit_euler.cpp:66
int main()
Definition: string_fibonacci.cpp:81
int number_of_positive_divisors(int n)
Definition: number_of_positive_divisors.cpp:34
static double eq(double i)
Definition: bisection_method.cpp:26
double get_minima(const std::function< double(double)> &f, double lim_a, double lim_b)
Get the minima of a function in the given interval. To get the maxima, simply negate the function....
Definition: golden_search_extrema.cpp:29
void fib_Accurate(uint64_t n)
Definition: string_fibonacci.cpp:68
void Sieve(int64_t n)
Definition: primes_up_to_billion.cpp:13
double mean() const
Definition: realtime_stats.cpp:86
bool isPrime(int64_t m)
Definition: modular_inverse_fermat_little_theorem.cpp:68
void test2()
Definition: durand_kerner_roots.cpp:242
void exact_solution(const double &x, std::valarray< double > *y)
Exact solution of the problem. Used for solution comparison.
Definition: ode_midpoint_euler.cpp:66
int lu_decomposition(const std::vector< std::vector< double >> &A, std::vector< std::vector< double >> *L, std::vector< std::vector< double >> *U)
Definition: lu_decompose.cpp:22
int main()
Definition: bisection_method.cpp:37
std::vector< float > operator/(std::vector< T > const &A, float const scalar)
Definition: ordinary_least_squares_regressor.cpp:166
#define MAX
Definition: power_for_huge_numbers.cpp:10
friend std::istream & operator>>(std::istream &input, stats_computer1 &stat)
Definition: realtime_stats.cpp:53
int main(int argc, char *argv[])
Definition: ode_midpoint_euler.cpp:192
void tests()
Definition: miller_rabin.cpp:157
char prime[100000000]
Definition: primes_up_to_billion.cpp:10
bool isprime[1000006]
Definition: prime_factorization.cpp:13
std::vector< std::vector< T > > get_transpose(std::vector< std::vector< T >> const &A)
Definition: ordinary_least_squares_regressor.cpp:289