19
19
20
20
@register_jitable (cache = True )
21
21
def fixed_point (f , x , xtol = 5e-8 , args = (), maxiter = 50 , checkiter = True ,
22
- checkconvergence = True , convergenceiter = 0 ):
22
+ checkconvergence = True , convergenceiter = 0 , subset = 0 ):
23
23
"""Iterative fixed-point solver."""
24
24
x0 = x1 = x
25
25
errors = np .zeros (convergenceiter )
26
26
fixedpoint_converged = utils .fixedpoint_converged
27
27
for iter in range (maxiter ):
28
28
x1 = f (x0 , * args )
29
29
e = np .abs (x1 - x0 )
30
- if fixedpoint_converged (e , xtol ): return x1
30
+ if fixedpoint_converged (e , xtol , subset ): return x1
31
31
if convergenceiter :
32
32
mean = utils .mean (e )
33
33
if iter > convergenceiter and mean > errors .mean ():
@@ -51,7 +51,7 @@ def conditional_fixed_point(f, x):
51
51
52
52
@register_jitable (cache = True )
53
53
def wegstein (f , x , xtol = 5e-8 , args = (), maxiter = 50 , checkiter = True ,
54
- checkconvergence = True , convergenceiter = 0 ):
54
+ checkconvergence = True , convergenceiter = 0 , subset = 0 ):
55
55
"""Iterative Wegstein solver."""
56
56
errors = np .zeros (convergenceiter )
57
57
x0 = x
@@ -65,7 +65,7 @@ def wegstein(f, x, xtol=5e-8, args=(), maxiter=50, checkiter=True,
65
65
x1 = g0
66
66
g1 = f (x1 , * args )
67
67
e = np .abs (g1 - x1 )
68
- if fixedpoint_converged (e , xtol ): return g1
68
+ if fixedpoint_converged (e , xtol , subset ): return g1
69
69
x0 = x1
70
70
x1 = wegstein_iter (x1 , dx , g1 , g0 )
71
71
g0 = g1
@@ -100,7 +100,7 @@ def conditional_wegstein(f, x):
100
100
101
101
@register_jitable (cache = True )
102
102
def aitken (f , x , xtol = 5e-8 , args = (), maxiter = 50 , checkiter = True ,
103
- checkconvergence = True , convergenceiter = 0 ):
103
+ checkconvergence = True , convergenceiter = 0 , subset = 0 ):
104
104
"""Iterative Aitken solver."""
105
105
gg = x
106
106
errors = np .zeros (convergenceiter )
@@ -113,10 +113,10 @@ def aitken(f, x, xtol=5e-8, args=(), maxiter=50, checkiter=True,
113
113
g = f (x , * args )
114
114
dxg = x - g
115
115
e = np .abs (dxg )
116
- if fixedpoint_converged (e , xtol ): return g
116
+ if fixedpoint_converged (e , xtol , subset ): return g
117
117
gg = f (g , * args )
118
118
dgg_g = gg - g
119
- if fixedpoint_converged (np .abs (dgg_g ), xtol ): return gg
119
+ if fixedpoint_converged (np .abs (dgg_g ), xtol , subset ): return gg
120
120
x = aitken_iter (x , gg , dxg , dgg_g )
121
121
if convergenceiter :
122
122
mean = utils .mean (e )
@@ -143,4 +143,4 @@ def conditional_aitken(f, x):
143
143
if not condition : return g
144
144
gg , condition = f (g )
145
145
x = aitken_iter (x , gg , x - g , gg - g )
146
- return x
146
+ return x
0 commit comments