diff options
Diffstat (limited to 'vquad/core.py')
| -rw-r--r-- | vquad/core.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/vquad/core.py b/vquad/core.py index 4e08253..a5e09b3 100644 --- a/vquad/core.py +++ b/vquad/core.py @@ -103,10 +103,10 @@ class _Interval: self.level = level self.depth = depth - def points(self): + def map(self, points): a = self.a b = self.b - return (a + b) / 2 + (b - a) * tbls.nodes[self.level] / 2 + return (a + b) / 2 + (b - a) / 2 * points def interpolate(self, vals, coeffs_old=None): self.vals = vals @@ -148,7 +148,8 @@ class _Interval: depth = self.depth + 1 children = [_Interval(self.a, m, min_level, depth), _Interval(m, self.b, min_level, depth)] - points = np.concatenate([child.points()[1:-1] for child in children]) + points = tbls.nodes[min_level][1:-1] + points = np.concatenate([child.map(points) for child in children]) valss = np.empty((2, tbls.sizes[min_level])) valss[:, 0] = self.vals[0], f_center valss[:, -1] = f_center, self.vals[-1] @@ -180,7 +181,7 @@ class _Interval: limit of numerical accuracy and cannot be reduced further. """ self.level += 1 - points = self.points() + points = self.map(tbls.nodes[self.level]) vals = np.empty(points.shape) vals[0::2] = self.vals vals[1::2] = (yield points[1::2]) @@ -211,7 +212,7 @@ class Vquad: def __init__(self, f, a, b, level=max_level - 1): ival = _Interval(a, b, level, 1) - vals = f(ival.points()) + vals = f(ival.map(tbls.nodes[ival.level])) ival.interpolate(vals) ival.c00 = 0.0 # Will go away. ival.ndiv = 0 |
