Overdetermined, non-linear

Erlend Pedersen :. erlend.pedersen at holberger.com
Wed Feb 6 09:49:32 CST 2008


On Tue, 2008-02-05 at 07:31 -0600, Matthew Knepley wrote:
> On Feb 5, 2008 3:26 AM, Erlend Pedersen :.
> <erlend.pedersen at holberger.com> wrote:
> > On Sun, 2008-02-03 at 19:59 -0600, Matthew Knepley wrote:
> > > On Feb 1, 2008 5:54 AM, Erlend Pedersen :.
> > > <erlend.pedersen at holberger.com> wrote:
> > > > I am attempting to use the PETSc nonlinear solver on an overdetermined
> > > > system of non-linear equations. Hence, the Jacobian is not square, and
> > > > so far we have unfortunately not succeeded with any combination of snes,
> > > > ksp and pc.
> > > >
> > > > Could you confirm that snes actually works for overdetermined systems,
> > > > and if so, is there an application example we could look at in order to
> > > > make sure there is nothing wrong with our test-setup?
> > > >
> > > > We have previously used the MINPACK routine LMDER very successfully, but
> > > > for our current problem sizes we rely on the use of sparse matrix
> > > > representations and parallel architectures. PETSc's abstractions and
> > > > automatic MPI makes this system very attractive for us, and we have
> > > > already used the PETSc LSQR solver with great success.
> > >
> > > So in the sense that SNES is really just an iteration with an embedded solve,
> > > yes it can solve non-square nonlinear systems. However, the user has to
> > > understand what is meant by the Function and Jacobian evaluation methods.
> > > I suggest implementing the simplest algorithm for non-square systems:
> > >
> > > http://en.wikipedia.org/wiki/Gauss-Newton_algorithm
> > >
> > > By implement, I mean your Function and Jacobian methods should return the
> > > correct terms. I believe the reason you have not seen convergence is that
> > > the result of the solve does not "mean" the correct thing for the iteration
> > > in your current setup.
> > >
> > >    Matt
> >
> > Thanks. Good to know that I should be able to get a working setup. Are
> > there by any chance any code examples that I could use to clue myself in
> > on how to transform my m equations of n unknonwns into a correct
> > function for the Gauss-Newton algorithm?
> 
> We do not have any nonlinear least-squares examples, unfortunately. At that
> point, most users have gone over to formulating their problem directly as
> an optimization problem (which allows more flexibility than least squares) and
> have moved to TAO (http://www-unix.mcs.anl.gov/tao/) which does have
> examples, I believe, for optimization of this kind.
> 
> If you know that you only ever want to do least squares, and you want to solve
> the biggest, parallel problems, than stick with PETSc and build a nice
> Gauss-Newton
> (or Levenberg-Marquadt) solver. However, if you really want to solve a more
> general optimization problem, I recommend reformulating it now and moving
> to TAO. It is at least worth reading up on it.

Reformulating as an optimization problem does seem like the easier route
for now. I kept away from TAO in order to Keep It Simple, but now I see
that the opposite might be the case. I should be able to provide it with
a gradient, if not necessarily a Hessian. Thanks again :)

- Erlend :.

> 
>   Thanks,
> 
>      Matt
> 
> > - Erlend :.




More information about the petsc-users mailing list