[Numpy-svn] r8641 - in trunk/numpy/polynomial: . tests

numpy-svn@scip... numpy-svn@scip...
Sun Aug 15 16:06:27 CDT 2010


Author: charris
Date: 2010-08-15 16:06:27 -0500 (Sun, 15 Aug 2010)
New Revision: 8641

Modified:
   trunk/numpy/polynomial/chebyshev.py
   trunk/numpy/polynomial/tests/test_chebyshev.py
Log:
Merge branch 'poly'

Modified: trunk/numpy/polynomial/chebyshev.py
===================================================================
--- trunk/numpy/polynomial/chebyshev.py	2010-08-15 19:24:11 UTC (rev 8640)
+++ trunk/numpy/polynomial/chebyshev.py	2010-08-15 21:06:27 UTC (rev 8641)
@@ -36,6 +36,8 @@
 - `chebroots` -- find the roots of a Chebyshev series.
 - `chebvander` -- Vandermonde-like matrix for Chebyshev polynomials.
 - `chebfit` -- least-squares fit returning a Chebyshev series.
+- `chebpts1` -- Chebyshev points of the first kind.
+- `chebpts2` -- Chebyshev points of the second kind.
 - `chebtrim` -- trim leading coefficients from a Chebyshev series.
 - `chebline` -- Chebyshev series of given straight line.
 - `cheb2poly` -- convert a Chebyshev series to a polynomial.
@@ -78,7 +80,8 @@
 __all__ = ['chebzero', 'chebone', 'chebx', 'chebdomain', 'chebline',
         'chebadd', 'chebsub', 'chebmulx', 'chebmul', 'chebdiv', 'chebval',
         'chebder', 'chebint', 'cheb2poly', 'poly2cheb', 'chebfromroots',
-        'chebvander', 'chebfit', 'chebtrim', 'chebroots', 'Chebyshev']
+        'chebvander', 'chebfit', 'chebtrim', 'chebroots', 'chebpts1',
+        'chebpts2', 'Chebyshev']
 
 import numpy as np
 import numpy.linalg as la
@@ -1332,6 +1335,68 @@
     return roots
 
 
+def chebpts1(npts):
+    """Chebyshev points of the first kind.
+
+    Chebyshev points of the first kind are the set ``{cos(x_k)}``,
+    where ``x_k = pi*(k + .5)/npts`` for k in ``range(npts}``.
+
+    Parameters
+    ----------
+    npts: int
+        Number of sample points desired.
+
+    Returns
+    -------
+    pts: ndarray
+        The Chebyshev points of the second kind.
+
+    Notes
+    -----
+    .. versionadded:: 1.5.0
+
+    """
+    _npts = int(npts)
+    if _npts != npts:
+        raise ValueError("npts must be integer")
+    if _npts < 1:
+        raise ValueError("npts must be >= 1")
+
+    x = np.linspace(-np.pi, 0, _npts, endpoint=False) + np.pi/(2*_npts)
+    return np.cos(x)
+
+
+def chebpts2(npts):
+    """Chebyshev points of the second kind.
+
+    Chebyshev points of the second kind are the set ``{cos(x_k)}``,
+    where ``x_k = pi*/(npts - 1)`` for k in ``range(npts}``.
+
+    Parameters
+    ----------
+    npts: int
+        Number of sample points desired.
+
+    Returns
+    -------
+    pts: ndarray
+        The Chebyshev points of the second kind.
+
+    Notes
+    -----
+    .. versionadded:: 1.5.0
+
+    """
+    _npts = int(npts)
+    if _npts != npts:
+        raise ValueError("npts must be integer")
+    if _npts < 2:
+        raise ValueError("npts must be >= 2")
+
+    x = np.linspace(-np.pi, 0, _npts)
+    return np.cos(x)
+
+
 #
 # Chebyshev series class
 #

Modified: trunk/numpy/polynomial/tests/test_chebyshev.py
===================================================================
--- trunk/numpy/polynomial/tests/test_chebyshev.py	2010-08-15 19:24:11 UTC (rev 8640)
+++ trunk/numpy/polynomial/tests/test_chebyshev.py	2010-08-15 21:06:27 UTC (rev 8641)
@@ -345,7 +345,40 @@
         for i in range(10) :
             assert_equal(ch.poly2cheb(Tlist[i]), [0]*i + [1])
 
+    def test_chebpts1(self):
+        #test exceptions
+        yield assert_raises(ValueError, ch.chebpts1, 1.5)
+        yield assert_raises(ValueError, ch.chebpts1, 0)
 
+        #test points
+        tgt = [0]
+        yield assert_almost_equal(ch.chebpts1(1), tgt)
+        tgt = [-0.70710678118654746, 0.70710678118654746]
+        yield assert_almost_equal(ch.chebpts1(2), tgt)
+        tgt = [-0.86602540378443871, 0, 0.86602540378443871]
+        yield assert_almost_equal(ch.chebpts1(3), tgt)
+        tgt = [-0.9238795325, -0.3826834323,  0.3826834323,  0.9238795325]
+        yield assert_almost_equal(ch.chebpts1(4), tgt)
+
+
+    def test_chebpts2(self):
+        #test exceptions
+        yield assert_raises(ValueError, ch.chebpts2, 1.5)
+        yield assert_raises(ValueError, ch.chebpts2, 1)
+
+        #test points
+        tgt = [-1, 1]
+        yield assert_almost_equal(ch.chebpts2(2), tgt)
+        tgt = [-1, 0, 1]
+        yield assert_almost_equal(ch.chebpts2(3), tgt)
+        tgt = [-1 -0.5, .5, 1]
+        yield assert_almost_equal(ch.chebpts2(4), tgt)
+        tgt = [-1.0, -0.707106781187, 0, 0.707106781187, 1.0]
+        yield assert_almost_equal(ch.chebpts2(5), tgt)
+
+
+
+
 class TestChebyshevClass(TestCase) :
 
     p1 = ch.Chebyshev([1,2,3])



More information about the Numpy-svn mailing list