December 20, 2012 — Paul-Jean Letourneau, Senior Data Scientist, Wolfram Research

This year is the 100th birthday of Alan Turing, so at the 2012 Wolfram Science Summer School we decided to turn a group of 40 unassuming nerds into ferocious hunters. No, we didn’t teach our geeks to take down big game. These are laptop warriors. And their prey? Turing machines!

In this blog post, I’m going to teach you to be a fellow hunter-gatherer in the computational universe. Your mission, should you choose to accept it, is to FIND YOUR FAVORITE TURING MACHINE.

First, I’ll show you how a Turing machine works, using pretty pictures that even my grandmother could understand. Then I’ll show you some of the awesome Turing machines that our summer school students found using *Mathematica*. And I’ll describe how I did an über-search through 373 million Turing machines using my Linux server back home, and had it send me email whenever it found an interesting one, for two weeks straight. I’ll keep the code to a minimum here, but you can find it all in the attached *Mathematica* notebook.

Excited? Primed for the hunt? Let me break it down for you.

The rules of Turing machines are actually super simple. There’s a row of cells called the *tape*:

November 5, 2012 — Michael Belcher, computerbasedmath.org

The computerbasedmath.org community has been growing steadily since the project first started in 2010. Several thousand of you have signed up to show your support, share your ideas, and help spread the word. The Computer-Based Math™ Education Summit has been a great tool for bringing the community together, but we wanted a central hub where the community can gather more than just once a year. So we’ve launched the The Computer-Based Math Education Forum.

Whatever your background, join the conversation and share your experiences.

October 24, 2012 — Jason Martinez, Research Programmer

Earlier this month, on a nice day, Felix Baumgartner jumped from 39,045 meters, or 24.26 miles, above the Earth from a capsule lifted by a 334-foot-tall helium filled balloon (twice the height of Nelson’s column and 2.5 times the diameter of the Hindenberg). Wolfram|Alpha tells us the jump was equivalent to a fall from 4.4 Mount Everests stacked on top of each other, or falling 93% of the length of a marathon.

At 24.26 miles above the Earth, the atmosphere is very thin and cold, only about -14 degrees Fahrenheit on average. The temperature, unlike air pressure, does not change linearly with altitude at such heights. As Wolfram|Alpha shows us, it rises and falls depending on factors such as the decreased density of air with rising altitude, but also the absorption of UV light by the ozone layer.

At 39 kilometers, the horizon is roughly 439 miles away. At this layer of the atmosphere, called the stratosphere, the air pressure is only 3.3 millibars, equivalent to 0.33% of the air pressure at sea level. To put it another way, the mass of the air above 39 kilometers is only 0.32851% of the total air mass. Given this knowledge, we know that 99.67% of the world’s atmosphere lay beneath him. This information was important to Felix’s goal to break the sound barrier in free fall because the rate of drag is directly related to air pressure. With less air around him, there would be less drag, and thus he could reach a higher maximum speed. Of course, this would require him to wear an oxygenated suit to allow him to breathe, in addition to keeping him warm.

October 23, 2012 — Michael Trott, Chief Scientist

In my last blog post, we discussed 3D charge configurations that have sharp edges. Reader Rich Heart commented on it and asked whether *Mathematica* can calculate the force between two charged cubes, as done by Bengt Fornberg and Nick Hale and in the appendix of Lloyd N. Trefethen’s book chapter.

The answer to the question from the post is: Yes, we can; I mean, yes, *Mathematica* can.

Actually, it is quite straightforward to treat a more general problem than two just-touching cubes of equal size:

- We can deal with two cubes of different edge lengths
*L*_{1}*L*_{2} - We can calculate the force for any separation
*X*, where*X*is the distance between the two cube centers (including the case of penetrating cubes; think plasma) - We will use a method that can be generalized to higher-dimensional cubes without having to do more nested integrals

Instead of calculating the force between the two cubes, we will calculate the total electrostatic energy of the system of the two cubes. The force is then simply the negative gradient of the total energy with respect to *X*. The electrostatic energy (in appropriate units) is given by:

(In the following calculations, we will skip the constant [with respect to *X*] prefactors *Q*_{1} *L*_{1}^{-3} *Q*_{2} *L*_{2}^{-3} or *Q*_{1} *Q*_{2} if not needed.)

Approaching this integral head-on doing one integral after another is possible, but a very tedious and time-consuming operation. Instead, to avoid having to carry out a nested six-dimensional integral, we remember the Laplace transform of 1 / √*s*.

September 27, 2012 — Michael Trott, Chief Scientist

In my last blog post, we looked at various examples of electrostatic potentials and magnetostatic fields. We ended with a rectangular current loop. Electrostatic and magnetostatic potentials for squares, cubes, and cuboids typically contain only elementary functions, but the expressions themselves are often quite large compared with simple systems with radial symmetry. In the following, we will discuss some 3D charge configurations that have sharp edges.

Let’s start with a charged 2D rectangle in 3D space. Again, the potential is an elementary function that contains a few logarithms.

July 20, 2012 — Michael Trott, Chief Scientist

*(This is the first post in a three-part series about electrostatic and magnetostatic problems involving sharp edges.)*

*Mathematica* can do a lot of different computations. Easy and complicated ones, numeric and symbolic ones, applied and theoretical ones, small and large ones. All by carrying out a *Mathematica* program.

Wolfram|Alpha too carries out a lot of computations (actually, tens of millions every day), all specified through free-form inputs, not *Mathematica* programs. Wolfram|Alpha is heavily based on *Mathematica*, and many of the mathematical calculations that Wolfram|Alpha carries out rely on the mathematical power of *Mathematica*. And while Wolfram|Alpha can carry out a vast amount of calculations, it cannot carry out all possible calculations, either because it does not (yet) know how to do a calculation or because the (underlying *Mathematica*) calculation would take a longer time than available through Wolfram|Alpha. So for a detailed investigation of a more complicated engineering, physics, or chemistry problem, having a copy of *Mathematica* handy is mandatory.

But there is also the reverse relation between *Mathematica* and Wolfram|Alpha: Wolfram|Alpha’s knowledge, especially its data knowledge, allows it to carry out investigations and calculations that can substantially increase the power of pure *Mathematica*. And all of this is because Wolfram|Alpha’s knowledge is accessible through the `WolframAlpha[]` function within *Mathematica*.

March 14, 2012 — Jackie Tran, computerbasedmath.org

In the “Society’s Changing Needs for Math” session at the The Computer-Based Math (CBM) Education Summit 2011, Marcus du Sautoy, Paul Wilmott, Charles Fadel, and Tim Oates discussed their views in one of the summit’s key sessions.

There was a lot of energy for debate from our summit attendees, and we did not have the time to expand on every topic after each talk. Hopefully these bite-sized videos from our speakers will open up discussions to all. Have your say and leave your thoughts on the comment section of this post or on Computer-Based Math’s YouTube Channel.

October 26, 2011 — Samuel Chen, Technical Communication & Strategy

What do computer animation, oil exploration, and the FBI’s database of 30 million fingerprints have in common?

Wavelet analysis.

As of Version 8, wavelet analysis is an integral part of *Mathematica*.

Wavelets themselves are short-lived wave-like oscillations. Taking the Morlet wavelet, for example, we can see that unlike sines and cosines, this wave-like oscillation is localized in the sense that it does not stretch out to infinity.

January 26, 2011 — Jon McLoone, International Business & Strategic Development

*Mathematica* can make you feel like a computational superman. Armed with that attitude and some schoolboy knowledge of cryptography, I turned my attention to cipher breaking this week, only to discover buried kryptonite.

The weakness of ciphers (where you swap every occurrence of a particular letter in your message with the same different letter) is that they don’t change the patterns of letters. The simplest attack that exploits this fact is frequency analysis. The most common letter in English is “e”, and so it follows that the most common character in an encoded message (assuming the message is written in English) will correspond to “e”. And so on through the alphabet.

Mary Queen of Scots famously lost her head when Queen Elizabeth’s spymaster broke Mary’s cipher using frequency analysis. I figured that if sixteenth century spies could do it by hand, I should be able to automate it in *Mathematica* in about 10 minutes.

December 9, 2010 — Jon McLoone, International Business & Strategic Development

I just published a *Mathematica* package that provides an alternative, richer implementation of units and dimensional analysis than the built-in units package. You can get it here. Aside from being a really nice extension to *Mathematica*, it is also an interesting case study in adding a custom data “type” to *Mathematica* and extending the knowledge of the built-in functions to handle the new “type”.

First I have to explain the point by answering the question, “What’s wrong with the built-in units package?” Well, there is nothing actually wrong with it, it just doesn’t apply *Mathematica*‘s automation principles. It can convert between several hundred units and warn if a requested conversion is dimensionally inconsistent. But give it an input like…

and it does nothing with it until you specify that you want the result in a specific unit. The core reason is that it doesn’t teach the system, as a whole, anything about units, or even that the symbol “`Meter`” is any different than the symbol “x”. All of the knowledge about units and `Meter` in particular is contained in the `Convert` command.