Now you may think it was trivial to add this functionality given that indefinite integrals already have steps, but there are many tricky cases to consider: before we even begin to integrate, the continuity of the function is examined. If there are discontinuities in the integration domain, the domain is split and the integral is evaluated separately over each domain.

We must determine if the integral is proper or improper.

Absolute values need to be handled carefully.

Symmetries can be exploited.

Simplification of radicals and logarithms must be done very carefully.

Finally, the fundamental theorem of calculus requires that the antiderivative is continuous over the integration domain (see this blog post for more information). Therefore, we need to be careful when finding the indefinite integral, and always ensure the result will be continuous. One way to do this is to detect when we will have a discontinuous antiderivative and split the integration domain up.

Integration is an extremely nontrivial problem, so we hope these Step-by-step solutions will help you learn how they can be done. Be sure to check out Step-by-step solutions for other topics too.

]]>Summer has drawn to a close, and so too have our annual internships. Each year Wolfram welcomes a new group of interns to work on an exciting array of projects ranging all the way from Bell polynomials to food science. It was a season for learning, growth, and making strides across disciplinary and academic divides. The Wolfram interns are an invaluable part of our team, and they couldn’t wait to tell us all about their time here. Here are just a few examples of the work that was done.

Paco Jain

Wolfram|Alpha Scientific Content,

Wolfram|Alpha

Wolfram|Alpha Scientific Content,

Wolfram|Alpha

“This summer, I worked on adding scientific content to the physical systems domain in Wolfram|Alpha. While there is a lot to learn, everyone I worked with seemed enthusiastic to help me get up to speed, and I was able to form several valuable mentoring relationships. I also felt that I was given the resources and responsibility I needed to allow me to make meaningful contributions to the Wolfram|Alpha product. The experience has me already thinking about pursuing a full-time position at Wolfram!”

Daniel McDonald

Wolfram|Alpha Scientific Content,

Bell Polynomials and Recursive Algorithms

Wolfram|Alpha Scientific Content,

Bell Polynomials and Recursive Algorithms

“This summer at Wolfram|Alpha I worked as the Special Functions Intern. My primary project was reading mathematical literature in order to extract and verify formulas that could be useful for The Wolfram Functions Site as well as for possible *Mathematica* implementation. The most interesting part of my work involved creating a compendium of information about *Mathematica*‘s `BellY` function that computes various types of Bell polynomials, which are used in Faà di Bruno’s formula for computing arbitrary derivatives of the composition *f*(*g*) (as well as in generalizations of this formula for computing arbitrary derivatives of compositions of arbitrary depth). I devised an original functional recurrence that suggested a quick recursive algorithm for computing generalized Bell polynomials; as this algorithm ran much faster than *Mathematica*‘s at the time, it was implemented into *Mathematica* 10.0.1. This recurrence and thus the algorithm (with different base cases) can be applied in a more general environment, and I am currently drafting a paper to submit to an algorithms journal.”

Mark Peterson

Scientific Information Group,

Wolfram Demonstrations Project

Scientific Information Group,

Wolfram Demonstrations Project

“During my internship in the Scientific Information Group at Wolfram Research, my work has primarily been centered on the Wolfram Demonstrations Project. Essentially, Demonstrations are self-contained programs written in the Wolfram Language that are designed to appeal to the user in a highly intuitive and interactive way. Whether working on the Project directly or on alternate applications for its material, my time has been spent developing this sort of content.”

Jake Wood

*Mathematica* Algorithms R&D,

*Mathematica* `GeoGraphics`

“Joining the Wolfram team earlier this summer was an exciting professional milestone for me. I am a big fan of not only the software that has come from Wolfram, but also the mission and ambition to proliferate and nurture big ideas. My patient mentor explained that I was to figure out how to make the generated maps in `GeoGraphics` (new in *Mathematica* 10) move around and update from mouse clicking and dragging. Additionally, the maps needed to be zoomable, similar to maps online used for navigation. Right now my prototypes deal with the maps themselves instead of the verbose layers of graphics data that *Mathematica* is capable of imbuing. In the future, though, who knows. Getting the panning and zooming to work proved a difficult task; however, the brunt of the summer was spent on improving the performance speed. No one wants to use an interactive map that is insufferably unresponsive. The utility of this application is pretty clear, as it is similar to programs that people already use daily.”

Jessica Zhang

User Experience,

Wolfram*Tones*

User Experience,

Wolfram

“People would think as a User Experience Designer I would only be designing detailed features within a product or workflow. However, at Wolfram, I not only got to do those things, I also got to take part in the bigger decision-making design processes, even as an intern. I was given the opportunity to learn a variety of skills that are important and also at the cutting edge of the field. Technical skills include wireframing, wireflowing, diagramming, and interface design. Oh, and also using the espresso machine!”

Andrew Blanchard

Wolfram|Alpha Scientific Content,

Named Physical Effects

Wolfram|Alpha Scientific Content,

Named Physical Effects

“For my internship with Wolfram Alpha, I assembled a list of named physical effects. A typical effect provides a link between measurable physical quantities, which are already incorporated into Wolfram|Alpha. Thus, making information about known physical effects computable enables the exploration of relationships between measurable quantities. In addition, the searchable data provides a window into the relationship between the discovery of new effects and advances in the field of physics. By making scientific information searchable, Wolfram|Alpha is providing a wonderful service for researchers, students, and anyone curious about exploring science.”

Surojit Ganguli

Wolfram|Alpha Socioeconomic Content,

Computational Capabilities

“I was part of the team that was involved in increasing the computational capabilities of Wolfram|Alpha in the domain of vehicle dynamics. As a Computational Science and Engineering Minor at UIUC, the opportunity to explore the various ways in which computations are being performed at Wolfram was in itself a rewarding experience. As an additional bonus, I definitely improved in the area of functional programming by using *Mathematica*.”

Ying Qin

Wolfram|Alpha Scientific Content,

Food Data

Wolfram|Alpha Scientific Content,

Food Data

“I’ve been working on expanding food-related information in the Wolfram Knowledgebase. Among other things, this included the characterization and classification of food; I did research involving USDA data and other data sources. I was also working on expanding the food glossary, which gives a more detailed description of the available content. Furthermore, using my knowledge as a Food Science student, I was able to do things like classify fatty acids into groups. My advice to prospective interns is that you shouldn’t hesitate to apply even though your major is not computer science or engineering. As a Food Science major, I was happy to get involved here, and felt like it was a truly valuable experience.”

It’s been an amazing summer all around, and we couldn’t be happier with the contributions our interns have made. While we are sad to see some of them go, we are excited by the new talent that has been added to our team and can’t wait to see what next year will bring!

]]>Our live-tweets will feature facts, queries, and commentary about the show. We’ll take a look at things like the math behind siphoning electricity and insightful statistics based on character names. We’re happy to see another installment in the good fight for the nerd revolution and can’t wait to watch as a bunch of brainiacs save the world. Join us for a night of science and suspense and send us your own Wolfram|Alpha Scorpion queries to @wolfram_alpha!

]]>Compose a tweet-length Wolfram Language program, and tweet it to @WolframTaP. Our Twitter bot will run your program in the Wolfram Cloud and tweet back the result.

One can do a lot with Wolfram Language programs that fit in a tweet. Like here’s a 78-character program that generates a color cube made of spheres:

It’s easy to make interesting patterns:

Here’s a 44-character program that seems to express itself like an executable poem:

Going even shorter, here’s a little “fractal hack”, in just 36 characters:

Putting in some math makes it easy to get all sorts of elaborate structures and patterns:

You don’t have to make pictures. Here, for instance, are the first 1000 digits of π, sized according to their magnitudes (notice that run of 9s!):

The Wolfram Language not only knows how to compute π, as well as a zillion other algorithms; it also has a huge amount of built-in knowledge about the real world. So right in the language, you can talk about movies or countries or chemicals or whatever. And here’s a 78-character program that makes a collage of the flags of Europe, sized according to country population:

We can make this even shorter if we use some free-form natural language in the program. In a typical Wolfram notebook interface, you do this using , but in Tweet-a-Program, you can do it just using =[...]:

The Wolfram Language knows a lot about geography. Here’s a program that makes a “powers of 10” sequence of disks, centered on the Eiffel Tower:

There are many, many kinds of real-world knowledge built into the Wolfram Language, including some pretty obscure ones. Here’s a map of all the shipwrecks it knows in the Atlantic:

The Wolfram Language deals with images too. Here’s a program that gets images of the planets, then randomly scrambles their colors to give them a more exotic look:

Here’s an image of me, repeatedly edge-detected:

Or, for something more “pop culture” (and ready for image analysis etc.), here’s an array of random movie posters:

The Wolfram Language does really well with words and text too. Like here’s a program that generates an “infographic” showing the relative frequencies of first letters for words in English and in Spanish:

And here—just fitting in a tweet—is a program that computes a smoothed estimate of the frequencies of “Alice” and “Queen” going through the text of *Alice in Wonderland*:

Networks are good fodder for Tweet-a-Program too. Like here’s a program that generates a sequence of networks:

And here—just below the tweet length limit—is a program that generates a random cloud of polyhedra:

What’s the shortest “interesting program” in the Wolfram Language?

In some languages, it might be a “quine”—a program that outputs its own code. But in the Wolfram Language, quines are completely trivial. Since everything is symbolic, all it takes to make a quine is a single character:

Using the built-in knowledge in the Wolfram Language, you can make some very short programs with interesting output. Like here’s a 15-character program that generates an image from built-in data about knots:

Some short programs are very easy to understand:

It’s fun to make short “mystery” programs. What’s this one doing?

Or this one?

Or, much more challengingly, this one:

I’ve actually spent many years of my life studying short programs and what they do—and building up a whole science of the computational universe, described in my big book *A New Kind of Science*. It all started more than three decades ago—with a computer experiment that I can now do with just a single tweet:

My all-time favorite discovery is tweetable too:

If you go out searching in the computational universe, it’s easy to find all sorts of amazing things:

An ultimate question is whether somewhere out there in the computational universe there is a program that represents our whole physical universe. And is that program short enough to be tweetable in the Wolfram Language?

But regardless of this, we already know that the Wolfram Language lets us write amazing tweetable programs about an incredible diversity of things. It’s taken more than a quarter of a century to build the huge tower of knowledge and automation that’s now in the Wolfram Language. But this richness is what makes it possible to express so much in the space of a tweet.

In the past, only ordinary human languages were rich enough to be meaningfully used for tweeting. But what’s exciting now is that it seems like the Wolfram Language has passed a kind of threshold of general expressiveness that lets it, too, be meaningfully tweetable. For like ordinary human languages, it can talk about all sorts of things, and represent all sorts of ideas. But there’s also something else about it: unlike ordinary human languages, everything in it always has a precisely defined meaning—and what you write is not just readable, but also runnable.

Tweets in an ordinary human language are (presumably) intended to have some effect on the mind of whoever reads them. But the effect may be different on different minds, and it’s usually hard to know exactly what it is. But tweets in the Wolfram Language have a well-defined effect—which you see when they’re run.

It’s interesting to compare the Wolfram Language to ordinary human languages. An ordinary language, like English, has a few tens of thousands of reasonably common “built-in” words, excluding proper names etc. The Wolfram Language has about 5000 built-in named objects, excluding constructs like entities specified by proper names.

And one thing that’s important about the Wolfram Language—that it shares with ordinary human languages—is that it’s not only writable by humans, but also readable by them. There’s vocabulary to acquire, and there are a few principles to learn—but it doesn’t take long before, as a human, one can start to understand typical Wolfram Language programs.

Sometimes it’s fairly easy to give at least a rough translation (or “explanation”) of a Wolfram Language program in ordinary human language. But it’s very common for a Wolfram Language program to express something that’s quite difficult to communicate—at least at all succinctly—in ordinary human language. And inevitably this means that there are things that are easy to think about in the Wolfram Language, but difficult to think about in ordinary human language.

Just like with an ordinary language, there are language arts for the Wolfram Language. There’s reading and comprehension. And there’s writing and composition. Always with lots of ways to express something, but now with a precise notion of correctness, as well as all sorts of measures like speed of execution.

And like with ordinary human language, there’s also the matter of elegance. One can look at both meaning and presentation. And one can think of distilling the essence of things to create a kind of “code poetry”.

When I first came up with Tweet-a-Program it seemed mostly like a neat hack. But what I’ve realized is that it’s actually a window into a new kind of expression—and a form of communication that humans and computers can share.

Of course, it’s also intended to be fun. And certainly for me there’s great satisfaction in creating a tiny, elegant gem of a program that produces something amazing.

And now I’m excited to see what everyone will do with it. What kinds of things will be created? What popular “code postcards” will there be? Who will be inspired to code? What puzzles will be posed and solved? What competitions will be defined and won? And what great code artists and code poets will emerge?

Now that we have tweetable programs, let’s go find what’s possible…

*To develop and test programs for Tweet-a-Program, you can log in free to the Wolfram Programming Cloud, or use any other Wolfram Language system, on the desktop or in the cloud. Check out some details here.*

*To comment, please visit the copy of this post at the Wolfram Blog »*

In the past, using *Mathematica* has always involved first installing software on your computer. But as of today that’s no longer true. Instead, all you have to do is point a web browser at *Mathematica* Online, then log in, and immediately you can start to use *Mathematica*—with zero configuration.

Here’s what it looks like:

It’s a notebook interface, just like on the desktop. You interactively build up a computable document, mixing text, code, graphics, and so on—with inputs you can immediately run, hierarchies of cells, and even things like Manipulate. It’s taken a lot of effort, but we’ve been able to implement almost all the major features of the standard *Mathematica* notebook interface purely in a web browser—extending CDF (Computable Document Format) to the cloud.

There are some tradeoffs of course. For example, Manipulate can’t be as zippy in the cloud as it is on the desktop, because it has to run across the network. But because its Cloud CDF interface is running directly in the web browser, it can immediately be embedded in any web page, without any plugin, like right here:

Another huge feature of *Mathematica* Online is that because your files are stored in the cloud, you can immediately access them from anywhere. You can also easily collaborate: all you have to do is set permissions on the files so your collaborators can access them. Or, for example, in a class, a professor can create notebooks in the cloud that are set so each student gets their own active copy to work with—that they can then email or share back to the professor.

And since *Mathematica* Online runs purely through a web browser, it immediately works on mobile devices too. Even better, there’s soon going to be a Wolfram Cloud app that provides a native interface to *Mathematica* Online, both on tablets like the iPad, and on phones:

There are lots of great things about *Mathematica* Online. There are also lots of great things about traditional desktop *Mathematica*. And I, for one, expect routinely to use both of them.

They fit together really well. Because from *Mathematica* Online there’s a single button that “peels off” a notebook to run on the desktop. And within desktop *Mathematica*, you can seamlessly access notebooks and other files that are stored in the cloud.

If you have desktop *Mathematica* installed on your machine, by all means use it. But get *Mathematica* Online too (which is easy to do—through Premier Service Plus for individuals, or a site license add-on). And then use the Wolfram Cloud to store your files, so you can access and compute with them from anywhere with *Mathematica* Online. And so you can also immediately share them with anyone you want.

By the way, when you run notebooks in the cloud, there are some extra web-related features you get—like being able to embed inside a notebook other web pages, or videos, or actually absolutely any HTML code.

*Mathematica* Online is initially set up to run—and store content—in our main Wolfram Cloud. But it’ll soon also be possible to get a Wolfram Private Cloud—so you operate entirely in your own infrastructure, and for example let people in your organization access *Mathematica* Online without ever using the public web.

A few weeks ago we launched the Wolfram Programming Cloud—our very first full product based on the Wolfram Language, and Wolfram Cloud technology. *Mathematica* Online is our second product based on this technology stack.

The Wolfram Programming Cloud is focused on creating deployable cloud software. *Mathematica* Online is instead focused on providing a lightweight web-based version of the traditional *Mathematica* experience. Over the next few months, we’re going to be releasing a sequence of other products based on the same technology stack, including the Wolfram Discovery Platform (providing unlimited access to the Wolfram Knowledgebase for R&D) and the Wolfram Data Science Platform (providing a complete data-source-to-reports data science workflow).

One of my goals since the beginning of *Mathematica* more than a quarter century ago has been to make the system as widely accessible as possible. And it’s exciting today to be able to take another major new step in that direction—making *Mathematica* immediately accessible to anyone with a web browser.

There’ll be many applications. From allowing remote access for existing *Mathematica* users. To supporting mobile workers. To making it easy to administer *Mathematica* for project-based users, or on public-access computers. As well as providing a smooth new workflow for group collaboration and for digital classrooms.

But for me right now it’s just so neat to be able to see all the power of *Mathematica* immediately accessible through a plain old web browser—on a computer or even a phone.

And all you need do is go to the *Mathematica* Online website…

*To comment, please visit the copy of this post at the Wolfram Blog »*