% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/sigma_update.R
\name{update_sigma_interpolation}
\alias{update_sigma_interpolation}
\title{Update Regularization Parameter (Interpolation-Enhanced CGT)}
\usage{
update_sigma_interpolation(
  sigma_current,
  rho,
  s,
  f_trial,
  m_trial,
  eta1 = 0.1,
  eta2 = 0.9,
  gamma1 = 0.5,
  gamma2 = 2,
  sigma_min = 1e-16,
  sigma_max = 1e+16
)
}
\arguments{
\item{sigma_current}{Current regularization parameter (positive scalar)}

\item{rho}{Ratio of actual to predicted reduction (scalar)}

\item{s}{Current step vector}

\item{f_trial}{Function value at trial point f(x + s)}

\item{m_trial}{Model value at step m(s)}

\item{eta1}{Acceptance threshold (default: 0.1)}

\item{eta2}{Very successful threshold (default: 0.9)}

\item{gamma1}{Sigma decrease factor for very successful steps (default: 0.5)}

\item{gamma2}{Sigma increase factor for unsuccessful steps (default: 2.0)}

\item{sigma_min}{Minimum allowed sigma (default: 1e-16)}

\item{sigma_max}{Maximum allowed sigma (default: 1e16)}
}
\value{
Updated sigma value (scalar)
}
\description{
Adaptively adjusts sigma using interpolation to estimate local Lipschitz constant
from model-function discrepancy. May provide faster adaptation on large-scale
problems with varying curvature (Gould, Porcelli, Toint, 2012).
}
\details{
Estimates local Lipschitz constant from discrepancy between function and model:
L_hat = 2 * |f(x+s) - m(s)| / ||s||^3

The update strategy incorporates this estimate:
\itemize{
\item \strong{Very successful} (rho >= eta2): sigma = max(L_hat/2, sigma/gamma1, sigma_min)
\item \strong{Moderately successful} (eta1 <= rho < eta2): Keep sigma unchanged
\item \strong{Unsuccessful} (rho < eta1): sigma = min(max(L_hat/2, gamma2*sigma), sigma_max)
}

This may provide better adaptation than Algorithm 2a (classical CGT) when
curvature varies significantly across the domain.
}
\keyword{internal}
