For over a decade I have primarily done research in number theory that often involves computation, mainly using Magma. In 2004 I realized that it was stupid for me to continue building my work on Magma because Magma is proprietary, the development model is closed, Magma is expensive which is bad for students, and the language itself lacked many features (e.g., user defined classes) that I had requested repeatedly for over 5 years. Thus to continue to use only Magma unacceptably limited my potential in both research and education.

Having used Magma for many years, I simply could not switch to an existing open source system. The only serious free open source software for number theory is PARI, whose capabilities are far behind that of Magma in numerous critical areas of interest to me, including exact linear algebra, commutative algebra, and algebraic curves. And no other free system--GAP, Singular, Axiom, Maxima, Macaulay 2, etc.--even comes close in all these areas. In fact, after a decade of patiently waiting, I doubt they ever will.

Magma is the result of several decades of hard work by extremely talented fulltime mathematicians and programmers such as John Cannon, Allan Steel and Claus Fieker. I've worked with them and they are simply amazing. The situation seemed hopeless. If I had only never used Magma and tasted of the forbidden fruit...

In 2004, sure that there was no possible way to solve this problem, and driven by nothing but pure blind compulsion, I started the Sage project as my little free open source alternative to Magma, and spent an insane amount of time working on it even though I was utterly convinced that there was no hope of Sage ever succeeding. The first version of Sage consisted of the Python interpreter and a few scripts for doing number theory.

After a year, some of my first feedback from the computer algebra research community came from Richard Fateman on December 6, 2005 when he posted his opinion of the Sage project to sci.math.symbolic: ``By avoiding applications (say, to engineering design, finance, education, scientific visualization, etc etc) the activity is essentially doomed. Why? Government funding for people or projects will be a small percentage of the funding for pure mathematics. That's not much. And the future is pretty grim.''

Honestly, I believed he was right, but I just couldn't stop myself from working on Sage. It is now nearly three years later and the Sage project currently has around 100 active developers and 10,000 users. In November 2007, Sage won first place in the scientific category of the Trophees du Libre, which is a major international free software competition. Sage is funded by the US National Science Foundation, the US Department of Defense, the University of Washington, Microsoft Research, Google and private donations. Sage has new releases every two weeks, and typically 30--40 people contribute to each release. All new code contributions to Sage are peer reviewed, and every new function must be documented with tests that illustrate its usage. The docs have over 50,000 lines of input examples.

So what is Sage and what makes it unique? Sage is:

- a
**huge distribution**of free open source mathematical software that is surprisingly easy to build from source, - a
**set of interfaces**to most other mathematical software systems, and - a
**new Python library**that fills in huge gaps in other open source math software included in Sage, unifies everything offering a smooth user experience, and provides a modern web-based graphical notebook interface with math typesetting and integrated 2D and 3D graphics.

Sage is the first large general purpose mathematics software system that uses a mainstream programing language (Python) as the end user language. Python--easily one of the world's top 10 programming languages--is a powerful and beautiful modern interpreted programming language with an organized and professional developer base and millions of users. Sage also makes extensive use of a Python-to-C compiler called Cython. Thus Sage has a tremendous advantage over every other general purpose computer algebra system, since Python has thousands of third party libraries, sophisticated support for object serialization, databases, distributed programming, and a major following in scientific computing.

Instead of reinventing the wheel, Sage combines many of the best existing open source systems that have been developed over the last 40 years (about million lines of code) with about 250,000 lines of new code. Every single copy of Sage includes all of the following software (and much much more):

- Algebra and calculus: Maxima, SymPy
- High precision arithmetic: GMP, MPFR, MPFI, quaddouble, Givaro
- Commutative algebra: Singular
- Number theory: PARI, NTL, mwrank, ECM, FLINTQS, GMP-ECM
- Exact linear algebra: LinBox, IML
- Group theory: GAP
- Scientific computation: GSL, SciPy, NumPy, cvxopt
- Statistical computation: R
- Graphics (2d and 3d): Matplotlib, Tachyon3d, Jmol

Curious? If you want a viable open source alternative to Magma, Maple, Mathematica and Matlab, drop everything, try out Sage now and become a Sage developer.

http://www.sagemath.org

I've used SAGE, but it lacks the only feature I care about on Matlab: Simulink.

ReplyDeleteMatlab is great, because it's focused on the real industry: Control Systems, bind with MS Excel and Databases, LabView bind, compiler, data acquisition modules, video acquisition,and so on.

It's true Sage it's a great software, but if it doesn't implement what the average engineer uses on their work, it's going to be a classroom toy or research utility forever, and will never grow as Matlab.

Take as example R and SciLab, both cares about what the Engineers need, and both of them are very successfull in the industry.

Hey! Sebastian - there's this new cool thing called 'open source' - it allows you fix whatever bugs you by and for your self.

ReplyDeletedo you really think I have time to write my own implementation of simulink on Sage?, and of course, once I'm done, I'll rely on it for simulating that controller for that inexpensive $2M reactor I'm working on.

ReplyDeleteBy the way, do you know what is Simulink?

I think SAGE is one of the best free software I've ever seen. I'm an italian guy and I study math, I discovered this software about 6 months ago, writing my thesis over ECC, ECPP & related algorithms, so you can easily understand why I think that SAGE is great. I don't know if, today, it can be a complete alternative to Mathematica, Matlab, etc., but I costantly see new releases, with amazing improvements (always with a complete documentation). I love using my browser as GUI, the use of Python as end-user language, and all the things you mentioned...what else?

ReplyDeleteI really believe in this project.

I've used Matlab for a long time now. I can see where Sage would be of great use, especially with making compiled code easily with Cython.

ReplyDeleteMatlab is a bit porky with small, tight inner loops that can't be vectorised, so this can potentially of great help!

And yes, simulink analogue would be nice too. Of course you can just fork out the money and buy it, but writing it yourself and you might also learn something (and profit!).

I'm glad to hear that you've found a project that you feel comfortable further developing. No doubt your input will help bring Sage closer to your ideals and thus distribute any educational and / or research benefits to the global community (I imagine that many - like you used to - are waiting for them). While I realize that it might not mean much, please accept my gratitude and respect for doing work we will all benefit from.

ReplyDeleteFYI, good showmedo tutorial here:

ReplyDeletehere

Hey Sebastian,

ReplyDeleteYou do make excellent points both about the lack of features you require in SAGE and the unrealistic expectation that you should fix them yourself just because the system is open source.

However you do point out one interesting problem when you ask the other poster if they know what Simulink is. I don't know if they do, and I'm not a Sage developer (or a Matlab user), but I don't know what Simulink is.

You might help bring about the implementation of the features you desire by mentioning them (which you have done), and explaining what they are and why they're important (which you haven't done so much). Could you explain Simulink in a nutshell? Is it the MS Excel and database bindings you mentioned? Does SAGE have *any* of the capabilities you are looking for here which could be expanded, or is Simulink something completely different from whats in SAGE?

You might also want to share these thoughts directly with the developers either through their email or through a mailing list, as well as in these blog comments. After all, Stein in his background on SAGE mentions that a big part of his motivation for developing it was the lack of responsiveness of the developers of Magma. He'd probably be sympathetic with your requests for improvements, and you might see them happen.

Full disclosure: I am a Sage developer.

ReplyDeleteOf the four commercial products mentioned that Sage wants to become a viable alternative to the features provided by Matlab, especially the tools engineers care about, are certainly the most immature bits in Sage. Numpy and Scipy can do many things that Matlab users want, but the integration with Sage needs to and will become better and as more people with an engineering background start using Sage or become Sage developers this will improve. Sage is certainly strongest at the moment in more abstract algebraical things like number theory, but that is mostly since Sage was started by a number theorist.

Cheers,

Michael

It's true that the state of the art in open source is often well behind commercial offerings because it is often the product of volunteer labor.

ReplyDeleteHowever, I doubt if a $2 million reactor design is flawed due to a bug in Matlab, Mathworks will not be compensating you for the problem. At best, you might get your money back, so your software will be gratis and flawed anyways. It is also unlikely that a company will fear having their reputation soured by such an event unless that company makes some extremely egregious error.

It is exciting to see the critical mass of scientific software that is taking shape, especially around Python. I use plenty of proprietary software such as Matlab, Labview, and Mathematica and I am continually frustrated at the clumsy ways, at best, with which one has to get these programs to interoperate. By basing programs on Python classes, hopefully one can just pick and choose the parts needed and stitch them into a single program.

The current reality is that there are two specialization areas: symbolic math (Mathematica, Maxima, Sage, etc) and numerical (mostly linear-algebra-based systems such as Matlab, Octave, Scilab. R, IDL, NumPy/SciPy, etc). Sebastian really uses Matlab's control theory toolbox Simulink, which is famous for having a GUI where you drag-and-drop standard control loop elements and link them in a graphical window. Simulink is well known and well executed; Scilab has a FOSS clone of it.

ReplyDeleteI would suggest looking at Octave, which is a FOSS Matlab clone. It implements many control theory functions of Matlab, but it doesn't have it's GUI. Still, someone working in this area on Matlab should be able to use Octave productively as well.

Octave is quite well established (it is a standard Debian and RPM package available easily in their respective distributions. It is also available for Windows and Mac

from the Octave web site

daniel said:

ReplyDelete"...I am continually frustrated at the clumsy ways, at best, with which one has to get these programs to interoperate. By basing programs on Python classes, hopefully one can just pick and choose the parts needed and stitch them into a single program."

Not just "hopefully" -- it actually works, and this is why i like Sage!

One of my projects is about cohomology rings of finite p-groups. It comprises:

- groups: Sage contains GAP!

- C-programs written by my boss: Sage can incorporate them due to Cython!

- Gröbner bases in graded-commutative rings: Sage contains Singular!

- my own code: Sage has a decent programming language, namely Python!

And all these components work together in a very smooth way.

"Smooth" means: If you define an ideal I in a multivariate polynomial ring, then I.groebner_basis() computes a groebner basis. It uses Singular in the background, via an interface, but on the surface it "feels" like ordinary python.

And, if you have a Magma licence, you also have an interface that makes Magma usable within Sage.

Finally, Sage is open source. This is how i came into mathematical computations: Look at the code that intelligent people produced, and learn...

There's a pedagogical element that hasn't been discussed much in this thread. I'm an undergraduate math student just on the verge of grappling with any substantial limb of the mathematical field. I'm also interested on computation, practical and theoretical. As I'm reviewing my options for capstone and personal projects, I am bearing in mind how to ensure that such project test my mathematical aptitude, provide grounds for expanding my understanding and interest, as well as create a basis on which future (educational and other) pursuits might be based.

ReplyDeleteI've been a fan, but not quite a user, of SAGE for at least a year now. I keep up, more or less, with the groups and the releases. It recently occurred to me that I could hit all these points by building a project around SAGE, with the very nice bonus that I could contribute to a project I greatly admire. Further, developing a facility with Python in conjunction with its fruitful application to mathematics makes my CV a bit more impressive. This last isn't trivial; I'm a nontraditional student with a family, a mortgage, and all the other trappings of adult life. One of the shorter paths to interesting and fulfilling endeavors and employment, for me, includes SAGE.

That is to say that, in addition to its growing utility for established mathematicians and engineers, SAGE offers a singular opportunity for students to learn and contribute to the mathematical community. I don't anticipate Wolfram, Mathworks, etc. being so open to user-contributed work; and the licensing wouldn't be open.

Just my two cents. Thanks to the SAGE team.

Daniel Black

I don't have doubts about Sebastian's real need to use Simulink or other tools. But often I have observed that managers in companies or even some people in academic institutions buy packages like the M-tools simply because someone else is paying for it. There is also the belief that simply because you are paying a lot of money, the package must be more reliable (than an academic toy developed by some hobbyists for classroom demo). But most such thinking is quite shortsighted or completely wrong. A lot of companies and academic institutions can save a lot of money (while getting some rewarding work done) by actively incorporating and developing tools like Sage in their institutions.

ReplyDeleteThere are other issues which engineers would probably not appreciate. They are happy designing their reactors or aircraft wings using the M-tools. But in basic sciences such as pure maths, we simly cannot accept a computer assisted proof if the programs were developed in one of the M-tools especially if we cannot verify these results by other means. For this idealogical reason alone it is worth the effort to develop tools such as Sage. And for all you know, you might not be able to run your own programs after a few years if you wrote your programs in one of the proprietary tools. Are your results valid only as long as you have a license to the tool you used? I wonder how many people have such irreproducible results in their collected works. I think results obtained with open source tools will have much longer shelf life - beyond the life of the open source tools themselves.

Personally Sage inspires me. Just following their sage-devel group is quite stimulating. In my work I never had to compute, but Sage makes me want to compute. Now when I prove a result or before I prove it, I think "can I compute with a few small examples and illustrate my result or conjecture?". I think I will attempt to do that and I hope I will contribute to such a project some day.

I am greatly optimistic that Sage will be successful like TeX, linux, Wikipedia, ...

hi, Ive been following SAGE for a year now, and I have been tinkering around in it.

ReplyDeleteBUT, as an electronics engineer currently working in photonics, there is really not much in sage that could make my life easier, or replace the dominant role that MATLAB has played in most of my computational work.

However, since I started on my masters degree in photonics, I observe that a lot of the tools developed my the research group I work in are in python. they basically involve solving maxwell's equations in various structures and plotting the results and are based on numpy, scipy, matplotlib etc. Given this, I was surprised by how difficult it was to find a good way of numerically solving differential equation in sage. there is never more than one short page about it in the documentation, and its never terribly useful.

really, some one needs to look into this, and do something for us engineers. Id try and contribute myself, but to be honest, Im not much of a coder. would be nice to try though.

and keep up the good work !

I'm not sure what DEs Psmith (presumably a Wodehouse fan:-) wants

ReplyDeletebut there is a preliminary draft of a book on DEs and Sage at

http://sage.math.washington.edu/home/wdj/teaching/index.html

That is certainly more than "one short page" but may not be useful.

If he wants numerical solns of PDEs then I can't help him.

In fact, the only higher order PDEs dealt with are the heat and wave equations.

DEs is a big topic and it would be helpful if he would explain what

he wanted.

This comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteSelf praise is no recommendation.

ReplyDeleteMaybe the viable free open source alternative to M,M,M,M is Maxima, for symbolic math. Octave for Matlab, and GAP for Magma. Actually, I have no particular use for Magma or GAP, and so the differences between them are not as important to me as to Prof. Stein.

One important difference to some people: Maxima runs natively on Windows; Sage does not.

As for the future, time will tell.

Richard Fateman

This comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteI like the side of the article, and very like your blog, to write well and hope to continue their efforts, we can see more of your articles. ed hardy clothes. After reading this article has strong feelings, the future will be Changlaikankan's.ed hardy swimwear. polo hoodies

ReplyDeleteed hardy jeans

ed hardy

ed hardy clothing

ed hardy t-shirts

ed hardy clothes

ed-hardy.co.uk

ed hardy shirts

ed hardy mens

ed hardy womens

ed hardy sunglasses

ed hardy swimwear

ed hardy Jeans

ed hardy hoodies

ed hardy bags

ed hardy trousers

ed hardy shoes

ed hardy sunglasses

ed hardy suits

ed

hardy

ed hardy dresses

This comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDelete

ReplyDeletecoats & jacketsIf one knows where to, the world will give way.

north face jacketsmonclerWorld-class brands

moncler jacketsThe top fabric produced in France is 100%

duveticaItaly's top outdoor brands

peutereyGood quality and function, more accord with fashionable design

spyder jacketsHigh-grade, innovation, the trend of the brand

Columbia SportswearThe quality is so good

quiksilver jacketsYoung and creative style

ski jacketYou can have a look at it.

jordan shoesWow.

newest jordansjordan 7Wonderful!

air yeezyjordan true flightIf you like,you can contact us.

jordan 3jordan 4We offer different styles.

jordan 1jordan 2Thanks.

jordan 5jordan ajf shoesThere are cheap shoes to choose

nike footwearjordan flight 45Good quality with low price.

air jordan 2010Air Jordan 2009Enjoy it!

jumpmannike trainersThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDeleteThis comment has been removed by a blog administrator.

ReplyDelete