root_scalar Interface

public interface root_scalar

Find root of a function using given method

Parameters:

  • f : function to find root of
  • x0 : initial estimate of root, optional
  • 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
  • method : method to use, optional, default ‘bisect’

Returns:

  • x : root of f in [a, b], or close to x0
  • 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 root_scalar_real64(f, x0, a, b, fprime, xtol, rtol, maxiter, method, info) result(x)

Find root of a function using given method

Arguments

Type IntentOptional Attributes Name
procedure(func64) :: f

function to find root of

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

initial estimate of root

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

interval to search for root

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

interval to search for 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

character(len=*), intent(in), optional :: method

method to use

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

solver info

Return Value real(kind=rkind)