Added newton's method

This commit is contained in:
Your Name 2011-02-09 14:31:45 -05:00
parent e5b0be92af
commit bf1e581ce9
2 changed files with 55 additions and 0 deletions

28
src/newton.hpp Normal file
View file

@ -0,0 +1,28 @@
#ifndef _COSMOTOOL_NEWTON_HPP
#define _COSMOTOOL_NEWTON_HPP
namespace CosmoTool
{
template<typename T, typename FunT>
T newtonSolver(T x0, FunT function, double residual = 1e-3)
{
T x, xold = x0;
T f_x = function.eval(x0);
T df_x = function.derivative(x0);
x = xold - f_x/df_x;
while (abs(xold-x) > residual)
{
xold = x;
f_x = function.eval(x);
df_x = function.derivative(x);
x = xold - f_x/df_x;
}
return x;
}
};
#endif