[SciPy-dev] scipy.optimize.nonlin rewrite

Bill Baxter wbaxter@gmail....
Sat Dec 20 04:10:10 CST 2008

> The difference in Broyden's good/first and bad/second method is to my
> understanding the one mentioned in Wikipedia: both methods can be written as
> updates to the inverse Jacobian because the update is rank-1 so that the
> Sherman-Morrison formula applies. The difference can be seen if one looks at
> the domains (right-hand vector) of the rank-1 inverse updates: Broyden's "good"
> method uses J_{n-1}^{-T} dx, whereas the "bad" method uses df. These two
> vectors are not equal, even though both updates satisfy the quasi-Newton
> condition.

Here's what it says in that paper "On the discovery of the 'good
Broyden' method" by Broyden

B[i] = B[i-1] + (y[i-1] - B[i-1]s[i-1]) *  ( s[i-1].T / ( s[i-1].T * s[i-1] ))
The formula is referred to as "good" due to its better numerical
performance relative to another formula
that I also presented in [3], which has become to be known as the "bad
Broyden" update. See [5] for a discussion
of these two updates and their relations to the DFP and BFGS updates.
Selected references:
[3] Broyden, C.G. (1965): A class of methods for solving nonlinear
simultaneous equations. Math. Comp.
19, 577–593
[5] Dennis, J.E., Jr., Schnabel, R.B. (1981): A new derivation of
symmetric positive definite secant updates.
In: Mangasarian, O.L., Meyer, R.R., Robinson, S.M., eds., Nonlinear
Programming 4, 1980. Academic
Press, New York, NY, 167–199


More information about the Scipy-dev mailing list