Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Python package for numerical derivatives and partial differential equations in any number of dimensions.
| Date | Stars |
|---|---|
| 2026-07-24 | 508 |
| 2026-07-25 | 508 |
| 2026-07-28 | 508 |
| 2026-07-30 | 508 |
| 2026-08-08 | 508 |
| 2026-08-25 | 509 |
| 2026-09-20 | 509 |
Today
— stars today
This week
— stars this week
This month
+1 stars this month
Momentum
0.0
growth rate 0.00%/day
# <img src="docs/assets/findiff_logo.png" width="100px"> findiff
[](https://img.shields.io/pypi/v/findiff.png?style=flat-square&color=brightgreen)


[](https://maroba.github.io/findiff/)
[]()
[](https://pepy.tech/project/findiff)
A Python package for finite difference numerical derivatives and partial differential equations in
any number of dimensions.
## Main Features
* Differentiate arrays of any number of dimensions along any axis with any desired accuracy order
* Accurate treatment of grid boundary
* Can handle uniform and non-uniform grids
* Can handle arbitrary linear combinations of derivatives with constant and variable coefficients
* Fully vectorized for speed
* **GPU / JAX / CuPy support** — pass JAX or CuPy arrays directly, combine with `jax.jit` for acceleration
* Standard operators from vector calculus: gradient, divergence, curl, Laplacian
* Matrix representations of arbitrary linear differential operators
* Solve partial differential equations with Dirichlet, Neumann or Robin boundary conditions
* Solve eigenvalue problems (e.g. Schrodinger equation, vibration modes)
* Direct and iterative solvers with preconditioner support
* Calculate raw finite difference coefficients for any derivative and accuracy order
* Generate differential operators for arbitrary stencils
* Symbolic representation of finite difference schemes
* Estimate truncation error by comparing accuracy orders
* Solve time-dependent PDEs via Method of Lines (Forward Euler, RK4, Backward Euler, Crank-Nicolson)
* **New in version 0.11**: More comfortable API (keeping the old API available)
* **New in version 0.12**: Periodic boundary conditions for differential operators and PDEs.
* **New in version 0.13**: Compact (implicit) finite differences with spectral-like resolution.
* **New in version 0.14**: Error estimation via accuracy order comparison.
* **New in version 0.15**: Time-dependent PDE solving via Method of Lines. GPU / JAX / CuPy backend support for operator application. (to be released)
## Installation
```
pip install --upgrade findiff
```
For **GPU / JAX** support, install JAX separately (findiff detects it automatically):
```
pip install jax # CPU-only
pip install jax[cuda12] # NVIDIA GPU
```
For **CuPy** support:
```
pip install cupy-cuda12x
```
## Documentation and Examples
You can find the documentation of the code including examples of application at https://maroba.github.io/findiff/.
## Taking Derivatives
*findiff* allows to easily define derivative operators that you can apply to *numpy* arrays of
any dimension. JAX and CuPy arrays work too — see [GPU / JAX Support](#gpu--jax-support) below.
Consider the simple 1D case of a equidistant grid
with a first derivative $\displaystyle \frac{\partial}{\partial x}$ along the only axis (0):
```python
import numpy as np
from findiff import Diff
# define the grid:
x = np.linspace(0, 1, 100)
# the array to differentiate:
f = np.sin(x) # as an example
# Define the derivative:
d_dx = Diff(0, x[1] - x[0])
# Apply it:
df_dx = d_dx(f)
```
Similarly, you can define partial derivatives along other axes, for example, if $z$ is the 2-axis, we can write
$\frac{\partial}{\partial z}$ as:
```python
Diff(2, dz)
```
`Diff` always creates a first derivative. For higher derivatives, you simply exponentiate them, for example for $\frac{\partial^2}{\partial_x^2}$
```
d2_dx2 = Diff(0, dx)**2
```
and apply it as before.
You can also define more general differential operExcerpt of 14,882 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:4960fd49e4c2adac, topic:scientific-computing