nonlin_least_squares Module



Derived Types

type, public, abstract, extends(least_squares_solver) ::  constrained_equation_solver

A least-squares solver that enforces bounds on the solution values, typically expressed as . The solver applies the bounds during the iteration so that each trial step remains feasible.

Type-Bound Procedures

procedure, public :: apply_limits => ces_apply_limits
procedure, public :: get_fcn_tolerance => es_get_fcn_tol
procedure, public :: get_gradient_tolerance => es_get_grad_tol
procedure, public :: get_lower_limits => ces_get_lower_bounds
procedure, public :: get_max_fcn_evals => es_get_max_eval
procedure, public :: get_print_status => es_get_print_status
procedure, public :: get_step_scaling_factor => lss_get_factor
procedure, public :: get_upper_limits => ces_get_upper_bounds
procedure, public :: get_var_tolerance => es_get_var_tol
procedure, public :: set_fcn_tolerance => es_set_fcn_tol
procedure, public :: set_gradient_tolerance => es_set_grad_tol
procedure, public :: set_lower_limits => ces_set_lower_bounds
procedure, public :: set_max_fcn_evals => es_set_max_eval
procedure, public :: set_print_status => es_set_print_status
procedure, public :: set_step_scaling_factor => lss_set_factor
procedure, public :: set_upper_limits => ces_set_upper_bounds
procedure, public :: set_var_tolerance => es_set_var_tol
procedure, public :: solve => lss_solve

Defines a constrained least-squares solver using Powell's trust region method. The method seeks a correction that reduces the residual vector while remaining inside a trust region of size and the bounds . The trial step is formed from a Gauss-Newton step a steepest-descent step and a dogleg combination with chosen so that . If the trust-region step is rejected, a backtracking line search is used to improve the step acceptance.

Type-Bound Procedures

procedure, public :: apply_limits => ces_apply_limits
procedure, public :: get_fcn_tolerance => es_get_fcn_tol
procedure, public :: get_gradient_tolerance => es_get_grad_tol
procedure, public :: get_lower_limits => ces_get_lower_bounds
procedure, public :: get_max_fcn_evals => es_get_max_eval
procedure, public :: get_print_status => es_get_print_status
procedure, public :: get_step_scaling_factor => cls_get_factor
procedure, public :: get_trust_region_radius => cls_get_radius
procedure, public :: get_upper_limits => ces_get_upper_bounds
procedure, public :: get_var_tolerance => es_get_var_tol
procedure, public :: set_fcn_tolerance => es_set_fcn_tol
procedure, public :: set_gradient_tolerance => es_set_grad_tol
procedure, public :: set_lower_limits => ces_set_lower_bounds
procedure, public :: set_max_fcn_evals => es_set_max_eval
procedure, public :: set_print_status => es_set_print_status
procedure, public :: set_step_scaling_factor => cls_set_factor
procedure, public :: set_trust_region_radius => cls_set_radius
procedure, public :: set_upper_limits => ces_set_upper_bounds
procedure, public :: set_var_tolerance => es_set_var_tol
procedure, public :: solve => cls_solve

type, public, extends(equation_solver) ::  least_squares_solver

Defines a Levenberg-Marquardt solver for unconstrained least-squares problems. The update is obtained from the damped normal equations where is the residual vector and .

Type-Bound Procedures

procedure, public :: get_fcn_tolerance => es_get_fcn_tol
procedure, public :: get_gradient_tolerance => es_get_grad_tol
procedure, public :: get_max_fcn_evals => es_get_max_eval
procedure, public :: get_print_status => es_get_print_status
procedure, public :: get_step_scaling_factor => lss_get_factor
procedure, public :: get_var_tolerance => es_get_var_tol
procedure, public :: set_fcn_tolerance => es_set_fcn_tol
procedure, public :: set_gradient_tolerance => es_set_grad_tol
procedure, public :: set_max_fcn_evals => es_set_max_eval
procedure, public :: set_print_status => es_set_print_status
procedure, public :: set_step_scaling_factor => lss_set_factor
procedure, public :: set_var_tolerance => es_set_var_tol
procedure, public :: solve => lss_solve