[Numpy-discussion] Generating special polynomials (Chebyshev, Hermite etc.)

Charles R Harris charlesr.harris at gmail.com
Fri Jun 14 22:07:57 EDT 2013


On Fri, Jun 14, 2013 at 6:59 PM, Kumar Appaiah <a.kumar at alumni.iitm.ac.in>wrote:

> Dear Numpy Users,
>
> I am trying to find out a way by which I can easily generate the n-th
> order "special" polynomial, where "special" could refer to Hermite,
> Chebyshev etc. Numpy 1.7 introduces several methods for such
> polynomials, but I couldn't find a convenience function that gives me
> a polynomial directly based on degree. For instance, I'd like:
>
> hermite(3) to result in array([  0., -12.,   0.,   8.])
> hermite(6) to result in array([-120.,    0.,  720.,    0., -480.,    0.,
> 64.])
> and so on.
>

Generally that is a bad idea, polynomials tend to be numerically unstable
and you lose all the virtue of the Hermite basis. However, you can do

In [1]: from numpy.polynomial import Polynomial, Hermite

In [2]: p = Hermite.basis(5)

In [3]: p.convert(kind=Polynomial)
Out[3]: Polynomial([   0.,  120.,    0., -160.,    0.,   32.], [-1.,  1.],
[-1.,  1.])

In [4]: Polynomial.cast(p)
Out[4]: Polynomial([   0.,  120.,    0., -160.,    0.,   32.], [-1.,  1.],
[-1.,  1.])

In [5]: from numpy.polynomial import Chebyshev

In [6]: Chebyshev.cast(p)
Out[6]: Chebyshev([  0.,  20.,   0., -30.,   0.,   2.], [-1.,  1.], [-1.,
1.])

Hmm, it should be possible to make the constructor take polynomials of
different kinds since they all derive from PolyBase and can be detected.
That could replace the cast method in a nice way.


> The quickest way I could come up with for this is:
>
> def hermite(n):
>     if n <= 0:
>         return numpy.array([1.0])
>     coeff_polynomial = [0.0] * n
>     coeff_polynomial.extend([1])
>     return numpy.polynomial.hermite.herm2poly(coeff_polynomial)
>
> Now, if I am missing something, please let me know. If you think this
> is a useful feature, I volunteer to patch all the polynomial modules
> to generate such polynomials, if you could tell me appropriate
> function names for such convenience functions.
>

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20130614/186db008/attachment.html>


More information about the NumPy-Discussion mailing list