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

Kumar Appaiah a.kumar at alumni.iitm.ac.in
Sat Jun 15 00:29:11 EDT 2013


On Fri, Jun 14, 2013 at 08:07:57PM -0600, Charles R Harris wrote:
>      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

This may be true, but I am not concerned with the numerical
instability in my current application. Nevertheless, I understand it
if you don't want to introduce such a function.

>    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.

I now see that the polynomial structure is intended to be "rich", as
opposed to the naïve function that I proposed. In the least, though,
the documentation could reflect the example you gave me. I could send
a patch that adds an example for each of the polynomial types in the
documentation, much like yours, if that would be useful.

Thanks for the clarification.

Kumar
-- 
Kumar Appaiah



More information about the NumPy-Discussion mailing list