On Dec 3, 2012, at 10:14 AM, Jed Brown <jedbrown at mcs.anl.gov> wrote:

> On Mon, Dec 3, 2012 at 6:53 AM, Peter Brune <prbrune at gmail.com> wrote:
> This would probably be for the best.  That way there is no confusion between 
> what people hard-code and the options they have to pass to the solver.
> 
> I'm not a fan since there can be arbitrarily many methods _between_ Newton 
> and Picard.

   Ok, clearly we still don't understand Picard and what is called Picard in 
PETSc is probably all wrong.

   Start with F(x) = 0  Introduce any "reasonable" matrix function G(x) and 
write the equivalent nonlinear system G(x) x = -F(x) + G(x)x
non-defect correction Picard iteration is solve G(x^n) x^{n+1} = -F(x^n) + 
G(x^n) x^n write this in defect correction style as
solve G(x^n)(x^{n+1} - x^n) = -F(x^n).  When G(x^n) is the Jacobian of F() this 
is Newton's method. Correct? 

   So a user can do (defect correction) "Picard" for their problem simply by 
providing any G() they want and the original F() using the usual PETSc 
interface, correct?

   Given this introduction it is wrong to say there are many methods _between_ 
Newton and Picard. It is really that (defect correction) Picard is a spectrum 
of methods (any reasonable G()) and Newton is a special case. Correct?

    The way "Picard" comes into PETSc is when the user does not have F(x) 
instead they have A(x) x = f(x). They want to supply A(x) and f(x) and A(x) may 
not be particularly near the Jacobian of A(x)x - f(x) (since f() can have all 
kinds of stuff in it).

Thus Picard in PETSc means the user provides A(x) and f(x) and Newton means the 
user provides F(x) and any "Jacobian" they want.







Reply via email to