|
| NewtonMD (int N=1, LinAlgUtils::Method linMethod=LinAlgUtils::ColQR) |
|
virtual | ~NewtonMD () |
|
int | getN () const |
|
void | setN (int n) |
|
LinAlgUtils::Method | getLinMethod () const |
|
void | setLinMethod (LinAlgUtils::Method linMethod) |
|
template<class OBJ , typename FUNC , typename JACOB > |
VectorD | solve (OBJ *object, FUNC G, const std::vector< double > &funcParameters, VectorD X0, JACOB J_G=0, const double absTolerance=1.e-4, const double relTolerance=1.e-4, const size_t maxIteration=50) |
|
VectorD | iterate (const VectorD &X0, const VectorD &G_X0, const MatrixD &J_G_X0) |
| Produces a new iteration by solving the linear system J^G(X0) * (X0 - X1) = G(X0) and returns X1. More...
|
|
Newton method generalized to any dimension N: Solves the system G(X) = 0, where G is a regular but non-linear application \( R^N \rightarrow R^N \) .
The class can be used either through templates with the solve method providing G and the Jacobian matrix functions pointers, or manually through instantiating an object NewtonMD and iterating the method iterate by giving G(X) and the Jacobian matrix at each step, to avoid using functions.
For linear G (matrices), use the LinearSystem class.