From NewWiki

Mathematica

Contents

Mathematica is a widely-used computer algebra system originally developed by Stephen Wolfram and sold by his company Wolfram Research. Mathematica is also a powerful programming language emulating multiple paradigms on top of term-rewriting.

Overview

Wolfram started to work on the program in 1986 and released the first version in 1988. The current version is 7.0.1.0 (released in February 2009). It is available on a wide variety of computer systems.

The Mathematica programming language is based on term-rewriting and supports both functional programming and procedural programming (though functional code is much more efficient in general). It is implemented in an object-oriented variant of C, but the bulk of the extensive code library is actually written in the Mathematica language that can be used to extend the system. Typically, new code is added in the form of Mathematica packages, i.e., text files written in the Mathematica language.

In the Mathematica system, the core language is interpreted by a kernel that performs the actual computations. The results are usually communicated to one of several frontends. Communication between the kernel and the frontend (or any other client, like user-written programs) uses the MathLink protocol, often over a network. It is possible for several frontend processes to connect to the same kernel, and for one frontend to be connected to several kernels.

Unlike some other computer algebra systems like, e.g., Maxima or Maple, Mathematica tries to apply the currently stored transformation rules as long as possible, looking for a fixed point. For this to be meaningful, absence of side-effects is beneficial (though not enforced), hence the similarity to functional programming. Functions and code are first-class and not opaque. Scoping is dynamic, but there are also some constructs that try to simulate lexical scope (all of these can easily be broken).

Examples

The following Mathematica sequence will find the determinant of the 6×6 matrix whose ''i'', ''j'''th entry contains ''ij'' with all zero entries replaced as 1.
In[1]:=  Det[Array[Times, {6, 6}, 0] /. 0 -> 1]

Out[1]:=0

So the determinant of such a matrix is 0.

The following numerically calculates the root of the equation ''e''''x'' = ''x''2 + 2, starting at the point ''x'' = -1.
In[2]:=  FindRoot[Exp[x] == x^2 + 2, {x, -1}]

Out[2]:=

Multiple paradigms in one language

Mathematica permits multiple programming paradigmmatic approaches to programming. Consider a simple example: we want a table of values of gcd(''x'', ''y'') for 1 ≤ ''x'' ≤ 5, 1 ≤ ''y'' ≤ 5.


In[3]:=  Array[GCD, {5, 5}]

Out[3]:=

There are at least three other approaches to this:
In[4]:=  Table[GCD[x, y], {x, 1, 5}, {y, 1, 5}]

Out[4]:=

An APL-style approach:
In[5]:=  Outer[GCD, Range[5], Range[5]]

Out[5]:=

Outer corresponds to the outer product operator, Range corresponds to the iota operator.

An iterative approach:
In[6]:=  l1 := {};
Here we initialize as empty list, since we want a list in the end.
In[7]:=  For[i = 1, i <= 5, i++, l2 := {}; For[j = 1, j <= 5, j++,l2 := Evaluate[Append[l2, GCD[i, j]]]]; l1 := Evaluate[Append[l1, l2];]];

In[8]:=  l1

Observe that this solution is considerably larger than the previous three.

Front ends

The default Mathematica frontend features extensive layout and graphical capabilities, performs prettyprinting and offers a notebook metaphor - user input (both text and Mathematica input) as well as results sent by the kernel (including graphics and sound) are placed in a hierarchy of cells (as is the case for Maple), which also allows for outlining and sectioning of a document. Starting with version 3.0 of the software, notebooks are represented as expressions that can be manipulated by the kernel, and the typesetting features of the frontend were deemed sufficiently important to warrant the availability of a dedicated reader software for displaying Mathematica notebooks, the '''MathReader''' software that is not tied to a commercial license.

Several other frontends are also available, e.g., ''JMath'' or ''mash'', but the standard Mathematica frontend is the most popular.

Connections with other applications

The ''MathLink'' protocol allows not only communication between the Mathematica kernel and front-end, but also between the kernel and arbitrary applications. Wolfram Research distributes freely a developer kit for linking applications written in the C programming language to the Mathematica kernel through ''MathLink'', as well as ''J/Link'', a similar, easier to use system for the Java programming language. Using ''J/Link'', a Java program can ask Mathematica to perform computations; also, a Mathematica program can load any Java class, manipulate Java objects and perform method calls, making it possible, for instance, to build Java graphical user interfaces from Mathematica.

See also

External links

Contributors to this Page The 5 contributors to this page (ordered by date of first contribution):
User Latest Contribution # Contributions
1. tttrung Thu 1 Sep 2005 08:37:57 13
2. DeusEx Fri 30 Dec 2005 09:51:15 1
3. ebujak Thu 1 Jan 2009 14:36:35 1
4. ameliakayden Tue 3 Aug 2010 06:47:17 1
5. Ingolf Dahl Tue 3 Aug 2010 13:34:46 1

This page was created by tttrung on Thu 1 Sep 2005 07:27:15 and last updated by Ingolf Dahl on Tue 3 Aug 2010 13:34:46
Retrieved from Mathematica .
Personal tools