newton Interface

public interface newton

Find root of a function using Newton’s or secant method.

Parameters:

  • f : function to find root of
  • x0 : initial estimate of root
  • fprime: derivative of f, optional
  • xtol : absolute tolerance, optional, default 2e-12
  • rtol : relative tolerance, optional, default 1e-15
  • maxiter : maximum number of iterations, optional, default 100

Returns:

  • x : root of f in [a, b]
  • info : solver_info_t structure, optional

The function f must be continuous, x0 should be close enough to the root.

If the solver converges, info%converged is true and info%iterations is the number of iterations required. If the solver does not converge, info%converged is false and info%iterations is the maximum number of iterations.

The convergence criterion is abs(x - xa) < xtol + rtol*abs(x) where xa is the left endpoint of the current interval.


Module Procedures

private function newton_real64(f, x0, fprime, xtol, rtol, maxiter, info) result(x)

Impementation of bisect for real64

Arguments

Type IntentOptional Attributes Name
procedure(func64) :: f

function to find root of

real(kind=rkind), intent(in) :: x0

initial estimate of root

procedure(func64), optional :: fprime

function to find root of

real(kind=rkind), intent(in), optional :: xtol

absolute tolerance

real(kind=rkind), intent(in), optional :: rtol

relative tolerance

integer, intent(in), optional :: maxiter

maximum number of iterations

type(solver_info_t), intent(out), optional :: info

solver info

Return Value real(kind=rkind)