Example #1
0
    def test_broyden2_update(self):
        # Check that BroydenSecond update works as for a dense matrix
        jac = nonlin.BroydenSecond(alpha=0.1)
        jac.setup(self.xs[0], self.fs[0], None)

        H = np.identity(5) * (-0.1)

        for last_j, (x, f) in enumerate(zip(self.xs[1:], self.fs[1:])):
            df = f - self.fs[last_j]
            dx = x - self.xs[last_j]
            H += (dx - dot(H, df))[:, None] * df[None, :] / dot(df, df)
            jac.update(x, f)
            assert_(np.allclose(jac.todense(), inv(H), rtol=1e-10, atol=1e-13))
Example #2
0
 def test_broyden2(self):
     # Broyden methods solve linear systems exactly in 2*N steps
     self._check(nonlin.BroydenSecond(alpha=1.0), 20, 41, False)
     self._check(nonlin.BroydenSecond(alpha=1.0), 20, 41, True)