Open source Interactive numerical computing environment
This repository contains necessary packages to symbolic computation, matrix algebra etc., also offer data visualisation - graphs.
For symbolic computation is used SymbolicC++
library, for data visualisation and
plotting is used Gnuplot-iostream
.
Matrices algebra
Symbolic differential computation
Graphical solutions and visualisations
Mathematical function properties analysis
My C++ implementation of utilities based on symbolic computation.
Object Point represent point in n-dimensional space.
OneDimensional::Point myPoint(2);
TwoDimensional::Point myPoint(1.5, 5);
ThreeDimensional::Point myPoint(1.5, 2, 5);
- Point value
myPoint[i];
return point value ini
dimension. By callmyPoint.matrix;
are possible matrices operations, return1 x n
matrix.
Object Function represent mathematical function by symbolic variables.
TwoDimensional::Function myFunction((x - 2)*(x + 5) + 3*y);
-
Function value
myFunction.value(Point);
return function value of function at givenPoint
. -
Function gradient
myFunction.gradient(); myFunction.gradient(Point);
return matrixn x 1
of function's first derivatives - gradient. -
Function hessian
myFunction.hessian(); myFunction.hessian(Point);
return matrixn x n
of function's seconds derivatives - hessian. -
Function character of stationary/inflection point
myFunction.character(Point);
returnStationaryPoin::Minimum = 0
if Point is a locally minimum of function, returnStationaryPoin::Maximum = 1
if Point is a locally maximum, orStationaryPoin::Saddle = 2
if Point is saddle point of function.
Object Plot offer graphical visualisation and data plotting.
Plot::function(myFunction.getSymbolic());
I have develop this platform to implement Numerical Optimization comparative and gradient methods used for finding locally extremes of functions.
- Davidon's search
- Golden selection search
- Nelder & Mead method
- Newton & Raphson method
- Levenberg & Marquardt method
TwoDimensional::Function myFunction((x - 2)*(x + 5) + y*y);
TwoDimensional::Point startPoint(1.5, 5);
Optimization::NelderMead myMethod(myFunction, startPoint);
myMethod.findMinimum();