Skip to content

Feature Matrix: Chebfun ↔ ChebPy

This page is a side-by-side reference of MATLAB Chebfun features and their status in ChebPy. ChebPy adapts a focused subset of Chebfun's univariate machinery to Python; many of Chebfun's larger subsystems (2D/3D, ODEs, chebops, GUI, etc.) are out of scope.

Legend: βœ… supported Β· 🟑 partial / different shape Β· ❌ not implemented.

Core representation

Capability Chebfun (MATLAB) ChebPy Notes
Smooth functions on \([-1, 1]\) via Chebyshev-T expansion chebtech2 Chebtech Chebyshev points of the second kind.
Functions on bounded \([a, b]\) bndfun Bndfun Affine wrap of Chebtech.
Piecewise (multi-domain) functions chebfun Chebfun Multi-piece domains supported.
Periodic (trigonometric) functions chebfun(..., 'trig') / trigtech trigfun / Trigtech Fourier-based, equispaced grid.
Infinite / semi-infinite intervals chebfun(..., [-Inf, Inf]) CompactFun 🟑 ChebPy uses an explicit CompactFun wrapper rather than unbndfun; same compactification idea.
Endpoint singularities chebfun(..., 'blowup', 'on') / singfun Singfun 🟑 ChebPy uses the Adcock–Richardson slit-strip map (no exponent prescription needed).
Quasimatrices chebfun array (column quasimatrix) Quasimatrix Continuous columns; QR / SVD / \.
User preferences chebfunpref UserPreferences Tolerance, max length, splitting.

Construction

Capability Chebfun ChebPy Notes
Adaptive construction from a callable chebfun(@f) chebfun(f)
Fixed-length construction chebfun(@f, n) chebfun(f, n=n)
Construction from coefficients chebfun(coeffs, 'coeffs') Chebtech.initcoeffs Lower-level entry point.
Construction on a domain chebfun(@f, [a, b]) chebfun(f, [a, b])
Splitting (automatic breakpoints) 'splitting', 'on' breakpoints passed explicitly 🟑 ChebPy currently expects breakpoints to be supplied by the user.
Identity / linear function chebfun('x') Chebfun.initidentity
Constant function chebfun(c) Chebfun.initconst / pwc pwc for piecewise constants.
Equispaced data input chebfun(values, 'equi') ❌ Use polyfit from samples instead.

Arithmetic and elementary operations

Capability Chebfun ChebPy Notes
+, -, *, /, ** βœ… βœ… Operator overloads on Chebfun.
Unary -, abs, sign βœ… βœ…
floor, ceil βœ… βœ…
min(f, g), max(f, g) βœ… βœ… f.minimum(g), f.maximum(g).
Composition f(g) βœ… βœ… __call__ accepts a Chebfun.
NumPy ufuncs (sin, exp, log, …) n/a βœ… Via np.<ufunc>(f).
Complex-valued functions βœ… βœ… f.real, f.imag, f.iscomplex.
restrict to a sub-interval βœ… βœ…
Translate (shift domain) βœ… βœ… f.translate(d).
Vector-valued (array-valued) chebfuns βœ… 🟑 Use Quasimatrix for column collections.

Calculus

Capability Chebfun ChebPy Notes
Definite integral sum(f) f.sum()
Indefinite integral cumsum(f) f.cumsum()
Derivative diff(f) f.diff() Higher-order via repeated calls.
Norms (\(L^2\), \(L^1\), \(L^\infty\)) norm(f, p) f.norm(p)
Inner product f' * g f.dot(g)
Convolution conv(f, g) f.conv(g) Hale–Townsend Legendre convolution.
Cross-correlation xcorr ❌
Antiderivative with constant cumsum(f) + c same

Rootfinding and extrema

Capability Chebfun ChebPy Notes
Real roots in domain roots(f) f.roots() Colleague-matrix recursion.
Complex roots roots(f, 'complex') ❌
Maximum / minimum value & location max(f), min(f) f.maximum(), f.minimum()
argmax / argmin βœ… 🟑 Returned together with the extreme value.

Plotting

Capability Chebfun ChebPy Notes
Plot the function plot(f) f.plot() matplotlib backend.
Plot Chebyshev coefficients plotcoeffs(f) f.plotcoeffs()
Domain / breakpoint markers βœ… βœ…
3D / surface plots plot3, surf ❌ (No 2D representation in ChebPy.)

Linear algebra (quasimatrices)

Capability Chebfun ChebPy Notes
Quasimatrix construction column array of chebfuns Quasimatrix([f1, f2, …])
QR factorisation qr(A) Q, R = A.qr() Householder triangularisation.
SVD svd(A) U, S, V = A.svd()
Polynomial least-squares fit polyfit polyfit Top-level helper.
Backslash A \ b βœ… 🟑 Use SVD/QR-based solve for now.

Gaussian process regression

Capability Chebfun ChebPy Notes
GP posterior as a function object n/a gpr(...) returns a Chebfun ChebPy-only; no Chebfun analogue.

Out of scope (Chebfun features not in ChebPy)

Chebfun feature Status in ChebPy
Linear operators / chebop ❌
ODE BVP / IVP solvers (solvebvp, bvp4c glue) ❌
Time-dependent PDEs (pde15s, spin, spin2, spin3, spinsphere) ❌
Automatic differentiation ❌
Chebgui graphical interface ❌
2D functions on rectangles (Chebfun2) ❌
3D functions (Chebfun3) ❌
Spherical / polar geometries (Spherefun, Diskfun) ❌
Rational approximation (aaa, minimax, remez, cf, chebpade, padeapprox, ratinterp) ❌
Equispaced-data construction ('equi' flag) ❌
CarathΓ©odory–FΓ©jer (cf) ❌
dirac / distributional features ❌
Lebesgue functions / constants (lebesgue) ❌
Examples gallery (cheb.gallery) ❌

See also

  • The User Guide for narrative documentation of the features that are implemented.
  • The About page for the history of Chebfun and the contributors whose work ChebPy adapts.
  • The API Reference for the full Python API.
  • chebfun.org for the canonical MATLAB Chebfun project.