Chebfun: numerical computing with functions.
Clone or download
Latest commit 94fbab3 Oct 3, 2018
Permalink
Failed to load latest commit information.
+cheb Tidying the gallery. May 23, 2017
@adchebfun Fix #2087. Apr 11, 2017
@adchebfun2 bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@blockCoeff bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@blockFunction bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@bndfun bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebcolloc Polishing. Aug 15, 2017
@chebcolloc1 bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebcolloc2 bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebdouble Fix chebdouble * chebfun Feb 24, 2017
@chebfun Update to manuscript reference Jun 10, 2018
@chebfun2 Updates to some comments and included copyright notice. Nov 15, 2017
@chebfun2v bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebfun3 added sanity checks for equi flag in chebfun2 and chebfun3 constructors Apr 19, 2017
@chebfun3t bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebfun3v bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebfunpref bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebgui bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebguiController Cast CHEBFUNs to CHEBMATRICES when needed. Aug 21, 2017
@chebguiExporter bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebguiExporterBVP Fix syntax for initial guesses when export systems to m files. Apr 16, 2017
@chebguiExporterEIG bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebguiExporterIVP Fix syntax for initial guesses when export systems to m files. Apr 16, 2017
@chebguiExporterPDE bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebmatrix Fix CHEBMATRIX/PLOT. Closes #2220. Oct 17, 2017
@chebop changes to variable names and help text Oct 3, 2018
@chebop2 Check resolution of BCs in adaptive loop Nov 20, 2017
@cheboppref bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebpref bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebtech warning message when doing line plot with zero valued coefficients May 19, 2017
@chebtech1 bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@chebtech2 bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@classicfun removing simplify2 May 18, 2017
@coeffsDiscretization bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@deltafun bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@diskfun Tidying up the code. May 23, 2017
@diskfunv bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@domain bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@expinteg Missed one file. Oct 18, 2017
@fun bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@functionalBlock bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@imex Rename EXPINT->EXPINTEG. Oct 18, 2017
@linBlock bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@linop Move getBCType to an @chebop/method. Jun 19, 2018
@linopConstraint Support for (pure) integral equations using trigcolloc. Jun 30, 2017
@mapping bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@onefun bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@opDiscretization bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@operatorBlock bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@separableApprox Treat Inf and -Inf the same in the CDR factorization May 21, 2017
@singfun Simplify nearly zero exponents in singfun. Oct 17, 2017
@smoothfun bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@spherefun changes to comment lines only Aug 22, 2017
@spherefunv fixing spelling errors May 29, 2017
@spinop Improve help texts of INITIALIZEMOVIE and add a GRID option in SPINSP… Jun 2, 2017
@spinop2 Improve help texts of INITIALIZEMOVIE and add a GRID option in SPINSP… Jun 2, 2017
@spinop3 Improve help texts of INITIALIZEMOVIE and add a GRID option in SPINSP… Jun 2, 2017
@spinoperator Rename EXPINT->EXPINTEG. Oct 18, 2017
@spinopsphere Improve help texts of INITIALIZEMOVIE and add a GRID option in SPINSP… Jun 2, 2017
@spinpref Rename EXPINT->EXPINTEG. Oct 18, 2017
@spinpref2 Rename EXPINT->EXPINTEG. Oct 18, 2017
@spinpref3 Rename EXPINT->EXPINTEG. Oct 18, 2017
@spinpreference Improve help texts of INITIALIZEMOVIE and add a GRID option in SPINSP… Jun 2, 2017
@spinprefsphere Switch to no grid for default SPINSPHERE movie. Jun 2, 2017
@spinscheme Rename EXPINT->EXPINTEG. Oct 18, 2017
@stringParser bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@treeVar Add missing sum method for treeVar (throws meaningful error). Aug 29, 2017
@trigcolloc Polishing. Aug 15, 2017
@trigspec bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@trigtech Fixed bug in the evaluation of a complex, constant trigtech at multip… Jul 11, 2017
@ultraS bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@unbndfun bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
@valsDiscretization bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebguiDemos Fix Lane-Emden to use a global solver. Dec 2, 2015
tests Enforce continuity constraints in chebop/matrix. Oct 2, 2018
.gitignore Add entry for .DS_Store files to .gitignore. Jun 9, 2014
ATAPformats.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
CONTRIBUTING.md Add bare-bones CONTRIBUTING.md. Nov 10, 2015
CoastData.mat Minor fix to get the Coast line data file to load. Feb 8, 2016
Contents.m Bump up version number for new release Jun 2, 2017
LICENSE.txt bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
ODEformats.m changing a few colors Aug 23, 2017
README.md Update Contents.m with new revision number. Aug 29, 2014
aaa.m changes to AAA Lawson Jun 30, 2018
abstractQR.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
bary.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
baryWeights.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
barymat.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
besselroots.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
blowup.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
cheb2jac.m Small fix in cheb2jac. Dec 12, 2017
cheb2leg.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
cheb2logo.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebcoeffs2chebvals.m Allow conversion to/from 1st-kind CHebyshev points. Jul 14, 2017
chebcoeffs2legcoeffs.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebcoeffs2legvals.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebfun2eps.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebfun3eps.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebfuneps.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebfunroot.m Fix typo. Jun 16, 2014
chebguiEdit.fig Renaming chebguiedit to chebguiEdit. Jun 3, 2014
chebguiEdit.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebguiWindow.fig Renaming of menu options to reflect new cheboppref. Jul 7, 2015
chebguiWindow.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebkind.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
cheblogo.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebpoly.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebpolyplot.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebpolyval.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebpolyvalm.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebpts.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebpts2.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebpts3.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebsnake.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebsnake2.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebtest.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
chebvals2chebcoeffs.m Minor typos in comments Aug 29, 2017
chebvals2chebvals.m Add chebvals2chebvals to convert between first and second kind Chebys… Jul 14, 2017
chebvals2legcoeffs.m Allow conversion to/from 1st-kind CHebyshev points. Jul 14, 2017
chebvals2legvals.m Small fix to chebvals2legvals. Jan 17, 2018
chebvar.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
cumsummat.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
diffmat.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
diffrow.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
explain.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
fov.m Remove trigtech flag Jul 6, 2018
gammaratio.m Some tidying. Sep 4, 2018
gpr.m gpr_test revision for point generation Dec 1, 2017
gridsample.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
hermpoly.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
hermpts.m Minor typos in comments Aug 29, 2017
intmat.m new commands diffrow.m, intmat.m, introw.m gridsample.m. Aug 25, 2016
introw.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
isSubset.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
jac2cheb.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
jac2jac.m Add ultra2ultra. Fix some small bugs in jac2jac (n=0,1 cases.) Jul 13, 2017
jacpoly.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
jacpts.m some cleanup in help text May 17, 2017
lagpoly.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
lagpts.m Minor typos in comments Aug 29, 2017
lebesgue.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
leg2cheb.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
legcoeffs2chebcoeffs.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
legcoeffs2chebvals.m Allow conversion to/from 1st-kind CHebyshev points. Jul 14, 2017
legcoeffs2legvals.m fixing a few typos Apr 28, 2017
legpoly.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
legpts.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
legvals2chebcoeffs.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
legvals2chebvals.m Minor typos in comments Aug 29, 2017
legvals2legcoeffs.m fixing a few typos Apr 28, 2017
lobpts.m fixing a few spurious capital letters May 17, 2017
minimax.m fix for issue #2244 Feb 6, 2018
outerProd.m correct outerProd and chebfun2eig Sep 30, 2016
padeapprox.m fix bug in padeapprox for complex inputs Jul 1, 2018
paduapts.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
pdeset.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
prz.m Refactored out prz and reval May 28, 2018
quasimatrix.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
radaupts.m fixing a few spurious capital letters May 17, 2017
randnfun.m fixing a typo in a comment Nov 25, 2017
randnfun2.m changes in comments for random functions Nov 25, 2017
randnfundisk.m changes in comments for random functions Nov 25, 2017
randnfunold fixes for large or infinite DT Apr 17, 2017
randnfunsphere.m changes in comments for random functions Nov 25, 2017
ratinterp.m Properly build q for arbitrary points when nu = 0 in ratinterp(). Feb 16, 2018
resampling.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
reval.m Refactored out prz and reval May 28, 2018
scribble.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
scribble2.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
seedRNG.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
sing.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
spin.m Rename EXPINT->EXPINTEG. Oct 18, 2017
spin2.m Rename EXPINT->EXPINTEG. Oct 18, 2017
spin3.m Rename EXPINT->EXPINTEG. Oct 18, 2017
spincomp.m Improve doc of SPINCOMP. May 31, 2017
spinsphere.m Minor changes in parsing. Jun 11, 2017
splitting.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
standardChop.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
trigBary.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
trigBaryWeights.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
trigdouble.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
trigpoly.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
trigpts.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
trigratinterp.m removing a bug and extensive testing for both the cases m < n, m >= n Jan 9, 2017
ultra2ultra.m Correct help text. Jul 14, 2017
ultracoeffs.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
ultrapoly.m bumping up the year to 2017 before v5.6.0 release Dec 16, 2016
ultrapts.m Update ultrapts.m Aug 10, 2018

README.md

About

Chebfun is an open-source software system for numerical computing with functions. The mathematical basis of Chebfun is piecewise polynomial interpolation implemented with what we call “Chebyshev technology”. The foundations are described, with Chebfun examples, in the book Approximation Theory and Approximation Practice. Chebfun has extensive capabilities for dealing with linear and nonlinear differential and integral operators, and it also includes continuous analogues of linear algebra notions like QR and singular value decomposition. The Chebfun2 extension works with functions of two variables defined on a rectangle in the x-y plane. To get a sense of the breadth and power of Chebfun, a great place to start is by looking at our Examples.

Installation and requirements

Chebfun is compatible with MATLAB 7.8 (R2009a) and later.

To install, you can either clone the directory with Git or download a .zip file. Note that a call to clear classes is required if you had a previous version of Chebfun installed.

Option 1: Download .zip file

Download a .zip of Chebfun from

After unzipping, you will need to add Chebfun to the MATLAB path. You can do this either (a) by typing

addpath(chebfunroot), savepath

where chebfunroot is the path to the unzipped directory, (b) by selecting the chebfun directory with the pathtool command, or (c) though the File > Set Path... dialog from the MATLAB menubar.

Option 2: Clone with Git

To clone the Chebfun repository, first navigate in a terminal to where you want the repository cloned, then type

git clone https://github.com/chebfun/chebfun.git

To use Chebfun in MATLAB, you will need to add the chebfun directory to the MATLAB path as above.

Getting started

We recommend taking a look at the Chebfun Guide and the Examples collection. The Guide is an in-depth tour of Chebfun's mathematical capabilities. The Examples, which number well over one hundred, illustrate everything from rootfinding to optimization to nonlinear differential equations and vector calculus. Many users use the Examples as templates for their own problems.

To get a taste of what computing with Chebfun is like, type

x = chebfun('x');

and start playing. The variable x is a chebfun and can be manipulated in a way that feels symbolic, although everything Chebfun does is numeric. So try, for instance:

f = sin(12*x).*exp(-x);         % A function on [-1, 1]
g = max(f, 1./(x+2));           % The max of f and 1./(x+2)
plot(g)                         % A function with discontinuous derivative
sum(g)                          % The integral of g
plot(diff(g))                   % The derivative of g
h = g + x - .8;                 % A function with several roots in [-1, 1]
rr = roots(h);                  % Compute the roots of h
plot(h, 'k', rr, h(rr), 'ro')   % Plot h and its roots

License

See LICENSE.txt for Chebfun's licensing information.