[SciPy-dev] SciPy improvements
Matthieu Brucher
matthieu.brucher at gmail.com
Wed Apr 11 16:56:45 EDT 2007
>
> 2) Nonlinear solvers
>
> I have written these nonlinear solvers for the problem R(x) = 0, where
> x and R has a dimension "n":
>
> broyden1 - Broyden's first method - is a quasi-Newton-Raphson method
> for
> updating an approximate Jacobian and then inverting it
> broyden2 - Broyden's second method - the same as broyden1, but updates
> the
> inverse Jacobian directly
> broyden3 - Broyden's second method - the same as broyden2, but instead
> of
> directly computing the inverse Jacobian, it remembers how to
> construct
> it using vectors, and when computing inv(J)*F, it uses those
> vectors to
> compute this product, thus avoding the expensive NxN matrix
> multiplication.
> broyden_generalized - Generalized Broyden's method, the same as
> broyden2,
> but instead of approximating the full NxN Jacobian, it construct
> it at
> every iteration in a way that avoids the NxN matrix
> multiplication.
> This is not as precise as broyden3.
> anderson - extended Anderson method, the same as the
> broyden_generalized,
> but added w_0^2*I to before taking inversion to improve the
> stability
> anderson2 - the Anderson method, the same as anderson, but formulated
> differently
> linear_mixing
> exciting_mixing
>
> I use them in the self-consistent cycle of the Density Functional
> Theory (so I use a terminology of DFT literature in the names of the
> methods).
Could the part that computes the step be separated from the function iself
and the optimizer ? I'm trying to "modularize" non linear solvers so as to
select more efficiently what is needed - kind of optimizer, kind of step,
kind of stopping criterion, ... -
Matthieu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20070411/2e1c7c26/attachment.html>
More information about the SciPy-Dev
mailing list