2023-01-24 18:57:18 +01:00
# ifndef MLPP_NUMERICAL_ANALYSIS_H
# define MLPP_NUMERICAL_ANALYSIS_H
2023-01-23 21:13:26 +01:00
//
// NumericalAnalysis.hpp
//
//
# include <string>
2023-01-24 19:00:54 +01:00
# include <vector>
2023-01-23 21:13:26 +01:00
2023-01-24 19:20:18 +01:00
2023-01-25 00:54:50 +01:00
class MLPPNumericalAnalysis {
2023-01-24 19:00:54 +01:00
public :
/* A numerical method for derivatives is used. This may be subject to change,
as an analytical method for calculating derivatives will most likely be used in
the future .
*/
double numDiff ( double ( * function ) ( double ) , double x ) ;
double numDiff_2 ( double ( * function ) ( double ) , double x ) ;
double numDiff_3 ( double ( * function ) ( double ) , double x ) ;
double constantApproximation ( double ( * function ) ( double ) , double c ) ;
double linearApproximation ( double ( * function ) ( double ) , double c , double x ) ;
double quadraticApproximation ( double ( * function ) ( double ) , double c , double x ) ;
double cubicApproximation ( double ( * function ) ( double ) , double c , double x ) ;
double numDiff ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > x , int axis ) ;
double numDiff_2 ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > x , int axis1 , int axis2 ) ;
double numDiff_3 ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > x , int axis1 , int axis2 , int axis3 ) ;
double newtonRaphsonMethod ( double ( * function ) ( double ) , double x_0 , double epoch_num ) ;
double halleyMethod ( double ( * function ) ( double ) , double x_0 , double epoch_num ) ;
double invQuadraticInterpolation ( double ( * function ) ( double ) , std : : vector < double > x_0 , double epoch_num ) ;
double eulerianMethod ( double ( * derivative ) ( double ) , std : : vector < double > q_0 , double p , double h ) ; // Euler's method for solving diffrential equations.
double eulerianMethod ( double ( * derivative ) ( std : : vector < double > ) , std : : vector < double > q_0 , double p , double h ) ; // Euler's method for solving diffrential equations.
double growthMethod ( double C , double k , double t ) ; // General growth-based diffrential equations can be solved by seperation of variables.
std : : vector < double > jacobian ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > x ) ; // Indeed, for functions with scalar outputs the Jacobians will be vectors.
std : : vector < std : : vector < double > > hessian ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > x ) ;
std : : vector < std : : vector < std : : vector < double > > > thirdOrderTensor ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > x ) ;
double constantApproximation ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > c ) ;
double linearApproximation ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > c , std : : vector < double > x ) ;
double quadraticApproximation ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > c , std : : vector < double > x ) ;
double cubicApproximation ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > c , std : : vector < double > x ) ;
double laplacian ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > x ) ; // laplacian
std : : string secondPartialDerivativeTest ( double ( * function ) ( std : : vector < double > ) , std : : vector < double > x ) ;
} ;
2023-01-24 19:20:18 +01:00
2023-01-23 21:13:26 +01:00
# endif /* NumericalAnalysis_hpp */