Wolfram Computation Meets Knowledge

49 What We Haven’t Discussed

There’s a lot more to the Wolfram Language than we’ve been able to cover in this book. Here’s a sampling of just a few of the many topics and areas that we’ve missed.

User Interface Construction

Set up a tabbed interface:
TabView[Table[ListPlot[Range[20]^n], {n, 5}]]
User interfaces are just another type of symbolic expression; make a grid of sliders:
Grid[Table[Slider[], 4, 3]]

Function Visualization

Plot a function:
Plot[Sin[x] + Sin[Sqrt[2] x], {x, 0, 20}]
3D contour plot:
ContourPlot3D[x^3 + y^2 - z^2, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}]

Mathematical Computation

Do symbolic computations, with x as an algebraic variable:
Factor[x^10 - 1]
Get symbolic solutions to equations:
Solve[x^3 - 2 x + 1 == 0, x]
Do calculus symbolically:
Integrate[Sqrt[x + Sqrt[x]], x]
Display results in traditional mathematical form:
Integrate[AiryAi[x], x] // TraditionalForm
Use 2D notation for input:
\!\( \*UnderoverscriptBox[\(\[Sum]\), \(i = 0\), \(n\)] \*FractionBox[\(Binomial[n, i]\ \(i!\)\), \(\((n + 1 + i)\)!\)]\)


Minimize a function inside a spherical ball:
NMinimize[{x^4 + y^4 - z/(x + 1), y > 0}, {x, y, z} \[Element] Ball[ ]]
NDSolve[{y''[x] + Sin[y[x]] y[x] == 0, y[0] == 1, y'[0] == 0}, y, {x, 0, 30}]
Make a plot using the approximate function:
Plot[Evaluate[{y[x], y'[x], y''[x]} /. %], {x, 0, 30}]


The area of a disk (filled circle) of radius r:
Area[Disk[{0, 0}, r]]
Find a circle going through three points:
CircleThrough[{{0, 0}, {1, 0}, {0, 1}}]
Make a shape by “shrinkwrapping” around 100 random points in 3D:
ConvexHullMesh[RandomReal[1, {100, 3}]]


Find the shortest tour of the capitals of Europe (traveling salesman problem):
With[{c = EntityValue[EntityClass["Country", "Europe"], EntityProperty["Country", "CapitalLocation"]]}, GeoListPlot[c[[Last@FindShortestTour[c]]], Joined -> True]]
Factor a big number:
FactorInteger[2^255 - 1]


Make a truth table:
BooleanTable[p || q && (p || ! q), {p}, {q}] // Grid
Find a minimal representation of a Boolean function:
BooleanMinimize[ BooleanCountingFunction[{2, 3}, {a, b, c, d}]] // TraditionalForm

The Computational Universe

Run my favorite example of a very simple program with very complex behavior:
ArrayPlot[CellularAutomaton[30, {{1}, 0}, 200]]
RulePlot shows the underlying rule:

Chemical & Biological Computation

Enter a specification of a molecule:
Make a 3D representation of the molecule:
Draw the corresponding molecule:

Building APIs

Deploy a simple web API that finds the distance from a specified location:
CloudDeploy[ APIFunction[{"loc" -> "Location"}, GeoDistance[#loc, Here] &]]
Create embeddable code for an external Java program to call the API:
EmbedCode[%, "Java"]

Document Generation

Documents are symbolic expressions, like everything else:
DocumentNotebook[{Style["A Circle", "Section"], Style["How to make a circle"], Graphics[Circle[]]}]

Evaluation Control

Hold a computation unevaluated:
Hold[2 + 2 == 4]
Release the hold:

Systems-Level Operations

Run an external process (not allowed in the cloud!):
RunProcess["ps", "StandardOutput"]
Encrypt anything:
Encrypt["sEcreTkey", "Read this if you can!"]

Parallel Computation

I’m running on a 28-core machine:
Sequentially test a sequence of (big) numbers for primality, and find the total time taken:
Table[PrimeQ[2^Prime[n] - 1], {n, 500}] // Counts // AbsoluteTiming
Doing the same thing in parallel takes considerably less time:
ParallelTable[PrimeQ[2^Prime[n] - 1], {n, 500}] // Counts // AbsoluteTiming
Next Section