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)\)!\)]\)
Numerics
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}]
Geometry
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}]]
FindDistribution[StringLength[WordList[]]]
Algorithms
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]
Logic
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:
RulePlot[CellularAutomaton[30]]
Chemical & Biological Computation
Enter a specification of a molecule:
Molecule["CC(CC)CC"]
Make a 3D representation of the molecule:
MoleculePlot3D[Molecule["CC(CC)CC"]]
BioSequence["AAGGT"]
Draw the corresponding molecule:
MoleculePlot[BioSequence["AAGGT"]]
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:
ReleaseHold[%]
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:
$ProcessorCount
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