# Mathematica Programming Language–An Introduction

Posted
by JoshReuben
on Geeks with Blogs
See other posts from Geeks with Blogs
or by JoshReuben

Published on Wed, 04 Jul 2012 03:59:45 GMT
Indexed on
2012/07/04
3:16 UTC

Read the original article
Hit count: 278

The **Mathematica** http://www.wolfram.com/mathematica/ programming model consists of a kernel computation engine (or grid of such engines) and a front-end of notebook instances that communicate with the kernel throughout a session. The programming model of Mathematica is incredibly rich & powerful – besides numeric calculations, it supports symbols (eg **Pi, I, E**) and control flow logic.

obviously I could use this as a simple calculator:

**5 * 10**

**--> 50**

but this language is much more than that!

for example, I could use control flow logic & setup a simple infinite loop:

**x=1;**

**While [x>0, x=x,x+1]**

Different brackets have different purposes:

- square brackets for function arguments:
**Cos[x]** - round brackets for grouping:
**(1+2)*3** - curly brackets for lists:
**{1,2,3,4}**

The power of Mathematica (as opposed to say Matlab) is that it gives exact symbolic answers instead of a rounded numeric approximation (unless you request it):

Mathematica lets you define scoped variables (symbols):

**a=1;**

**b=2;**

**c=a+b**

**--> 5**

these variables can contain symbolic values – you can think of these as partially computed functions:

use **Clear[x]** or **Remove[x]** to zero or dereference a variable.

To compute a numerical approximation to n significant digits (default n=6), use **N[x,n]** or the **//N** prefix:

**Pi //N**

**-->3.14159**

**N[Pi,50]**

**--> 3.1415926535897932384626433832795028841971693993751**

The kernel uses **%** to reference the lastcalculation result, **%%** the

2nd last, **%%%** the 3rd last etc –> clearer statements:

eg instead of:

**Sqrt[Pi+Sqrt[ Sqrt[Pi+Sqrt[Pi]]]**

do:

**Sqrt[Pi];**

**Sqrt[Pi+%];**

**Sqrt[Pi+%]**

The help system supports wildcards, so I can search for functions like so:

**?Inv***

Mathematica supports some very powerful programming constructs and a rich function library that allow you to do things that you would have to write allot of code for in a language like C++.

the** Factor** function – factorization:

**Factor[x^3 – 6*x^2 +11x – 6]**

**--> (-3+x) (-2+x) (-1+x)**

the **Solve** function – find the roots of an equation:

**Solve[x^3 – 2x + 1 == 0]**

the **Expand** function – express (1+x)^10 in polynomial form:

**Expand[(1+x)^10]**

**--> 1+10x+45x^2+120x^3+210x^4+252x^5+210x^6+120x^7+45x^8+10x^9+x^10**

the **Prime** function – what is the 1000th prime?

**Prime[1000]**

**-->7919**

Mathematica also has some powerful graphics capabilities:

the **Plot** function – plot the graph of y=Sin x in a single period:

**Plot[Sin[x], {x,0,2*Pi}]**

you can also plot 3D surfaces of functions using **Plot3D** function

© Geeks with Blogs or respective owner