Skip to content

Commit 665a04a

Browse files
authored
add subset param
1 parent a54dc67 commit 665a04a

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

flexsolve/iterative_solvers.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@
1919

2020
@register_jitable(cache=True)
2121
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):
2323
"""Iterative fixed-point solver."""
2424
x0 = x1 = x
2525
errors = np.zeros(convergenceiter)
2626
fixedpoint_converged = utils.fixedpoint_converged
2727
for iter in range(maxiter):
2828
x1 = f(x0, *args)
2929
e = np.abs(x1 - x0)
30-
if fixedpoint_converged(e, xtol): return x1
30+
if fixedpoint_converged(e, xtol, subset): return x1
3131
if convergenceiter:
3232
mean = utils.mean(e)
3333
if iter > convergenceiter and mean > errors.mean():
@@ -51,7 +51,7 @@ def conditional_fixed_point(f, x):
5151

5252
@register_jitable(cache=True)
5353
def wegstein(f, x, xtol=5e-8, args=(), maxiter=50, checkiter=True,
54-
checkconvergence=True, convergenceiter=0):
54+
checkconvergence=True, convergenceiter=0, subset=0):
5555
"""Iterative Wegstein solver."""
5656
errors = np.zeros(convergenceiter)
5757
x0 = x
@@ -65,7 +65,7 @@ def wegstein(f, x, xtol=5e-8, args=(), maxiter=50, checkiter=True,
6565
x1 = g0
6666
g1 = f(x1, *args)
6767
e = np.abs(g1 - x1)
68-
if fixedpoint_converged(e, xtol): return g1
68+
if fixedpoint_converged(e, xtol, subset): return g1
6969
x0 = x1
7070
x1 = wegstein_iter(x1, dx, g1, g0)
7171
g0 = g1
@@ -100,7 +100,7 @@ def conditional_wegstein(f, x):
100100

101101
@register_jitable(cache=True)
102102
def aitken(f, x, xtol=5e-8, args=(), maxiter=50, checkiter=True,
103-
checkconvergence=True, convergenceiter=0):
103+
checkconvergence=True, convergenceiter=0, subset=0):
104104
"""Iterative Aitken solver."""
105105
gg = x
106106
errors = np.zeros(convergenceiter)
@@ -113,10 +113,10 @@ def aitken(f, x, xtol=5e-8, args=(), maxiter=50, checkiter=True,
113113
g = f(x, *args)
114114
dxg = x - g
115115
e = np.abs(dxg)
116-
if fixedpoint_converged(e, xtol): return g
116+
if fixedpoint_converged(e, xtol, subset): return g
117117
gg = f(g, *args)
118118
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
120120
x = aitken_iter(x, gg, dxg, dgg_g)
121121
if convergenceiter:
122122
mean = utils.mean(e)
@@ -143,4 +143,4 @@ def conditional_aitken(f, x):
143143
if not condition: return g
144144
gg, condition = f(g)
145145
x = aitken_iter(x, gg, x - g, gg - g)
146-
return x
146+
return x

0 commit comments

Comments
 (0)