Skip to content

Python code to take derivatives by spectral methods using the Chebyshev and Fourier bases. Useful for PDEs and more.

License

Notifications You must be signed in to change notification settings

pavelkomarov/spectral-derivatives

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spectral Derivatives

Build Status Coverage Status

Documentation, How it works.

This repository is home to Python code that can take spectral derivatives with the Chebyshev basis or the Fourier basis, based on some pretty elegant, deep math. It's useful any time you want to take a derivative numerically, such as for doing PDE simulations.

Installation and Usage

The package is a single module containing derivative functions. To install, execute:

python3 -m pip install spectral-derivatives

or from the source code

python3 -m pip install .

You should now be able to

>>> from specderiv import *
>>> import numpy as np
>>>
>>> x_n = np.cos(np.arange(21) * np.pi / 20) # cosine-spaced, includes last point
>>> y_n = np.sin(x_n) # can be periodic or aperiodic on domain [a, b]
>>> dy_n = cheb_deriv(y_n, x_n, 1)
>>>
>>> th_n = np.arange(20) * 2*np.pi / 20 # equispaced, excludes last point
>>> y_n = np.sin(th_n) # must be periodic on domain [a, b)
>>> dy_n = fourier_deriv(y_n, th_n, 1)

For further usage examples, including in higher dimension, see the Jupyter notebooks: Chebyshev and Fourier.

Note that for accurate results you'll need to use equispaced samples on an open periodic interval for fourier and cosine-spaced points for chebyshev. For examples which use arbitrary domains, see this notebook.

References

  1. Trefethen, N., 2000, Spectral Methods in Matlab, https://epubs.siam.org/doi/epdf/10.1137/1.9780898719598.ch8
  2. Johnson, S., 2011, Notes on FFT-based differentiation, https://math.mit.edu/~stevenj/fft-deriv.pdf
  3. Kutz, J.N., 2023, Data-Driven Modeling & Scientific Computation, Ch. 11, https://faculty.washington.edu/kutz/kutz_book_v2.pdf

About

Python code to take derivatives by spectral methods using the Chebyshev and Fourier bases. Useful for PDEs and more.

Resources

License

Stars

Watchers

Forks

Packages

No packages published