Skip to main content

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. That is, given a vector representing samples of a smooth function, the code returns numerical derivatives, indicating slope, curvature, etc. at the sample points of an interpolation built from the basis functions.

When using the Fourier basis, spectral derivatives require periodic boundaries, but the Chebyshev basis allows arbitrary boundaries, extending the method to a much wider class of functions (albeit via nonuniform sampling).

This package can be useful any time you want to take a derivative numerically, such as for doing PDE simulations. For taking derivatives of noisy data, spectral methods naturally enable global filtering by weighting basis function contributions.

Note these methods are best for situations when you don't know the generating function of your data; if the generator is known, then autodifferentiation tools like JAX are your friend.

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

Metadata

Release files for spectral-derivatives 0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spectral-derivatives 0.9
File Size Uploaded
spectral_derivatives-0.9.tar.gz 6.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for spectral-derivatives 0.9
File Interpreter ABI Platform
spectral_derivatives-0.9-py3-none-any.whl Python 3 none any Details

Total release size: 13.9 kB

Release files / spectral_derivatives-0.9.tar.gz

Download URL spectral_derivatives-0.9.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c128ea140a455067a8b92ffd81ebf74341f3e3d19ec2eeb6f2c291f109657755
BLAKE2b-256 checksum
How to use checksums
50ac7dd518f4629ff2a2d6fd180cf69eddb1a38a5e1fc1a0f3a9818713984506
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release files / spectral_derivatives-0.9-py3-none-any.whl

Download URL spectral_derivatives-0.9-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf620fd66352880a43a9ce31142ce9ee9fe467434129bb00e28d979be85ed154
BLAKE2b-256 checksum
How to use checksums
81b29c66a0953aac8c4f12d3349283dede6ba3c5fe1ef6dff4e5cee44098f9e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release history Release notifications | RSS feed

0.10

2 release files

This release

0.9 This release

2 release files

0.8

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7

2 release files

0.6

2 release files

0.5

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page