sokobo
Loading...
Searching...
No Matches
numerical_methods.h
1#pragma once
2#include <vector>
3#include <functional>
4#include "matrix.h"
5#include "polynomial.h"
6
8public:
9 // Root finding
10 static double bisectionMethod(std::function<double(double)> f, double a, double b, double tolerance = 1e-10);
11 static double newtonRaphson(std::function<double(double)> f, std::function<double(double)> df,
12 double x0, double tolerance = 1e-10);
13 static double secantMethod(std::function<double(double)> f,
14 double x0,
15 double x1,
16 double tolerance = 1e-10);
17 static std::vector<double> polynomialRoots(const Polynomial& p);
18
19 // Linear systems
20 static std::vector<double> gaussianElimination(Matrix<double> A, std::vector<double> b);
21 static std::vector<double> LUDecomposition(const Matrix<double>& A, const std::vector<double>& b);
22 static std::vector<double> jacobiMethod(const Matrix<double>& A, const std::vector<double>& b,
23 double tolerance = 1e-10, int maxIterations = 1000);
24 static std::vector<double> gaussSeidelMethod(const Matrix<double>& A, const std::vector<double>& b,
25 double tolerance = 1e-10, int maxIterations = 1000);
26
27 // Interpolation
28 static Polynomial lagrangeInterpolation(const std::vector<double>& x, const std::vector<double>& y);
29 static Polynomial newtonInterpolation(const std::vector<double>& x, const std::vector<double>& y);
30 static double splineInterpolation(const std::vector<double>& x, const std::vector<double>& y, double xi);
31
32 // Optimization
33 static double goldenSectionSearch(std::function<double(double)> f, double a, double b, double tolerance = 1e-10);
34 static std::vector<double> gradientDescent(std::function<double(const std::vector<double>&)> f,
35 std::function<std::vector<double>(const std::vector<double>&)> grad,
36 std::vector<double> x0, double learningRate = 0.01,
37 double tolerance = 1e-10);
38 static std::vector<double> newtonOptimization(std::function<double(const std::vector<double>&)> f,
39 std::function<std::vector<double>(const std::vector<double>&)> grad,
40 std::function<Matrix<double>(const std::vector<double>&)> hessian,
41 std::vector<double> x0, double tolerance = 1e-10);
42
43 // Statistical methods
44 static double mean(const std::vector<double>& data);
45 static double variance(const std::vector<double>& data);
46 static double standardDeviation(const std::vector<double>& data);
47 static double correlation(const std::vector<double>& x, const std::vector<double>& y);
48 static std::pair<double, double> linearRegression(const std::vector<double>& x, const std::vector<double>& y);
49
50 // Special functions
51 static double gamma(double x);
52 static double beta(double a, double b);
53 static double erf(double x);
54 static double besselJ(int n, double x);
55 static double legendreP(int n, double x);
56 static double hermiteH(int n, double x);
57};
A templated matrix class supporting various linear algebra operations.
Definition: matrix.h:23