Introduction
This tutorial should take at most 3-4 hours to fully
work through. You can read it in HTML or PDF versions, or from the
Sage notebook click Help, then click Tutorial to interactively
work through the tutorial from within Sage.
Though much of Sage is implemented using Python, no Python
background is needed to read this tutorial. You will want to learn
Python (a very fun language!) at some point, and there are many
excellent free resources for doing so including [PyT] and [Dive].
If you just want to quickly try out Sage, this tutorial is the
place to start. For example:
sage: 2 + 2
4
sage: factor(-2007)
-1 * 3^2 * 223
sage: A = matrix(4,4, range(16)); A
[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
sage: factor(A.charpoly())
x^2 * (x^2 - 30*x - 80)
sage: m = matrix(ZZ,2, range(4))
sage: m[0,0] = m[0,0] - 3
sage: m
[-3 1]
[ 2 3]
sage: E = EllipticCurve([1,2,3,4,5]);
sage: E
Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5
over Rational Field
sage: E.anlist(10)
[0, 1, 1, 0, -1, -3, 0, -1, -3, -3, -3]
sage: E.rank()
1
sage: k = 1/(sqrt(3)*I + 3/4 + sqrt(73)*5/9); k
1/(I*sqrt(3) + 5/9*sqrt(73) + 3/4)
sage: N(k)
0.165495678130644 - 0.0521492082074256*I
sage: N(k,30) # 30 "bits"
0.16549568 - 0.052149208*I
sage: latex(k)
\frac{1}{I \, \sqrt{3} + \frac{5}{9} \, \sqrt{73} + \frac{3}{4}}
Installation
If you do not have Sage installed on a computer and just
want to try some commands, use online at http://www.sagenb.org.
See the Sage Installation Guide in the documentation section of the
main Sage webpage [Sage] for instructions on installing Sage on your
computer. Here we merely make two comments.
- The Sage download file comes with “batteries included”. In other
words, although Sage uses Python, IPython, PARI, GAP, Singular,
Maxima, NTL, GMP, and so on, you do not need to install them
separately as they are included with the Sage distribution.
However, to use certain Sage features, e.g., Macaulay or KASH, you must
install the relevant optional package or at least have the relevant
programs installed on your computer already. Macaulay and KASH are
Sage packages (for a list of available optional packages, type
sage -optional, or browse the “Download” page on the Sage
website).
- The pre-compiled binary version of Sage (found on the Sage web
site) may be easier and quicker to install than the source code
version. Just unpack the file and run sage.
Ways to Use Sage
You can use Sage in several ways.
Longterm Goals for Sage
- Useful: Sage’s intended audience is mathematics students
(from high school to graduate school), teachers, and research
mathematicians. The aim is to provide software that can be used to
explore and experiment with mathematical constructions in algebra,
geometry, number theory, calculus, numerical computation, etc. Sage
helps make it easier to interactively experiment with mathematical
objects.
- Efficient: Be fast. Sage uses highly-optimized mature software
like GMP, PARI, GAP, and NTL, and so is very fast at certain
operations.
- Free and open source: The source code must be freely
available and readable, so users can understand what the system is
really doing and more easily extend it. Just as mathematicians gain
a deeper understanding of a theorem by carefully reading or at
least skimming the proof, people who do computations should be able
to understand how the calculations work by reading documented
source code. If you use Sage to do computations in a paper you publish,
you can rest assured that your readers will always have free access
to Sage and all its source code, and you are even allowed to archive and
re-distribute the version of Sage you used.
- Easy to compile: Sage should be easy to compile from source
for Linux, OS X and Windows users. This provides more flexibility
for users to modify the system.
- Cooperation: Provide robust interfaces to most other
computer algebra systems, including PARI, GAP, Singular, Maxima,
KASH, Magma, Maple, and Mathematica. Sage is meant to unify and extend
existing math software.
- Well documented: Tutorial, programming guide, reference
manual, and how-to, with numerous examples and discussion of
background mathematics.
- Extensible: Be able to define new data types or derive from
built-in types, and use code written in a range of languages.
- User friendly: It should be easy to understand what
functionality is provided for a given object and to view
documentation and source code. Also attain a high level of user
support.