@@ -132,7 +132,8 @@ function LMTR(
132132
133133 σmax, found_σ = opnorm (Jk)
134134 found_σ || error (" operator norm computation failed" )
135- ν = θ / σmax^ 2 # ‖J'J‖ = ‖J‖²
135+ α⁻¹Δ⁻¹ = 1 / (α * Δk)
136+ ν = 1 / (α⁻¹Δ⁻¹ + σmax^ 2 * (α⁻¹Δ⁻¹ + 1 )) # ‖J'J‖ = ‖J‖²
136137
137138 mν∇fk = - ∇fk * ν
138139
@@ -174,8 +175,7 @@ function LMTR(
174175
175176 # Take first proximal gradient step s1 and see if current xk is nearly stationary.
176177 # s1 minimizes φ1(d) + ‖d‖² / 2 / ν + ψ(d) ⟺ s1 ∈ prox{νψ}(-ν∇φ1(0))
177- ν1 = 1 / (1 / ν + 1 / (Δk * α))
178- prox! (s, ψ, mν∇fk, ν1)
178+ prox! (s, ψ, mν∇fk, ν)
179179 ξ1 = fk + hk - mk1 (s) + max (1 , abs (fk + hk)) * 10 * eps ()
180180 ξ1 > 0 || error (" LMTR: first prox-gradient step should produce a decrease but ξ1 = $(ξ1) " )
181181
@@ -197,8 +197,8 @@ function LMTR(
197197 set_bounds! (ψ, max .(- ∆_effective, l_bound - xk), min .(∆_effective, u_bound - xk)) :
198198 set_radius! (ψ, ∆_effective)
199199 subsolver_options. Δk = ∆_effective / 10
200- subsolver_options. ν = ν1
201- subsolver_args = subsolver == TRDH ? (SpectralGradient (1 / ν1 , nls. meta. nvar),) : ()
200+ subsolver_options. ν = ν
201+ subsolver_args = subsolver == TRDH ? (SpectralGradient (1 / ν , nls. meta. nvar),) : ()
202202 s, iter, _ = with_logger (subsolver_logger) do
203203 subsolver (φ, ∇φ!, ψ, subsolver_args... , subsolver_options, s)
204204 end
@@ -255,7 +255,8 @@ function LMTR(
255255 jtprod_residual! (nls, xk, Fk, ∇fk)
256256 σmax, found_σ = opnorm (Jk)
257257 found_σ || error (" operator norm computation failed" )
258- ν = θ / σmax^ 2 # ‖J'J‖ = ‖J‖²
258+ α⁻¹Δ⁻¹ = 1 / (α * Δk)
259+ ν = 1 / (α⁻¹Δ⁻¹ + σmax^ 2 * (α⁻¹Δ⁻¹ + 1 )) # ‖J'J‖ = ‖J‖²
259260 @. mν∇fk = - ∇fk * ν
260261 end
261262
0 commit comments