From dc7874308c69ecc836f17fac6e904a46351e0b27 Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Wed, 18 Jan 2023 13:19:47 -0500 Subject: [PATCH 1/2] Add TrustRegion to the documentation --- docs/src/api/nonlinearsolve.md | 1 + docs/src/solvers/NonlinearSystemSolvers.md | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/src/api/nonlinearsolve.md b/docs/src/api/nonlinearsolve.md index 3da6bbc51..ebe9c7203 100644 --- a/docs/src/api/nonlinearsolve.md +++ b/docs/src/api/nonlinearsolve.md @@ -6,4 +6,5 @@ These are the native solvers of NonlinearSolve.jl. ```@docs NewtonRaphson +TrustRegion ``` diff --git a/docs/src/solvers/NonlinearSystemSolvers.md b/docs/src/solvers/NonlinearSystemSolvers.md index 24e76390e..98de4dc4a 100644 --- a/docs/src/solvers/NonlinearSystemSolvers.md +++ b/docs/src/solvers/NonlinearSystemSolvers.md @@ -36,6 +36,8 @@ features, but have a bit of overhead on very small problems. - `NewtonRaphson()`:A Newton-Raphson method with swappable nonlinear solvers and autodiff methods for high performance on large and sparse systems. +- `TrustRegion()`: A Newton Trust Region dogleg method with swappable nonlinear solvers and + autodiff methods for high performance on large and sparse systems. ### SimpleNonlinearSolve.jl @@ -48,7 +50,7 @@ methods excel at small problems and problems defined with static arrays. - `Klement()`: A quasi-Newton method due to Klement. It's supposed to be more efficient than Broyden's method, and it seems to be in the cases that have been tried but more benchmarking is required. -- `TrustRegion()`: A dogleg trust-region Newton method. Improved globalizing stability +- `SimpleTrustRegion()`: A dogleg trust-region Newton method. Improved globalizing stability for more robust fitting over basic Newton methods, though potentially with a cost. !!! note From 203426c24731072f3f64cd2c81fb29c0a5fad67d Mon Sep 17 00:00:00 2001 From: Chris Rackauckas Date: Wed, 18 Jan 2023 13:21:10 -0500 Subject: [PATCH 2/2] update recommendation --- docs/src/solvers/NonlinearSystemSolvers.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/solvers/NonlinearSystemSolvers.md b/docs/src/solvers/NonlinearSystemSolvers.md index 98de4dc4a..40db41e6a 100644 --- a/docs/src/solvers/NonlinearSystemSolvers.md +++ b/docs/src/solvers/NonlinearSystemSolvers.md @@ -7,11 +7,11 @@ Solves for ``f(u)=0`` in the problem defined by `prob` using the algorithm ## Recommended Methods -`NewtonRaphson` is a good choice for most problems. For large +`TrustRegion` is a good choice for most problems. For large systems, it can make use of sparsity patterns for sparse automatic differentiation and sparse linear solving of very large systems. That said, as a classic Newton method, its stability region can be smaller than other methods. Meanwhile, -`SimpleNewtonRaphson` and `TrustRegion` are implementations which are specialized for +`SimpleNewtonRaphson` and `SimpleTrustRegion` are implementations which are specialized for small equations. It is non-allocating on static arrays and thus really well-optimized for small systems, thus usually outperforming the other methods when such types are used for `u0`. `DynamicSS` can be a good choice for high stability.