If you have a Chebfun-related question which doesn't appear on this list, please ask us at discuss@chebfun.org.
- Q. How do I get Chebfun?
- A. Go to the download section, download Chebfun (less than 2MB), put it in your Matlab path (the easiest way to do this is probably using the command "pathtool"), and you're ready to go. We recommend running "chebtest" first to get the package warmed up (i.e. loaded into your machine's cache) and to make sure it is running properly.
- Q. What version of Matlab do I need?
- A. Chebfun is compatable with Matlab Versions 7.4 (R2007a) and higher.
- Q. How do I learn Chebfun?
- A. Take a look at the Chebfun Examples or the Chebfun Guide, or just type x=chebfun('x') and start playing with commands like f=exp(x).*sin(20*x), plot(f), roots(f), max(f), g=exp(f), h=abs(f), j=round(g), k=max(g,h)!
- Q. What about 2D or 3D?
- A. We have a project called "Chebfun2", led by Alex Townsend, that extends
Chebfun-like computations to functions defined on rectangles.
We believe this is comparable to the power and speed of Chebfun
in 1D for many cases. We are considering a
Chebfun in 3D.
- Q. Why is Chebfun based on Matlab rather than a non-commercial platform like C, Python, or Octave?
- A. The Chebfun concept comes straight from Matlab -- it's all about overloading Matlab commands for functions instead of vectors. And certainly most of our users at present are people who already use Matlab, who can get start using Chebfun the minute they see it. At the same time, we recognize that other platforms for Chebfun may be worth exploring.
- Q. How do I get involved?
- A. We are always glad to receive comments at discuss@chebfun.org, and we usually respond quickly to questions. We are especially eager to receive drafts of proposed new Examples for inclusion in our collection! Furthermore, since the release of V4.0 in March 2011, Chebfun has been an open-source project. If you're interested in helping to develop Chebfun, please take a look at the Developer Zone.
- Q: What is a chebfun?
- A: A chebfun is a Matlab object that behaves syntactically
like a Matlab vector and mathematically like a function of
a real variable defined on an interval [a,b]. See Chapter 1
of the Chebfun Guide.
- Q: What is a fun?
- A: A chebfun consists of one or more pieces, each of
which is represented by a polynomial interpolant in
Chebyshev points. Each of these pieces is called a fun.
- Q: What is a chebop?
- A: A chebop is an object in the Chebfun system that behaves
like a linear or nonlinear operator acting on chebfuns.
For example, if f is a chebfun corresponding to sin(x) on the interval
[a,b] and L is a chebop corresponding to the differentiation operator
on [a,b], then Lf or L(f) is a chebfun corresponding to cos(x)
on [a,b]. See Chapters 7 and 10 of the Chebfun Guide.
- Q: What's the difference between Chebfun and chebfun?
- A: Chebfun with a capital C is the name of the project, and
of the software system, whereas chebfun with a lower-case c is
the name for an object in this system (namely a function defined
on an interval).
- Q: What's the difference between sin(chebfun('x')) and chebfun('sin(x)')?
- A: Any call of chebfun(f) evaluates f numerically at many points in
order to determine an accurate polynomial representation of it. Once a
chebfun is created, functions like sin() can be applied to it to
create a functional composition, which is then given a polynomial
representation. Most of the time, you would not expect much of a difference between
starting with polynomials and composing, or finding a polynomial
directly for the composed expression. However, because the underlying
methods are numerical rather than symbolic, the two techniques are not
identical. An extreme example would be sin(x).*exp(-x) if x is a
chebfun defined on the interval [0,Inf]. This fails because the first
step is to represent sin(x) by a mapped polynomial on an infinite domain,
which is impossible. Yet chebfun('sin(x).*exp(-x)') would be fine on
the same domain, because the only polynomial representation requested
is for a function that decays rapidly.