I just downloaded Sage for OSX. (I'm running a 1st gen 17" Core Dual iMac with 3GB RAM) I'm really excited about it as I've read about its features. It uses a lot of third party applications but unifies it all in Python and uses a surprisingly robust AJAX based browser window as the UI. (You can also use the terminal in a format that is based on iPython) Most cool is that you can call Sage stuff from your own Python scripts. And, while I'm still figuring it out, it looks like your Sage stuff can call Python. Were I still in physics rather than chocolate this would be extremely cool. Sort of the best of Mathematica and IDL. I've used both of those extensively, although admittedly not in years. (I'm sure both have changed a fair bit since my use in the early 90's)
Anyway, I'm putting this up as a kind of "notebook" with my experiences. I've wanted something like Mathematica or Maple to help me review my undergraduate physics for some time. Not that I'd neglect working through the hard calculus by hand. That's 90% of what makes undergraduate physics interesting anyway. It's quite the problem solving endeavor. But I think using something like this would get me back up to speed conceptually much faster. Such that I can quickly get back into quantum field theory or GR or the like. We'll see how it goes and, of course, how much time I actually have once we start hiring more employees at my business.
So I'll be adding comments here every now and then. As much for Google searches as anything. I confess that I've still got low expectations. So much open source software seems like it is 85% there with that last 15% being so frustrating because it means you can't do what you want to do. (There are exceptions like Apache of course - but that's what they are: exceptions)
Going through the tutorial it has a lot of features that I'm sure were in Mathematica but which I don't remember. So it does a lot of abstract algebra. In an applied way, of course. Unfortunately Sage also appears to require you to define your variables in terms of rings like a Polynomial. So to do a lot of algebraic manipulation there's a few extra steps beyond what I remember Mathematic requiring. (I'm sure there are reasons for this - but as a physicist, I just want to get to the algebraic and calculus solutions) So this is what you need to do to take a polynomial and raise it to the second power.
sage: R, x = QQ['x'].objgen()
sage: f = 2*x^7 + 3*x^2 - 15/19
sage: f^2
As I mentioned, one very cool thing is that you can define functions using Python syntax. Very nice compared to what I remember from Mathematic. (Not that it was bad, just that Python is much nicer and plus since I program in Python I won't have to remember yet an other language)
Matrices seem quite easy - although as with polynomials you have to define your matrix space explicitly. The format for dealing with matrices is basically Python arrays, which is also nice. You can treat it as a single dimensional array or there are functions to treat it as an array of tuples - (basically like a multidimensional array if you aren't familiar with Python). It handles sparse arrays which can make calculations much faster. It handles elipitical equations pretty nice with a nice selection of functions. (Of course, as I recall, so did Mathematica)
I've not played around much with the UI yet. So I'll add more later.
One cool thing is how object oriented Sage is. So to take the fourth partial derivative of sin(x^2) with respect to x I just type: maxima('sin(x^2)').diff('x',4)
I could also have typed:
f = maxima('sin(x^2)')
f.diff('x',4)
I believe maxima is the library that does calculus for Sage. But the point is that it very much is wrapped up in Python and is inherently object oriented. Very nice.
I've closed comments in order to avoid spam since I don't check this older blog as much anymore.
Number of unique visitors:
Blogged by Clark Goble