roots Module Reference
root finding subroutines More...
Data Types | |
| type | roots_typ | 
| basic type for root finding functions  More... | |
Functions/Subroutines | |
| pure subroutine, public | initroots (this, x1, x2, f1, f2, dxacc, maxiter) | 
| character(len=64) function, public | geterrormessage (error) | 
| subroutine | getroot_generic (this, Stepper, func, x1, x2, dxacc, maxiter, plist, xm) | 
| subroutine, public | getroot_newton (funcd, x1, x2, root, error, plist, xm, iterations) | 
| subroutine, public | getroot_regulafalsi (func, x1, x2, root, error, plist, xm, iterations) | 
| subroutine, public | getroot_pegasus (func, x1, x2, root, error, plist, xm, iterations) | 
| subroutine, public | getroot_king (func, x1, x2, root, error, plist, xm, iterations) | 
| subroutine, public | getroot_andersonbjoerk (func, x1, x2, root, error, plist, xm, iterations) | 
| subroutine, public | getroot_ridder (func, x1, x2, root, error, plist, xm, iterations) | 
| subroutine, public | getroot_brentdekker (func, x1, x2, root, error, plist, xm, iterations) | 
| subroutine, public | getroot_bisection (func, x1, x2, root, error, plist, xm, iterations) | 
| pure subroutine | updatebounds_bisection (this) | 
| pure subroutine | step_bisection (this) | 
| pure subroutine | step_newton (this) | 
| pure subroutine | step_regulafalsi (this) | 
| pure subroutine | step_pegasus (this) | 
| pure subroutine | step_king (this) | 
| pure subroutine | step_andersonbjoerk (this) | 
| pure subroutine | step_ridder (this) | 
| pure subroutine | step_brentdekker (this) | 
| pure subroutine | step_secantmethod (this) | 
| pure subroutine | saveinversequadraticinterpolation (a, b, c, fa, fb, fc, db_numer, db_denom) | 
| pure subroutine | step_arithmeticmean (this) | 
| pure real function | arithmeticmean (a, b) | 
| pure real function | linearinterpolation (x1, x2, f1, f2) | 
| pure subroutine | testconvergence (this) | 
Variables | |
| integer, parameter, public | default_max_iterations = 1000 | 
| real, parameter, public | default_accuracy = 4*EPSILON(DEFAULT_ACCURACY) | 
| character(len=64), dimension(0:4), parameter | error_message = (/ "unknown error ", "root not bracketed ", "iteration exceeds maximum ", "requested accuracy smaller than machine precission ", "upper limit for iterations should be larger than 1 " /) | 
Detailed Description
root finding subroutines
- Newton's method combined with bisection, for ill-posed problems
 - Regula falsi
 - Bisection
 - Pegasus
 - King
 - Anderson Bjoerk
 - Ridder
 - Brent Dekker (default)
 
The algorithms can be found in standard textbooks on numerical analysis. See e. g. [41] and [13] and references therein.
Function/Subroutine Documentation
◆ arithmeticmean()
      
  | 
  private | 
◆ geterrormessage()
| character(len=64) function, public roots::geterrormessage | ( | integer, intent(in) | error | ) | 
◆ getroot_andersonbjoerk()
| subroutine, public roots::getroot_andersonbjoerk | ( | func, | |
| real, intent(in) | x1, | ||
| real, intent(in) | x2, | ||
| real, intent(out) | root, | ||
| integer, intent(out) | error, | ||
| real, dimension(:), intent(in), optional | plist, | ||
| real, intent(in), optional | xm, | ||
| integer, intent(out), optional | iterations | ||
| ) | 
◆ getroot_bisection()
| subroutine, public roots::getroot_bisection | ( | func, | |
| real, intent(in) | x1, | ||
| real, intent(in) | x2, | ||
| real, intent(out) | root, | ||
| integer, intent(out) | error, | ||
| real, dimension(:), intent(in), optional | plist, | ||
| real, intent(in), optional | xm, | ||
| integer, intent(out), optional | iterations | ||
| ) | 
◆ getroot_brentdekker()
| subroutine, public roots::getroot_brentdekker | ( | func, | |
| real, intent(in) | x1, | ||
| real, intent(in) | x2, | ||
| real, intent(out) | root, | ||
| integer, intent(out) | error, | ||
| real, dimension(:), intent(in), optional | plist, | ||
| real, intent(in), optional | xm, | ||
| integer, intent(out), optional | iterations | ||
| ) | 
◆ getroot_generic()
      
  | 
  private | 
◆ getroot_king()
| subroutine, public roots::getroot_king | ( | func, | |
| real, intent(in) | x1, | ||
| real, intent(in) | x2, | ||
| real, intent(out) | root, | ||
| integer, intent(out) | error, | ||
| real, dimension(:), intent(in), optional | plist, | ||
| real, intent(in), optional | xm, | ||
| integer, intent(out), optional | iterations | ||
| ) | 
◆ getroot_newton()
| subroutine, public roots::getroot_newton | ( | funcd, | |
| real, intent(in) | x1, | ||
| real, intent(in) | x2, | ||
| real, intent(out) | root, | ||
| integer, intent(out) | error, | ||
| real, dimension(:), intent(in), optional | plist, | ||
| real, intent(in), optional | xm, | ||
| integer, intent(out), optional | iterations | ||
| ) | 
◆ getroot_pegasus()
| subroutine, public roots::getroot_pegasus | ( | func, | |
| real, intent(in) | x1, | ||
| real, intent(in) | x2, | ||
| real, intent(out) | root, | ||
| integer, intent(out) | error, | ||
| real, dimension(:), intent(in), optional | plist, | ||
| real, intent(in), optional | xm, | ||
| integer, intent(out), optional | iterations | ||
| ) | 
◆ getroot_regulafalsi()
| subroutine, public roots::getroot_regulafalsi | ( | func, | |
| real, intent(in) | x1, | ||
| real, intent(in) | x2, | ||
| real, intent(out) | root, | ||
| integer, intent(out) | error, | ||
| real, dimension(:), intent(in), optional | plist, | ||
| real, intent(in), optional | xm, | ||
| integer, intent(out), optional | iterations | ||
| ) | 
◆ getroot_ridder()
| subroutine, public roots::getroot_ridder | ( | func, | |
| real, intent(in) | x1, | ||
| real, intent(in) | x2, | ||
| real, intent(out) | root, | ||
| integer, intent(out) | error, | ||
| real, dimension(:), intent(in), optional | plist, | ||
| real, intent(in), optional | xm, | ||
| integer, intent(out), optional | iterations | ||
| ) | 
◆ initroots()
| pure subroutine, public roots::initroots | ( | type(roots_typ), intent(inout) | this, | 
| real, intent(in) | x1, | ||
| real, intent(in) | x2, | ||
| real, intent(in) | f1, | ||
| real, intent(in) | f2, | ||
| real, intent(in), optional | dxacc, | ||
| integer, intent(in), optional | maxiter | ||
| ) | 
◆ linearinterpolation()
      
  | 
  private | 
◆ saveinversequadraticinterpolation()
      
  | 
  private | 
◆ step_andersonbjoerk()
      
  | 
  private | 
◆ step_arithmeticmean()
      
  | 
  private | 
◆ step_bisection()
      
  | 
  private | 
◆ step_brentdekker()
      
  | 
  private | 
◆ step_king()
      
  | 
  private | 
◆ step_newton()
      
  | 
  private | 
◆ step_pegasus()
      
  | 
  private | 
◆ step_regulafalsi()
      
  | 
  private | 
◆ step_ridder()
      
  | 
  private | 
◆ step_secantmethod()
      
  | 
  private | 
◆ testconvergence()
      
  | 
  private | 
◆ updatebounds_bisection()
      
  | 
  private | 
Variable Documentation
◆ default_accuracy
| real, parameter, public roots::default_accuracy = 4*EPSILON(DEFAULT_ACCURACY) | 
◆ default_max_iterations
| integer, parameter, public roots::default_max_iterations = 1000 | 
◆ error_message
      
  | 
  private | 













































 1.9.4