Friday, July 29, 2011

Review of "Sage: Beginner's Guide" by Craig Finch

I was asked by the publisher to review "Sage: Beginner's Guide" by Craig Finch. They sent me a free copy; I have no other conflicts of interest. I am generally biased towards Sage itself, as an avid user and minor developer.

On Amazon you can browse the table of contents, which gives a pretty good idea of the strengths of the book, namely basic computation and plotting, numerical calculations, and data analysis. The focus was an excellent choice considering what is already available. The current free Sage Tutorial is oriented much more towards pure mathematicians. There is a Numerical Computing With Sage as part of the standard documentation, but at the moment its quite short and nowhere near as helpful as Finch's book.

I liked the style of the book a lot. There are many code examples that illustrate how to accomplish concrete tasks, along with good explanations of what they are doing. Many of these are things that are unfortunately far from obvious to a beginner (or even intermediate) Sage user. Despite using Sage heavily for the last five years, I learned some new things. The book is particularly strong in showing how to use Numpy, Scipy, and Matplotlib. Sage wraps a lot of the functionality of these projects, but if you want to do something that isn't included in the standard interfaces it can be quite mystifying.

Chapter 9, "Learning Advanced Python Programming", might have been a little ambitious. There's nothing wrong with it, but its too short to provide enough. Fortunately there are a lot of good books, some of them free, that cover Python programming in much more depth. I would have preferred some of this space and effort to be devoted to using Cython and the @interact command, which are covered very briefly in Chapter 10.

I teach several classes using Sage and I will definitely advertise this text as a useful optional supplement (I consider it a little too expensive to add on as a mandatory second text). It would be nice if some institutions considered using Sage instead of its commercial competitors such as Maple, Matlab, and Mathematica - you could probably give every student a copy of this book for the money saved from license fees!

The only thing I disliked about the book was the quality of the illustrations. Sage output that was in LaTeX was not typeset, but instead looks as if a PNG was copied from a screenshot. Some of the examples would have benefited from being in color. The quality of the plots is also somewhat poor. This is not too big a deal if one is following along with Sage, since you can reproduce the figures. None of them are bad enough to obscure the content.

Overall this is a very impressive and useful introduction to Sage that should help any beginning user a great deal.

Tuesday, July 19, 2011

Top Ten Talk Titles at the International Congress of Industrial and Applied Mathematics

10. The Most Likely Path to Systemic Failure

9. Exploding Rocks

8. Moving Mucus from the Outside In

7. Ducks in Array: Inferring Individual Rules from Collective Behaviour

6. The Nonlinear Dynamics of Jellyfish Swimming

5. The Neuromechanics of Insect Locomotion: How Cockroaches Run Fast and Stably Without Much Thought

4. Transformational Acoustics: Acoustic Cloaks, Carpets and Wormholes

3. A Semi-Implicit Blob Projection Method for Tiny Insect Flight

2. Mathematical Model for Contemplative Amoeboid Locomotion

1. Warping Peirce Quincuncial Panoramas

Monday, May 16, 2011


One of the challenges in learning mathematics is the vocabulary. Its hard not just because of the sheer number of words. Some words make an old word strangely precise, like "continuous". But many others are naming concepts which have no common equivalent, and each of these requires wholly new paths of thought.

Recently I was reading a book on the positivity of multivariate polynomials, and I had to recall what ultrafilters are. Even having learned that before, its a bit of a struggle to internalize. It did inspire me to make the following "ad":

Wednesday, April 27, 2011

A family of Mobius transformations

I was trying to sketch the behavior of a Mobius transformation in my complex analysis course today. Its hard to convey on the blackboard, so I tried making a video which shows a homotopy of the image of the unit disk, from the identity to (1+z)/(1-z) and back again.

Wednesday, March 23, 2011

Sci-fi history in a painting

This is pretty fantastic - Ward Shelley's "The History of Sci­ence Fiction":

(The crop above is just the tip of the iceberg.)

Monday, March 21, 2011

Plotting the zeta function

I lectured a tiny bit on the Riemann zeta function for the first time in my complex analysis course, which inspired me to make the following plot. Colors are the argument of the Riemann zeta function, brightness is proportional to magnitude. The default brightness map gives very low contrast, so I modified the magnitudes. To help with seeing the magnitudes a contour map with exponentially spaced contours is overlaid.

def xy_to_zeta_size(x,y):
return abs(zeta(N(x+I*y)))
cvals = [e^i for i in srange(-7,1,.25)]
cp = contour_plot(xy_to_zeta_size,(-6,3),(-3,3),contours = cvals, fill=False, plot_points = 201)
rzeta(z) = zeta(z)/norm(zeta(z))^(.25)
rzf = fast_callable(rzeta,domain=CDF)
cparg = complex_plot(rzf,(-6,3),(-3,3))

Monday, February 28, 2011

Youtube videos of n-body choreographies

For a presentation I'm doing tomorrow, I made some animations of n-body choreographies (n equal masses which share a common trajectory). I put these up on youtube since that seems to make more sense than having them mangled by Blogger or hosting them myself:

Twenty-one bodies
Eight bodies
Three bodies on a figure eight

The videos are done using Sage, the Tachyon raytracer, and ffmpeg. The orbit data is from Carlos Simo.

Here's a 2D picture of the twenty-body choreography.