# Sage

Sage is an open source project founded by a math graduate/professor which they say is designed to be a "viable free open source alternative to Magma, Maple, Mathematica and Matlab". After using it for a while, I have to say it even goes beyond that. The project website is [1]

This is what it is in a nutshell: they took about 100 different open-source libraries related to math, science, and computing, then made it so they all worked together, and put a common python interface in which ties it all together. Then what they did was create a notebook interface, which is used in a web browser, based on ajax. The web interface allows one to create an account on the server and upload and save worksheets there. (those who have used mathematica will know what a notebook is. It's like a hybrid between a document and code) There's even a free server where anyone can sign up, browse examples, and start running code within minutes: [2]

If you're running windows you download a big file and you have to load that into virtual box. Then you use your web browser to access the server on local host. You can also use the command line in the virtual machine if you want. If you're running linux, you just download and install locally. You can use a local web browser, or anyone on the network can use it.

Here's a blogger's review from a few years ago: [3]

## Important Sage libraries for engineering work

**Overview**

Sage brings together a large number of open-source math and science libraries together in a common python enviroment. When getting started, and when doing engineering work, it is important to identify the key libraries which will be used the majority of the time.

**Browsing functions within Sage**

For the libraries below, you can browse the functions within Sage in the following way. Type "import library_name" then type "library_name." and press tab.

**Numerical analysis**

The following libraries provide matlab-like functionality, and should be looked at when analyzing data:

- numpy for lower level numerical operations, such as arrays, reading files, some statistics
- scipy for higher-level functions such as integration, signal processing, optimization. There is some overlap with numpy
- matplotlib for plotting and visualizing data
- pylab brings together the above libraries into one library

**Plotting**

If plotting pure functions such as polynomials or transcedental functions, Sage's built-in plotting functions are good for both 2D and 3D plots. However, if plotting discrete data points, I recommend going with matplotlib. Using it is more of a learning curve, but at this point Sage's data plotting capabilities are limited. This is probably because it is still being developed by mathematicians currently.

- sage for pure functions with the "plot" command. "list_plot" can be used for data. It uses matplotlib internally.
- matplotlib for data

**Symbolic algebra**

Sage itself can be used for symbolic computer algebra, so you probably don't need to import a library. It's functions use maxima and sympy under the hood. Look at the documentation on sagemath.org for symbolic operations.

- sage, which uses maxima or sympy

**Programming**

Look up programming with python 2.6.4

## Resources

- http://sagemath.org/
- http://sagenb.org/
- http://ask.sagemath.org/questions/
- http://groups.google.com/group/sage-support
- http://www.sagemath.org/help-irc.html