[petsc-dev] How to implement the damped Newton method

Jed Brown jed at jedbrown.org
Sat Feb 7 07:54:36 CST 2015

Lulu Liu <lulu.liu at kaust.edu.sa> writes:

> X is the current approximate solution, Y is the Newton direction
> Step 1. the unknown X=[phi,omega,S], the third component S in [0,1]. Hence,
> we firstly compute a multiplier alpha such that
> X1= X-alpha*Y, and the component S of X1 is still in [0,1].
> In step1, we need access the component S to calculate multiplier.
> Step 2. Let the damping factor damp=1;
> for n=1:N
>     lambda=alpha*damp;
>     X1=X-lambda*Y;
>      Solve J(X1)Y1 = F(X1);
>      if ||Y1||<||Y||
>            break;
>       else
>             damp = damp/2;
>        end
> endfor

The above algorithm looks strange for a bunch of reasons (it's not
convergent, for one; are you sure you mean it exactly as written?), but
you could use a SNES pre-check and SNESLineSearchSetDamping or you can
write a SNESLineSearch implementation.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20150207/a4d73975/attachment.sig>

More information about the petsc-dev mailing list