Skip to main content
`Ctrl`+`K`

# SNESQN

Limited-Memory Quasi-Newton methods for the solution of nonlinear systems.

## Options Database Keys

- -snes_qn_m <m> - Number of past states saved for the L-Broyden methods.

- -snes_qn_restart_type <powell,periodic,none> - set the restart type

- -snes_qn_powell_gamma - Angle condition for restart.

- -snes_qn_powell_descent - Descent condition for restart.

- -snes_qn_type <lbfgs,broyden,badbroyden> - QN type

- -snes_qn_scale_type <diagonal,none,scalar,jacobian> - scaling performed on inner Jacobian

- -snes_linesearch_type <cp, l2, basic> - Type of line search.

- -snes_qn_monitor - Monitors the quasi-newton Jacobian.

## Notes

This implements the L-BFGS, Broyden, and “Bad” Broyden algorithms for the solution of \(F(x) = b\) using previous change in \(F(x)\) and \(x\) to form the approximate inverse Jacobian using a series of multiplicative rank-one updates.

When using a nonlinear preconditioner, one has two options as to how the preconditioner is applied. The first of these options, sequential, uses the preconditioner to generate a new solution and function and uses those at this iteration as the current iteration’s values when constructing the approximate Jacobian. The second, composed, perturbs the problem the Jacobian represents to be \(P(x, b) - x = 0 \), where \(P(x, b)\) is the preconditioner.

Uses left nonlinear preconditioning by default.

See [BNS94], [Kel95], [BHW85], [Gri12], [GLemarechal89], [DM19], and [BKST15]

## References

[BHW85]

P.N. Brown, A.C. Hindmarsh, and H.F. Walker. Experiments with quasi-Newton methods in solving stiff ODE systems. SIAM Journal on Scientific and Statistical Computing, 6(2):297–313, 1985.

[BKST15]

Peter R. Brune, Matthew G. Knepley, Barry F. Smith, and Xuemin Tu. Composing scalable nonlinear algebraic solvers. SIAM Review, 57(4):535–565, 2015. http://www.mcs.anl.gov/papers/P2010-0112.pdf. URL: http://www.mcs.anl.gov/papers/P2010-0112.pdf, doi:10.1137/130936725.

[BNS94]

Richard H Byrd, Jorge Nocedal, and Robert B Schnabel. Representations of quasi-Newton matrices and their use in limited memory methods. Mathematical Programming, 63(1-3):129–156, 1994.

[DM19]

Alp Dener and Todd Munson. Accelerating limited-memory quasi-Newton convergence for large-scale optimization. In Computational Science–ICCS 2019: 19th International Conference, Faro, Portugal, June 12–14, 2019, Proceedings, Part III 19, 495–507. Springer, 2019.

[GLemarechal89]

Jean Charles Gilbert and Claude Lemaréchal. Some numerical experiments with variable-storage quasi-Newton algorithms. Mathematical programming, 45(1-3):407–435, 1989.

[Gri12]

Andreas Griewank. Broyden updating, the good and the bad! Optimization Stories, Documenta Mathematica. Extra Volume: Optimization Stories, pages 301–315, 2012.

[Kel95]

C. T. Kelley. Iterative Methods for Linear and Nonlinear Equations. SIAM, Philadelphia, 1995.

## See Also

SNES: Nonlinear Solvers, `SNESQNRestartType`, `SNESQNSetRestartType()`, `SNESCreate()`, `SNES`, `SNESSetType()`, `SNESNEWTONLS`, `SNESNEWTONTR`, `SNESQNScaleType`, `SNESQNSetScaleType()`, `SNESQNType`, `SNESQNSetType()`

## Level

beginner

## Location

src/snes/impls/qn/qn.c

Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages