[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