# 3.2.5. horton.correlatedwfn.trustregionopt – Optimization of Newton step¶

Module contains different trust radius optimization algorithms

class horton.correlatedwfn.trustregionopt.Dogleg(pn, g, H, radius)

Powell’s single dogleg steps approximate the trust region step over the two dimensional subspace spanned by the Cauchy step and any Newton step. Depending on the size of current step length, the step is adjusted yielding one of the following steps:

• if p(newton) < radius: Do full Newton step (not calculated here)
• elif p(cauchy) > radius: Do Cauchy step
• else: Do dogleg step

** Arguements **

pn
The full Newton step
g
H
The Hessian, a OneIndex instance

** Returns **

step: final step, a OneIndex instance Euclidian norm of the step
class horton.correlatedwfn.trustregionopt.DoubleDogleg(pn, g, H, radius)

Double dogleg steps approximate the trust region step

• if ||p(g)|| >= radius: Do step in g direction
• elif c*||p(n)|| >= radius: Do ddl step
• elif ||p(n)|| >= radius: Do scaled Newton step
• else: Do Newton step

** Arguements **

pn
The full Newton step
g
H
The Hessian, a OneIndex instance

** Returns **

step: final step, a OneIndex instance Euclidian norm of the step
class horton.correlatedwfn.trustregionopt.TruncatedCG(lf, g, H, radius, **kwargs)

minimize < g, s > + 1/2 < s, Hs > subject to < s, s > <= radius

by means of the truncated conjugate gradient algorithm as described in Trond Steihaug, SIAM Journal on Numerical Analysis (1983), 20, 626-637.

The algorithm stops as soon as the preconditioned norm of the gradient falls under

max( abstol, reltol * g0 )

where g0 is the preconditioned norm of the initial gradient (or the Euclidian norm if no preconditioner is given), or as soon as the iterates cross the boundary of the trust region.

** Arguements **

lf
A linalg factory instance
g
to_boundary(s, p, radius, ss=None)