| MADNESS
    version 0.9
    | 
|   | 
| Files | |
| file | gmres.h | 
| Defines a general operator interface and a templated GMRES solver for solving linear equations. | |
| file | solvers.h | 
| Defines interfaces for optimization and non-linear equation solvers. | |
| Classes | |
| struct | madness::SolverTargetInterface | 
| The interface to be provided by targets for non-linear equation solver.  More... | |
| struct | madness::OptimizationTargetInterface | 
| The interface to be provided by functions to be optimized.  More... | |
| struct | madness::SolverInterface | 
| The interface to be provided by solvers ... NOT USED ANYWHERE?  More... | |
| struct | madness::OptimizerInterface | 
| The interface to be provided by optimizers.  More... | |
| class | madness::SteepestDescent | 
| Unconstrained minimization via steepest descent.  More... | |
| class | madness::QuasiNewton | 
| Optimization via quasi-Newton (BFGS or SR1 update)  More... | |
| Functions | |
| template<typename T > | |
| Tensor< T > | madness::KAIN (const Tensor< T > &Q, double rcond=1e-12) | 
| Solves non-linear equation using KAIN (returns coefficients to compute next vector)  More... | |
| Tensor<T> madness::KAIN | ( | const Tensor< T > & | Q, | 
| double | rcond = 1e-12 | ||
| ) | 
Solves non-linear equation using KAIN (returns coefficients to compute next vector)
The Krylov-accelerated inexact-Newton method employs directional derivatives to estimate the Jacobian in the subspace and separately computes updates in the subspace and its complement.
We wish to solve the non-linear equations  where
 where  and
 and  are vectors of the same dimension (e.g., consider both being MADNESS functions).
 are vectors of the same dimension (e.g., consider both being MADNESS functions).
Define the following matrices and vector (with  and
 and  denoting previous iterations in the Krylov subspace and
 denoting previous iterations in the Krylov subspace and  the current iteration):
 the current iteration): 
 
 The subspace equation is of dimension  (assuming iterations are indexed from zero) and is given by
 (assuming iterations are indexed from zero) and is given by 
![\[ A c = b \]](form_254.png) 
The interior and exterior updates may be combined into one simple expression as follows. First, define an additional element of the solution vector
![\[ c_m = 1 - \sum_{i<m} c_i \]](form_255.png) 
and then the new vector (guess for next iteration) is given by
![\[ x_{m+1} = \sum_{i \le m}{c_i ( x_i - f_i)} \]](form_256.png) 
To employ the solver, each iteration
 that is the inner product between solution vectors (
 that is the inner product between solution vectors (  ) and residuals (
) and residuals (  ).
). and from these compute the next solution vector
 and from these compute the next solution vector| [in] | Q | The matrix of inner products between subspace vectors and residuals. | 
| [in] | rcond | Threshold for discarding small singular values in the subspace equations. | 
References b(), c, madness::gelss(), L, m, and std::tr1::T().
Referenced by madness::check_linear_dependence(), madness::NonlinearSolverND< NDIM >::update(), madness::XNonlinearSolver< T, C, Alloc >::update(), madness::SubspaceK< T, NDIM >::update_subspace(), madness::Subspace< T, NDIM >::update_subspace(), and madness::SCF::update_subspace().
 1.8.8
 1.8.8