[Numpy-discussion] Add Chebyshev (cosine) transforms implemented via FFTs

Chris Val cv1038 at wildcats.unh.edu
Wed Aug 5 20:16:01 EDT 2020


Stephan Hoyer-2 wrote
> On Tue, Aug 4, 2020 at 6:10 PM Charles R Harris <

> charlesr.harris@

> >
> wrote:
> 
>>
>>
>> On Tue, Aug 4, 2020 at 4:55 AM Ralf Gommers <

> ralf.gommers@

> >
>> wrote:
>>
>>>
>>>
>>> On Tue, Aug 4, 2020 at 1:49 AM Chris Vavaliaris <

> cv1038 at .unh

> >
>>> wrote:
>>>
>>>> PR #16999: https://github.com/numpy/numpy/pull/16999
>>>>
>>>> Hello all,
>>>> this PR adds the two 1D Chebyshev transform functions `chebyfft` and
>>>> `ichebyfft` into the `numpy.fft` module, utilizing the real FFTs `rfft`
>>>> and
>>>> `irfft`, respectively. As far as I understand, `pockefft` does not
>>>> support
>>>> cosine transforms natively; for this reason, an even extension of the
>>>> input
>>>> vector is constructed, whose real FFT corresponds to a cosine
>>>> transform.
>>>>
>>>> The motivation behind these two additions is the ability to quickly
>>>> perform
>>>> direct and inverse Chebyshev transforms with `numpy`, without the need
>>>> to
>>>> write scripts that do the necessary (although minor) modifications.
>>>> Chebyshev transforms are used often e.g. in the spectral integration of
>>>> PDE
>>>> problems; thus, I believe having them implemented in `numpy` would be
>>>> useful
>>>> to many people in the community.
>>>>
>>>> I'm happy to get comments/feedback on this feature, and on whether it's
>>>> something more people would be interested in. Also, I'm not entirely
>>>> sure
>>>> what part of this functionality is/isn't present in `scipy`, so that
>>>> the
>>>> two
>>>> `fft` modules remain consistent with one another.
>>>>
>>>
>>> Hi Chris, that's a good question. scipy.fft is a superset of numpy.fft,
>>> and the functionality included in NumPy is really only the basics that
>>> are
>>> needed in many fields. The reason for the duplication stems from way
>>> back
>>> when we had no wheels and SciPy was very hard to install. So I don't
>>> think
>>> there's anything we'd add to numpy.fft at this point.
>>>
>>> As I commented on your PR, it would be useful to add some references and
>>> applications, and then make your proposal on the scipy-dev list.
>>>
>>>
>> Chebfun <https://github.com/chebfun/chebfun> is based around this
>> method,
>> they use series with possibly thousands of terms. Trefethen is a big fan
>> of
>> Chebyshev polynomials.
>>
> 
> I am quite sure that Chebyshev transforms are useful, but it does feel
> like
> something more directly suitable for SciPy than NumPy. The current
> division
> for submodules like numpy.fft/scipy.fft and numpy.linalg/scipy.linalg
> exists for outdated historical reasons, but at this point it is easiest
> for
> users to understand if has SciPy has a strict superset of NumPy's
> functionality here.
> 
> 
> Chuck
>> _______________________________________________
>> NumPy-Discussion mailing list
>> 

> NumPy-Discussion@

>> https://mail.python.org/mailman/listinfo/numpy-discussion
>>
> 
> _______________________________________________
> NumPy-Discussion mailing list

> NumPy-Discussion@

> https://mail.python.org/mailman/listinfo/numpy-discussion

Thank you all for the replies and feedback! I now have a better
understanding of the differences between the NumPy and SciPy FFT modules; it
certainly looks like SciPy would be a more appropriate place for such a
feature. 

> Chebfun is based around this method, they use series with possibly
> thousands of terms. Trefethen is a big fan of Chebyshev polynomials.
> 
> Chuck

Thank you Chuck for your comment; yes I'm aware of Chebfun and of
Trefethen's work in general, it's mostly the work of his and some of his
past grad students that got me interested in Chebyshev methods in the first
place!

Chris




--
Sent from: http://numpy-discussion.10968.n7.nabble.com/


More information about the NumPy-Discussion mailing list