The beginning
Chebfun began in Oxford's Numerical Analysis Group, part of the Oxford University Mathematical Institute. It started during 2002-2005 as a DPhil research investigation by Zachary Battles, a Rhodes Scholar from the USA, under the supervision of Nick Trefethen. (The idea of overloading MATLAB vectors to functions was first put in writing in an email from Trefethen to Battles of 8 December 2001.) This led to Version 1 (.zip) of Chebfun, for smooth functions on the interval $[-1,1]$, described in the 2004 SIAM J. Sci. Comp. paper by Battles and Trefethen and in Battles' 2006 thesis.
Version 2
The second phase of the project begin in the autumn of 2006 with the beginning of research funding from the UK Engineering and Physical Sciences Research Council (EPSRC). First to join the team was DPhil student Ricardo Pachón, from Colombia, who extended Chebfun to piecewise continuous functions and arbitrary intervals. Automatic subdivision and edge detection were added by Pachón and further developed in collaboration with Rodrigo Platte, from Brazil, a post-doc who arrived in October 2007. Then, beginning January 2008, linear operators and solution of differential equations were added to Chebfun, together with integral operators, eigenvalue problems, and exponentials of operators. This was the work of Toby Driscoll, of the University of Delaware, who led the differential equations side of Chebfun for several years afterward. A key collaborator at the beginning of this work was Folkmar Bornemann of the Technical University of Munich. All these developments came together with the release of Chebfun Version 2 in June 2008. To see some of our inspiration, click on the photo below.
Version 3
After the release of Version 2, the project continued to grow. We now had a
logo, a version control system, an expanding test suite, a web site, eight
chapters of a users guide, half a dozen publications, and quite a few users.
Pachón added best approximation by the Remez algorithm and explorations
of the complex plane via rational interpolants. Platte introduced mappings
to make it possible to treat infinite intervals. Nick Hale joined the
Chebfun core team, first as a DPhil student of Trefethen's and then as a
postdoc at the Oxford Center for Collaborative Applied Mathematics. Hale added
Gauss and other quadrature formulas, even for millions of points, and
developed pde15s
for solving nonlinear PDEs (with 1 space and 1 time
dimension) within the Chebfun framework. A capability of handling functions
that diverge to infinity or have other singularities was added by Oxford DPhil
student Mark Richardson, and automatic differentiation and related methods for
solving nonlinear boundary-value problems by DPhil student Ásgeir
Birkisson in collaboration with Driscoll. Pedro Gonnet, Sheehan Olver, Joris
Van Deun and Alex Townsend also became involved. Version 3, a major
enhancement of Version 2 incorporating these and other extensions, was
coordinated by Rodrigo Platte and Nick Hale and released in December 2009.
Version 4
It was now apparent that Chebfun was more than a software package: it was an ongoing and growing project with half a dozen developers, hundreds of programs, and tens of thousands of lines of code. How could we ensure that it would continue to grow and remain available and up-to-date for a long time to help people solve problems? We were committed to the vision of numerical computing with functions and determined to give that vision as secure a future as possible.
Accordingly, in 2010, we decided that Chebfun should become an open-source project. The software had always been freely available, but we decided to go further and take steps to make our procedures more standard. After suitable discussions with our universities we reached agreement on a BSD license. At this stage Chebfun was based in an svn repository at Oxford. Scientifically, the big new features in Version 4 were related to differential equations (led by Driscoll and Hale), the graphical user interface called Chebgui (led by Birkisson and Hale), and a new collection of Examples to serve as templates for all kinds of problems (led by Trefethen).
Version 5
Major new funding for the Chebfun project arrived in 2012 with a five-year Advanced Grant to Trefethen from the European Research Council. This enabled us to bring on board new DPhil students (Anthony Austin, Mohsin Javed, Hadrien Montanelli, Hrothgar) and postdocs (Kuan Xu, Behnam Hashemi, Jared Aurentz, Olivier Sète). In September 2012 the team organised a three day workshop at Oxford entitled "Chebfun and Beyond". The theme was building on the success of Chebfun and reaching towards computing with functions in higher dimensions. Below is a picture of (most of) the team present at the workshop.
The project also acquired a mascot, called Pafnuty:
A message we heard repeatedly at this very stimulating workshop was that to encourage more developers and wider-ranging algorithmic explorations, the Chebfun code had to be redesigned and made more modular. Accordingly, we decided at the end of 2012 to rewrite Chebfun from the ground up, using much more coherent structures and a systematic code review and issue tracking process. This entailed a move to GitHub, initially as a private repository open to the dozen of us intensely involved in the redesign project. The effort, led by Nick Hale, proved enormous! Chebfun Version 5 was released on June 21, 2014, with a web site completely redesigned by Hrothgar.
Approximation Theory and Approximation Practice
Throughout the history of the project, Chebfun has blended the practical and the theoretical. Although it can be used simply as a tool for computing with functions, it also provides an excellent environment for both newcomers and experts to explore issues of approximation theory and associated numerical algorithms such as rootfinding and quadrature. Prompted by this opportunity, in 2011 Trefethen began writing a textbook Approximation Theory and Approximation Practice to present approximation theory, and especially "Chebyshev technology", in a rigorous and historically-grounded way but with everything illustrated numerically. The book was published by SIAM in 2013 and serves as the mathematical foundation of our work.
Chebfun2
In it first decade, Chebfun was restricted to one-dimensional
functions, though we knew we had to move to multiple
dimensions one day. In 2013, it finally happened.
Graduate student Alex Townsend created Chebfun2, enabling
computations with 2D functions defined on rectangles
(explorable e.g. through
cheb.gallery2
). Mathematically, Chebfun2
makes use of low-rank representations, a big theme
in scientific computing nowadays, together
with special algorithms for optimization and rootfinding.
Unifying ODE IVPs and BVPs
Numerical analysts solve boundary-value and initial-value problems
by different algorithms using different
codes, a headache for users. We wanted Chebfun to be as
headache-free as possible, so in 2013 we decided to unify the IVP
and BVP syntaxes at the user level, allowing u = N\f
in both
cases to solve an ODE $N(u) = f$, even though BVPs are treated
by spectral discretizations and IVPs by time-steppers. This was done by
Ásgeir Birkisson during 2014-15,
and it was a significant effort, requiring
the automated conversion of higher-order IVPs to first-order form for
input to Matlab's time-steppers. The result is very satisfying and
has opened the door to a new
book being written by Trefethen, Birkisson, and Driscoll,
Exploring ODEs, which will be Chebfun-enabled on
every page but not a book of algorithms or numerical analysis.
Exploring ODEs will be published as a print book and also
freely available online, probably from late 2017, and we hope
it will become everyone's favorite hands-on guide to ODEs.
Periodic functions, Spherefun, and Diskfun
From the begining of the Chebfun project, we had been aware that
in principle one might write an analogous
"fourfun" or "trigfun" package for periodic functions,
based on trigonometric (=Fourier) rather than Chebyshev representations.
In 2014, Grady Wright of Boise State Oxford visited Oxford for six months and
did exactly this. From this point, the Chebfun constructor
has had a 'trig'
option,
and it has surprised us what interesting doors
this has opened. A big one has been Spherefun, for computing
on spheres, based on periodic representations in two directions,
written by Wright, Townsend, and Heather Wilber and released with Version 5.4 in
May 2016. Diskfun, for computing on a disk, by Wilber,
is on the way.
Time-dependent PDEs
As mentioned earlier, since Version 3
Chebfun has had a command pde15s
for solving time-dependent
PDEs in one space dimension, which can be explored through
chebgui
. With the release of Version 5.4, Chebfun additionally
acquired more specialized state-of-the-art codes spin
/spin2
/spin3
for solving reaction-diffusion and
other stiff PDEs not just in 1D but also in 2D and 3D (the latter after
Chebfun3 is released). These powerful capabilities, introduced by
Hadrien Montanelli, are based on exponential integrator formulas,
the default being the ETDRK4 formula of Cox and Matthews. To get the idea
try spin('kdv')
, spin('ks')
, spin2('gss')
, or
spin2('gl2')
. spinsphere
for stiff PDEs on a sphere is coming soon.
Chebfun3
A 3D extension of Chebfun, written by Behnam Hashemi, will be released in 2016.
Here is a photo of many of the team as of 28 May 2016. Standing: Mikael Slevinsky, Jérémy Fleury, Nick Trefethen, Hrothgar, Anthony Austin, Jared Aurentz, Hadrien Montanelli, Mohsin Javed, Olivier Sète. Kneeling: Yuji Nakatsukasa, Behnam Hashemi, Klaus (Zuoxin) Wang.
The Chebfun project welcomes new users and developers from around the world. For licensing and copyright purposes, we maintain a complete list of Chebfun contributors.