summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numpy/polynomial/polytemplate.py11
-rw-r--r--numpy/polynomial/tests/test_chebyshev.py6
-rw-r--r--numpy/polynomial/tests/test_polynomial.py6
3 files changed, 19 insertions, 4 deletions
diff --git a/numpy/polynomial/polytemplate.py b/numpy/polynomial/polytemplate.py
index 835197834..08510c1ff 100644
--- a/numpy/polynomial/polytemplate.py
+++ b/numpy/polynomial/polytemplate.py
@@ -514,7 +514,7 @@ class $name(pu.PolyBase) :
return pu.mapdomain(roots, $domain, self.domain)
@staticmethod
- def fit(x, y, deg, domain=$domain, rcond=None, full=False) :
+ def fit(x, y, deg, domain=None, rcond=None, full=False) :
"""Least squares fit to data.
Return a `$name` instance that is the least squares fit to the data
@@ -533,10 +533,11 @@ class $name(pu.PolyBase) :
passing in a 2D-array that contains one dataset per column.
deg : int
Degree of the fitting polynomial
- domain : {None, [beg, end]}, optional
+ domain : {None, [beg, end], 'default'}, optional
Domain to use for the returned $name instance. If ``None``,
- then a minimal domain that covers the points `x` is chosen. The
- default value is ``$domain``.
+ then a minimal domain that covers the points `x` is chosen.
+ If ``'default'`` the default domain ``$domain`` is used. The
+ default value is ``None``.
rcond : float, optional
Relative condition number of the fit. Singular values smaller
than this relative to the largest singular value will be
@@ -568,6 +569,8 @@ class $name(pu.PolyBase) :
"""
if domain is None :
domain = pu.getdomain(x)
+ elif domain == 'default' :
+ domain = $domain
xnew = pu.mapdomain(x, domain, $domain)
res = ${nick}fit(xnew, y, deg, rcond=None, full=full)
if full :
diff --git a/numpy/polynomial/tests/test_chebyshev.py b/numpy/polynomial/tests/test_chebyshev.py
index 13776aa87..2278ca871 100644
--- a/numpy/polynomial/tests/test_chebyshev.py
+++ b/numpy/polynomial/tests/test_chebyshev.py
@@ -463,7 +463,13 @@ class TestChebyshevClass(TestCase) :
return x*(x - 1)*(x - 2)
x = np.linspace(0,3)
y = f(x)
+
+ # test default value of domain
p = ch.Chebyshev.fit(x, y, 3)
+ assert_almost_equal(p.domain, [0,3])
+
+ # test that fit works in given domains
+ p = ch.Chebyshev.fit(x, y, 3, 'default')
assert_almost_equal(p(x), y)
p = ch.Chebyshev.fit(x, y, 3, None)
assert_almost_equal(p(x), y)
diff --git a/numpy/polynomial/tests/test_polynomial.py b/numpy/polynomial/tests/test_polynomial.py
index 7ba5b6c8f..13718fe9e 100644
--- a/numpy/polynomial/tests/test_polynomial.py
+++ b/numpy/polynomial/tests/test_polynomial.py
@@ -434,7 +434,13 @@ class TestPolynomialClass(TestCase) :
return x*(x - 1)*(x - 2)
x = np.linspace(0,3)
y = f(x)
+
+ # test default value of domain
p = poly.Polynomial.fit(x, y, 3)
+ assert_almost_equal(p.domain, [0,3])
+
+ # test that fit works in given domains
+ p = poly.Polynomial.fit(x, y, 3, 'default')
assert_almost_equal(p(x), y)
p = poly.Polynomial.fit(x, y, 3, None)
assert_almost_equal(p(x), y)