mathematica 7.0.1 the original mathematica was a computer...

Post on 29-Jun-2020

34 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Mathematica 7.0.1

Overview:

I The original Mathematica was a computer algebra system (CAS)released by Stephen Wolfram in 1988.

I Modern releases have augmented the CAS with powerfulnumerical and graphical capabilities.

I Emphasis is placed on allowing math to be incorporated into neat‘final products’ - through fancy formatting, interactivity etc.

I “Mathematica is renowned as the world’s ultimate application forcomputations. But it’s much more - it’s the only developmentplatform fully integrating computation into complete workflows,moving you seamlessly from initial ideas all the way to deployedindividual or enterprise solutions.”

Mathematica 7.0.1

It’s clear who Wolfram is ultimately trying to entice:

“100% of the Fortune 50 companies rely on Mathematica to maintaintheir competitive edge in innovation.”

I mainly use the basic CAS only, for:

I simplification

I differentiation

I integration

I (quick) visualization

This talk focuses on the background needed to execute these tasksefficiently.

Mathematica 7.0.1

It’s clear who Wolfram is ultimately trying to entice:

“100% of the Fortune 50 companies rely on Mathematica to maintaintheir competitive edge in innovation.”

I mainly use the basic CAS only, for:

I simplification

I differentiation

I integration

I (quick) visualization

This talk focuses on the background needed to execute these tasksefficiently.

Mathematica 7.0.1

GUI:

I Mathematica (.nb) files are called notebooks.

I A notebook consists of input and output cells.

I Each input cell contains at least one command.

I Evaluating an input cell (Shift-Enter) produces an output cellimmediately below it.

Matlab analogy:

I Notebooks mix elements from m-files (saving/loading of multiplecommands) and the interactive command window (evaluationcell-by-cell).

Mathematica 7.0.1

GUI:

I Mathematica (.nb) files are called notebooks.

I A notebook consists of input and output cells.

I Each input cell contains at least one command.

I Evaluating an input cell (Shift-Enter) produces an output cellimmediately below it.

Matlab analogy:

I Notebooks mix elements from m-files (saving/loading of multiplecommands) and the interactive command window (evaluationcell-by-cell).

Mathematica 7.0.1

GUI:

I Mathematica (.nb) files are called notebooks.

I A notebook consists of input and output cells.

I Each input cell contains at least one command.

I Evaluating an input cell (Shift-Enter) produces an output cellimmediately below it.

Matlab analogy:

I Notebooks mix elements from m-files (saving/loading of multiplecommands) and the interactive command window (evaluationcell-by-cell).

Mathematica 7.0.1: Basics

Basic mathematical operations:

In[1]:= 2+3

2-3

2/3

2*3

2^3

Evaluate whole cell by pressing Shift-Enter

Mathematica 7.0.1: Basics

Basic mathematical operations:

In[1]:= 2+3

2-3

2/3

2*3

2^3 Evaluate whole cell by pressing Shift-Enter

Mathematica 7.0.1: Basics

Basic mathematical operations:

In[1]:= 2+3

2-3

2/3

2*3

2^3

Out[1]= 5

Out[2]= -1

Out[3]= 2/3

Out[4]= 6

Out[5]= 8

Mathematica 7.0.1: Basics

Basic mathematical operations:

In[1]:= 2+3

2-3

2/3

2*3

2^3

Out[1]= 5

Out[2]= -1

Out[3]= 2/3

Out[4]= 6

Out[5]= 8

We can modify our input to return a decimal using the N[...]

function.

Mathematica 7.0.1: Basics

Basic mathematical operations:

In[1]:= 2+3

2-3

N[2/3] Alter this line only...

2*3

2^3

Out[1]= 5

Out[2]= -1

Out[3]= 2/3

Out[4]= 6

Out[5]= 8

Mathematica 7.0.1: Basics

Basic mathematical operations:

In[1]:= 2+3

2-3

N[2/3]

2*3

2^3 ...then re-evaluate this whole cell with Shift-Enter

Out[1]= 5

Out[2]= -1

Out[3]= 2/3

Out[4]= 6

Out[5]= 8

Mathematica 7.0.1: Basics

Basic mathematical operations:

In[6]:= 2+3

2-3

N[2/3]

2*3

2^3

Out[6]= 5

Out[7]= -1

Out[8]= 0.666667

Out[9]= 6

Out[10]= 8

The new input and output cells visually replace the old ones.

Mathematica 7.0.1: Basics

Storing/accessing output:

I Variable assignments are straightforward:

In[1]:= a=3

a+4

Out[1]= 3

Out[2]= 7

I The most recent output value is stored in % (like Matlab’s ans):

In[3]:= %+5

Out[3]= 12

I Earlier output values are accessed using Out[...]:

In[4]:= %+Out[1]

Out[4]= 15

Mathematica 7.0.1: Basics

Storing/accessing output:

I Variable assignments are straightforward:

In[1]:= a=3

a+4

Out[1]= 3

Out[2]= 7

I The most recent output value is stored in % (like Matlab’s ans):

In[3]:= %+5

Out[3]= 12

I Earlier output values are accessed using Out[...]:

In[4]:= %+Out[1]

Out[4]= 15

Mathematica 7.0.1: Basics

Storing/accessing output:

I Variable assignments are straightforward:

In[1]:= a=3

a+4

Out[1]= 3

Out[2]= 7

I The most recent output value is stored in % (like Matlab’s ans):

In[3]:= %+5

Out[3]= 12

I Earlier output values are accessed using Out[...]:

In[4]:= %+Out[1]

Out[4]= 15

Mathematica 7.0.1: Basics

General syntax rules:

I Constants and built-in functions are always capitalized.Multi-word functions use multiple capital letters.

I Function arguments go inside brackets.

I Functions can be nested.

Examples:

I Constants: E, I, Pi, Infinity.

I Basic math functions: N[...], Exp[...], Log[...], Sin[...],Cos[...], Tan[...], Abs[...], etc.

I Manipulation functions: Factor[...], Expand[...],FullSimplify[...], TeXForm[...].

Mathematica 7.0.1: Basics

General syntax rules:

I Constants and built-in functions are always capitalized.Multi-word functions use multiple capital letters.

I Function arguments go inside brackets.

I Functions can be nested.

Examples:

I Constants: E, I, Pi, Infinity.

I Basic math functions: N[...], Exp[...], Log[...], Sin[...],Cos[...], Tan[...], Abs[...], etc.

I Manipulation functions: Factor[...], Expand[...],FullSimplify[...], TeXForm[...].

Mathematica 7.0.1: Functions

Built-in function use:

In[1]:= N[Cos[2]]

Out[1]= -0.416147

In[2]:= Expand[(-10 + x)(7 + x)]

Out[2]= -70 - 3x + x^2

Note: * operator only needed to avoid ambiguity!

In[3]:= TeXForm[x/(x+1)]

Out[3]= \frac{x}{x+1}

Mathematica 7.0.1: Functions

Built-in function use:

In[1]:= N[Cos[2]]

Out[1]= -0.416147

In[2]:= Expand[(-10 + x)(7 + x)]

Out[2]= -70 - 3x + x^2

Note: * operator only needed to avoid ambiguity!

In[3]:= TeXForm[x/(x+1)]

Out[3]= \frac{x}{x+1}

Mathematica 7.0.1: Functions

Built-in function use:

In[1]:= N[Cos[2]]

Out[1]= -0.416147

In[2]:= Expand[(-10 + x)(7 + x)]

Out[2]= -70 - 3x + x^2

Note: * operator only needed to avoid ambiguity!

In[3]:= TeXForm[x/(x+1)]

Out[3]= \frac{x}{x+1}

Mathematica 7.0.1: Functions

Misc. syntax tips:

I To get help on a function use ?FunctionName or??FunctionName:

In[1]:= ?Cos

Out[1]= Cos[z] gives the cosine of z.

I Incorrectly-typed function names appear blue:

In[2]:= texform[x/(x+1)]

TeXForm[x/(x+1)]

Out[2]= texform[x/(x+1)]

Out[3]= \frac{x}{x+1}

I As in Matlab, output is suppressed by a semi-colon:

In[4]:= 2+3; Out[4] is defined, just hidden.

Mathematica 7.0.1: Functions

Misc. syntax tips:

I To get help on a function use ?FunctionName or??FunctionName:

In[1]:= ?Cos

Out[1]= Cos[z] gives the cosine of z.

I Incorrectly-typed function names appear blue:

In[2]:= texform[x/(x+1)]

TeXForm[x/(x+1)]

Out[2]= texform[x/(x+1)]

Out[3]= \frac{x}{x+1}

I As in Matlab, output is suppressed by a semi-colon:

In[4]:= 2+3; Out[4] is defined, just hidden.

Mathematica 7.0.1: Functions

Misc. syntax tips:

I To get help on a function use ?FunctionName or??FunctionName:

In[1]:= ?Cos

Out[1]= Cos[z] gives the cosine of z.

I Incorrectly-typed function names appear blue:

In[2]:= texform[x/(x+1)]

TeXForm[x/(x+1)]

Out[2]= texform[x/(x+1)]

Out[3]= \frac{x}{x+1}

I As in Matlab, output is suppressed by a semi-colon:

In[4]:= 2+3; Out[4] is defined, just hidden.

Mathematica 7.0.1: Functions

User-defined functions:

In[1]:= f[x_]:=x^2 Delayed assignment - no output.

In[2]:= f[3]

f[t]

Out[2]= 9

Out[3]= t^2

In[4]:= g[x_,y_]:=Abs[x-y]

g[-3,3]

g[s+h,s-h]

Out[5]= 6

Out[6]= 2 Abs[h]

Mathematica 7.0.1: Functions

User-defined functions:

In[1]:= f[x_]:=x^2 Delayed assignment - no output.

In[2]:= f[3]

f[t]

Out[2]= 9

Out[3]= t^2

In[4]:= g[x_,y_]:=Abs[x-y]

g[-3,3]

g[s+h,s-h]

Out[5]= 6

Out[6]= 2 Abs[h]

Mathematica 7.0.1: Functions

User-defined functions:

In[1]:= f[x_]:=x^2 Delayed assignment - no output.

In[2]:= f[3]

f[t]

Out[2]= 9

Out[3]= t^2

In[4]:= g[x_,y_]:=Abs[x-y]

g[-3,3]

g[s+h,s-h]

Out[5]= 6

Out[6]= 2 Abs[h]

Mathematica 7.0.1: Functions

(Advanced) ‘Patterns’ are used to restrict domains:

In[1]:= g[x_?IntegerQ]:=x^2

g[2]

g[2.5]

Out[2]= 4

Out[3]= g[2.5]

In[4]:= h[x_?NumericQ]:=x^3 Sometimes needed for plotting.

h[2]

h[2.5]

h[t]

Out[5]= 8

Out[6]= 15.625

Out[7]= h[t]

Patterns will only redefine a function on the restricted domain.

Mathematica 7.0.1: Functions

(Advanced) ‘Patterns’ are used to restrict domains:

In[1]:= g[x_?IntegerQ]:=x^2

g[2]

g[2.5]

Out[2]= 4

Out[3]= g[2.5]

In[4]:= h[x_?NumericQ]:=x^3 Sometimes needed for plotting.

h[2]

h[2.5]

h[t]

Out[5]= 8

Out[6]= 15.625

Out[7]= h[t]

Patterns will only redefine a function on the restricted domain.

Mathematica 7.0.1: Lists

Lists:

I Syntax: {1,3,9,27}

I Elements are extracted using double brackets:

In[1]:= {1,3,9,27}[[2]]

Out[1]= 3

I Nesting forms arrays:

In[2]:= {{1,3},{9,27}}[[2,1]]

Out[2]= 9

I The Range[...] function can be used to generate lists:

In[3]:= Range[1,9,2]

Out[3]= {1,3,5,7,9}

Mathematica 7.0.1: Lists

Lists:

I Syntax: {1,3,9,27}

I Elements are extracted using double brackets:

In[1]:= {1,3,9,27}[[2]]

Out[1]= 3

I Nesting forms arrays:

In[2]:= {{1,3},{9,27}}[[2,1]]

Out[2]= 9

I The Range[...] function can be used to generate lists:

In[3]:= Range[1,9,2]

Out[3]= {1,3,5,7,9}

Mathematica 7.0.1: Lists

Lists:

I Syntax: {1,3,9,27}

I Elements are extracted using double brackets:

In[1]:= {1,3,9,27}[[2]]

Out[1]= 3

I Nesting forms arrays:

In[2]:= {{1,3},{9,27}}[[2,1]]

Out[2]= 9

I The Range[...] function can be used to generate lists:

In[3]:= Range[1,9,2]

Out[3]= {1,3,5,7,9}

Mathematica 7.0.1: Lists

Lists:

I Syntax: {1,3,9,27}

I Elements are extracted using double brackets:

In[1]:= {1,3,9,27}[[2]]

Out[1]= 3

I Nesting forms arrays:

In[2]:= {{1,3},{9,27}}[[2,1]]

Out[2]= 9

I The Range[...] function can be used to generate lists:

In[3]:= Range[1,9,2]

Out[3]= {1,3,5,7,9}

Mathematica 7.0.1: Lists

Lists as inputs:

In[1]:= Sin[{0,Pi/2}]

Out[1]= {0,1}

In[2]:= N[Cos[Range[1,3]]]

Out[2]= {0.540302,-0.416147,-0.989992}

Lists as options:

In[3]:= Sum[n,{n,1,9,2}] Sum of odd #s between 1 and 9.

Out[3]= 25

In[4]:= Series[Exp[w],{w,0,2}] Taylor series of Exp[w] about

Out[4]= 1 + w + w^2/2 + O[w^3] w = 0, up to order 2.

Mathematica 7.0.1: Lists

Lists as inputs:

In[1]:= Sin[{0,Pi/2}]

Out[1]= {0,1}

In[2]:= N[Cos[Range[1,3]]]

Out[2]= {0.540302,-0.416147,-0.989992}

Lists as options:

In[3]:= Sum[n,{n,1,9,2}] Sum of odd #s between 1 and 9.

Out[3]= 25

In[4]:= Series[Exp[w],{w,0,2}] Taylor series of Exp[w] about

Out[4]= 1 + w + w^2/2 + O[w^3] w = 0, up to order 2.

Mathematica 7.0.1: Lists

Lists as inputs:

In[1]:= Sin[{0,Pi/2}]

Out[1]= {0,1}

In[2]:= N[Cos[Range[1,3]]]

Out[2]= {0.540302,-0.416147,-0.989992}

Lists as options:

In[3]:= Sum[n,{n,1,9,2}] Sum of odd #s between 1 and 9.

Out[3]= 25

In[4]:= Series[Exp[w],{w,0,2}] Taylor series of Exp[w] about

Out[4]= 1 + w + w^2/2 + O[w^3] w = 0, up to order 2.

Mathematica 7.0.1: Lists

Lists as inputs:

In[1]:= Sin[{0,Pi/2}]

Out[1]= {0,1}

In[2]:= N[Cos[Range[1,3]]]

Out[2]= {0.540302,-0.416147,-0.989992}

Lists as options:

In[3]:= Sum[n,{n,1,9,2}] Sum of odd #s between 1 and 9.

Out[3]= 25

In[4]:= Series[Exp[w],{w,0,2}] Taylor series of Exp[w] about

Out[4]= 1 + w + w^2/2 + O[w^3] w = 0, up to order 2.

Mathematica 7.0.1: Differentiation

Differentiation:

Of undefined functions:

In[1]:= D[f[x],x]

D[f[x],{x,2}]

Out[1]= f’[x]

Out[2]= f’’[x]

Of given functions:

In[3]:= g[x_]:=Exp[-x^2]

D[g[t],t]

D[g[t],{t,2}]

Out[4]= -2 t Exp[-t^2]

Out[5]= -2 Exp[-t^2] + 4 t^2 Exp[-t^2]

Mathematica 7.0.1: Differentiation

Differentiation:

Of undefined functions:

In[1]:= D[f[x],x]

D[f[x],{x,2}]

Out[1]= f’[x]

Out[2]= f’’[x]

Of given functions:

In[3]:= g[x_]:=Exp[-x^2]

D[g[t],t]

D[g[t],{t,2}]

Out[4]= -2 t Exp[-t^2]

Out[5]= -2 Exp[-t^2] + 4 t^2 Exp[-t^2]

Mathematica 7.0.1: Differentiation

To define the resulting expression as a new function, use immediateassignment:

In[1]:= h[t_]=D[Exp[-t^2],{t,2}]

h[0]

Out[1]= -2 Exp[t^2] + 4 t Exp[t^2]

Out[2]= -2

Delayed assignment will not work here!

In[3]:= k[t_]:=D[Exp[-t^2],{t,2}]

k[0]

General::ivar: 0 is not a valid variable.

Out[4]= D[1,{0,2}]

Mathematica 7.0.1: Differentiation

To define the resulting expression as a new function, use immediateassignment:

In[1]:= h[t_]=D[Exp[-t^2],{t,2}]

h[0]

Out[1]= -2 Exp[t^2] + 4 t Exp[t^2]

Out[2]= -2

Delayed assignment will not work here!

In[3]:= k[t_]:=D[Exp[-t^2],{t,2}]

k[0]

General::ivar: 0 is not a valid variable.

Out[4]= D[1,{0,2}]

Mathematica 7.0.1: Immediate/Delayed Assignment

Short version:

I Use := to define functions with known expressions.

I Use = to define functions resulting from other manipulations, andall constants.

(Advanced) Longer version:

I Immediate assignment (f[x_]=...) evaluates the RHS expressiononce (when first called) and assigns the result to f[x] forever.

I Delayed assignment (f[x_]:=...) evaluates the RHS expressioneach time f is called. The value of x is substituted into the RHSexpression before all algebraic and numerical manipulations areevaluated.

Mathematica 7.0.1: Immediate/Delayed Assignment

Short version:

I Use := to define functions with known expressions.

I Use = to define functions resulting from other manipulations, andall constants.

(Advanced) Longer version:

I Immediate assignment (f[x_]=...) evaluates the RHS expressiononce (when first called) and assigns the result to f[x] forever.

I Delayed assignment (f[x_]:=...) evaluates the RHS expressioneach time f is called. The value of x is substituted into the RHSexpression before all algebraic and numerical manipulations areevaluated.

Mathematica 7.0.1: Integration

Integration:

In[1]:= Integrate[t^2,{t,1,2}]

Integrate[Cos[t],{t,0,x}]

Integrate[Exp[-t^2],{t,0,Infinity}]

Integrate[Exp[-t^2],{t,0,1}]

Out[1]= 7/3

Out[2]= Sin[x]

Out[3]= Sqrt[Pi]/2

Out[4]= (Sqrt[Pi] Erf[1])/2

For integrals with no closed-form result, use NIntegrate:

In[5]:= NIntegrate[Exp[-t^2],{t,0,1}]

Out[5]= 0.746824

Quite a few functions have a numerical equivalent with similar syntax.

Mathematica 7.0.1: Integration

Integration:

In[1]:= Integrate[t^2,{t,1,2}]

Integrate[Cos[t],{t,0,x}]

Integrate[Exp[-t^2],{t,0,Infinity}]

Integrate[Exp[-t^2],{t,0,1}]

Out[1]= 7/3

Out[2]= Sin[x]

Out[3]= Sqrt[Pi]/2

Out[4]= (Sqrt[Pi] Erf[1])/2

For integrals with no closed-form result, use NIntegrate:

In[5]:= NIntegrate[Exp[-t^2],{t,0,1}]

Out[5]= 0.746824

Quite a few functions have a numerical equivalent with similar syntax.

Mathematica 7.0.1: Integration

Mathematica can (usually) handle ambiguous cases:

In[1]:= Integrate[t^n,{t,1,Infinity}]

Out[1]= ConditionalExpression[-1/(1+n), Re[n] < -1]

It is also possible to build assumptions in:

In[2]:= Integrate[t^n,{t,0,1},Assumptions->{Re[n] > -1}]

Out[2]= 1/(1+n)

Iterated integrals are performed from right to left:

In[3]:= Integrate[1,{x,0,1},{y,0,x}]

Out[3]= 1/2

Mathematica 7.0.1: Integration

Mathematica can (usually) handle ambiguous cases:

In[1]:= Integrate[t^n,{t,1,Infinity}]

Out[1]= ConditionalExpression[-1/(1+n), Re[n] < -1]

It is also possible to build assumptions in:

In[2]:= Integrate[t^n,{t,0,1},Assumptions->{Re[n] > -1}]

Out[2]= 1/(1+n)

Iterated integrals are performed from right to left:

In[3]:= Integrate[1,{x,0,1},{y,0,x}]

Out[3]= 1/2

Mathematica 7.0.1: Integration

Mathematica can (usually) handle ambiguous cases:

In[1]:= Integrate[t^n,{t,1,Infinity}]

Out[1]= ConditionalExpression[-1/(1+n), Re[n] < -1]

It is also possible to build assumptions in:

In[2]:= Integrate[t^n,{t,0,1},Assumptions->{Re[n] > -1}]

Out[2]= 1/(1+n)

Iterated integrals are performed from right to left:

In[3]:= Integrate[1,{x,0,1},{y,0,x}]

Out[3]= 1/2

Mathematica 7.0.1: Transformation Rules

Transformation Rules:

I Assumptions->{Re[n] > -1} is called a transformation rule.

I These are frequently found in function options or as output fromequation-solving functions.

I Transformation rules always have the form Variable->Value,e.g. x->2.

I Rules are applied to expressions using the /. operator:

In[1]:= 3^x/.x->2

Out[1]= 9

Mathematica 7.0.1: Transformation Rules

Transformation Rules:

I Assumptions->{Re[n] > -1} is called a transformation rule.

I These are frequently found in function options or as output fromequation-solving functions.

I Transformation rules always have the form Variable->Value,e.g. x->2.

I Rules are applied to expressions using the /. operator:

In[1]:= 3^x/.x->2

Out[1]= 9

Mathematica 7.0.1: Transformation Rules

Transformation Rules:

I Assumptions->{Re[n] > -1} is called a transformation rule.

I These are frequently found in function options or as output fromequation-solving functions.

I Transformation rules always have the form Variable->Value,e.g. x->2.

I Rules are applied to expressions using the /. operator:

In[1]:= 3^x/.x->2

Out[1]= 9

Mathematica 7.0.1: Transformation Rules

Transformation Rules:

I Assumptions->{Re[n] > -1} is called a transformation rule.

I These are frequently found in function options or as output fromequation-solving functions.

I Transformation rules always have the form Variable->Value,e.g. x->2.

I Rules are applied to expressions using the /. operator:

In[1]:= 3^x/.x->2

Out[1]= 9

Mathematica 7.0.1: Solving Equations

Solving algebraic equations:

I Solve[eqns,vars] solves the list of polynomialequations/inequalities eqns for the list of variables vars:

In[1]:= Solve[x^2+1 == 0,x]

Out[1]= {{x -> -I}, {x -> I}}

I All input equalities are written using ==.

I Solutions are returned as transformation rules:

In[2]:= x/.Out[1]

Out[2]= {-I,I}

Mathematica 7.0.1: Solving Equations

Solving algebraic equations:

I Solve[eqns,vars] solves the list of polynomialequations/inequalities eqns for the list of variables vars:

In[1]:= Solve[x^2+1 == 0,x]

Out[1]= {{x -> -I}, {x -> I}}

I All input equalities are written using ==.

I Solutions are returned as transformation rules:

In[2]:= x/.Out[1]

Out[2]= {-I,I}

Mathematica 7.0.1: Solving Equations

Solving algebraic equations:

I Solve[eqns,vars] solves the list of polynomialequations/inequalities eqns for the list of variables vars:

In[1]:= Solve[x^2+1 == 0,x]

Out[1]= {{x -> -I}, {x -> I}}

I All input equalities are written using ==.

I Solutions are returned as transformation rules:

In[2]:= x/.Out[1]

Out[2]= {-I,I}

Mathematica 7.0.1: Solving Equations

Solving algebraic equations:

I Solve[eqns,vars,dom] allows solution over restricted domains:

In[1]:= Solve[x^2+1 == 0,x,Reals] (or Integers.)

Out[1]= {}

I More generally, FindRoot[eqns,{{x,x0},{y,y0},...}]numerically solves the list of equations/inequalities eqns for thelist of variables {x,y,...} starting from {x0,y0,...}:

In[2]:= FindRoot[Cos[x] == x,{x,0}]

Out[2]= {x -> 0.739085}

Mathematica 7.0.1: Solving Equations

Solving algebraic equations:

I Solve[eqns,vars,dom] allows solution over restricted domains:

In[1]:= Solve[x^2+1 == 0,x,Reals] (or Integers.)

Out[1]= {}

I More generally, FindRoot[eqns,{{x,x0},{y,y0},...}]numerically solves the list of equations/inequalities eqns for thelist of variables {x,y,...} starting from {x0,y0,...}:

In[2]:= FindRoot[Cos[x] == x,{x,0}]

Out[2]= {x -> 0.739085}

Mathematica 7.0.1: Solving Equations

Solving differential equations:

I DSolve[eqns,{y1[x],y2[x],...},x] solves the list ofdifferential equations/inequalities eqns for the list of functions{y1[x],y2[x],...}:

In[1]:= DSolve[y’[x] == 1,y[x],x]

Out[1]= {{y[x] -> x+C[1]}}

I Including boundary conditions:

In[2]:= y[x]/.DSolve[{y’[x] == 1,y[1]==3},y[x],x][[1]]

Out[2]= 2+x

Mathematica 7.0.1: Solving Equations

Solving differential equations:

I DSolve[eqns,{y1[x],y2[x],...},x] solves the list ofdifferential equations/inequalities eqns for the list of functions{y1[x],y2[x],...}:

In[1]:= DSolve[y’[x] == 1,y[x],x]

Out[1]= {{y[x] -> x+C[1]}}

I Including boundary conditions:

In[2]:= y[x]/.DSolve[{y’[x] == 1,y[1]==3},y[x],x][[1]]

Out[2]= 2+x

Mathematica 7.0.1: Solving Equations

Solving differential equations:

I NDSolve[eqns,{y1[x],y2[x],...},{x,xmin,xmax}]

numerically solves the same system between xmin and xmax:

In[3]:= NDSolve[{y’[x]==Sin[x],y[0]==1},y[x],{x,0,10}]

Out[3]= {{y[x]->InterpolatingFunction[{{0.,10.}},<>][x]}}

I Boundary/initial conditions must be provided in this case.

Mathematica 7.0.1: Plotting

Basic plot:

Plot[Exp[-x],{x,0,5}]

1 2 3 4 5

0.2

0.4

0.6

0.8

1.0

Mathematica 7.0.1: Plotting

Parametric plot:

ParametricPlot[{2 Cos[t],Sin[t]},{t,0,2Pi}]

-2 -1 1 2

-1.0

-0.5

0.5

1.0

Mathematica 7.0.1: Plotting

Contour plot:

ContourPlot[Sin[x y],{x,-Pi,Pi},{y,-Pi,Pi}]

-3 -2 -1 0 1 2 3

-3

-2

-1

0

1

2

3

Mathematica 7.0.1: Plotting

Contour plot with specific curves:

ContourPlot[Sin[x y] == Range[0,1,0.1],{x,-Pi,Pi},{y,-Pi,Pi}]

-3 -2 -1 0 1 2 3

-3

-2

-1

0

1

2

3

Mathematica 7.0.1: Plotting

3D plot:

Plot3D[Sin[x y],{x,-Pi,Pi},{y,-Pi,Pi}]

Warning: high quality!

Mathematica 7.0.1: Plotting

(Advanced) List plot: (syntax is slightly more complex)

I ListPlot[{{x1,y1},{x2,y2},...}] plots the points (x1,y1),(x2,y2) etc.

I Suitable lists are usually either:

1. Generated using Table[...]

2. Constructed from separate lists {x1,x2,...} and {y1,y2,...}.

Table[...] is an extension of Range[...]:

In[1]:= Table[x^2,{x,1,9,2}]

Out[1]= {1,9,25,49,81}

Commands like Table[{f[x],g[x]},{x,0,2 Pi,0.1}] create lists ofpoints suitable for ListPlot[...].

Mathematica 7.0.1: Plotting

(Advanced) List plot: (syntax is slightly more complex)

I ListPlot[{{x1,y1},{x2,y2},...}] plots the points (x1,y1),(x2,y2) etc.

I Suitable lists are usually either:

1. Generated using Table[...]

2. Constructed from separate lists {x1,x2,...} and {y1,y2,...}.

Table[...] is an extension of Range[...]:

In[1]:= Table[x^2,{x,1,9,2}]

Out[1]= {1,9,25,49,81}

Commands like Table[{f[x],g[x]},{x,0,2 Pi,0.1}] create lists ofpoints suitable for ListPlot[...].

Mathematica 7.0.1: Plotting

(Advanced) List plot: (syntax is slightly more complex)

I ListPlot[{{x1,y1},{x2,y2},...}] plots the points (x1,y1),(x2,y2) etc.

I Suitable lists are usually either:

1. Generated using Table[...]

2. Constructed from separate lists {x1,x2,...} and {y1,y2,...}.

Table[...] is an extension of Range[...]:

In[1]:= Table[x^2,{x,1,9,2}]

Out[1]= {1,9,25,49,81}

Commands like Table[{f[x],g[x]},{x,0,2 Pi,0.1}] create lists ofpoints suitable for ListPlot[...].

Mathematica 7.0.1: Plotting

(Advanced) List plot (with Table):

ListPlot[Table[{2 Cos[t],Sin[t]},{t,0,2 Pi,0.1}]]

-2 -1 1 2

-1.0

-0.5

0.5

1.0

Mathematica 7.0.1: Plotting

(Advanced) List plot (with Transpose):

Suppose instead we wish to plot ydata={y1,y2,...} againstxdata={x1,x2,...} for given lists. We can mesh these separate liststogether correctly using Transpose[...]:

ListPlot[Transpose[{xdata,ydata}]]

will produce the desired result.

From the ‘2d Graphics Tips and Tricks’ sheet athttp://www.nhn.ou.edu/~morrison/Mathematica/index.shtml

Mathematica 7.0.1: Plotting

Plotting options:

I PlotRange->{{xmin,xmax},{ymin,ymax},{zmin,zmax}}

I AxesLabel->{"x-axis label","y-axis label"}

I PlotLabel->"plot label"

I PlotStyle->{Color,Linestyle,Linewidth}

I Axes->True/False

I Frame->True/False

I Joined->True (for ListPlot)

Mathematica 7.0.1: Plotting

Overlaid plots (using lists):

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

PlotStyle->{{Red,Dashed},{Blue,Dotted}}]

1 2 3 4 5 6

-1.0

-0.5

0.5

1.0

Mathematica 7.0.1: Plotting

Overlaid plots (using Show[...]):

plot1 = ParametricPlot[{Cos[t]+0.1Cos[20t],Sin[t]+

0.1Sin[20t]},{t,0,2Pi}];

plot2 = ListPlot[Table[{Cos[t],Sin[t]},

{t,0,2Pi,Pi/4}],PlotStyle->{Red},

Joined->{True}];

Show[plot1,plot2]

-1.0 -0.5 0.5 1.0

-1.0

-0.5

0.5

1.0

Mathematica 7.0.1: Remote Access

Remote access:

I Command line: connect using

ssh -p 31415 skent@gila.math.arizona.edu

then type math to run Mathematica. This mode is interactiveonly (no notebook-style formatting).

I Windowed (slow): connect using

ssh -p 31415 -Y skent@gila.math.arizona.edu

then type Mathematica. The full Mathematica GUI is displayedin this mode.

Mathematica 7.0.1: Other Tricks

I To clear a definition, use Clear[...]

I To clear all definitions, use ClearAll["Global‘*"].(It is useful to place this line in the first input cell of every notebook.)

I To flatten nested lists, use Flatten[...]

I It is possible to combine some commands using a piping (akapostfix) structure. Commands are stacked using the // operator:

In[1]:= Pi/2 // N

1/Sqrt[2] // ArcSin // N

Out[1]= 1.5708

Out[2]= 0.785398

This works for most single-argument functions (FullSimplify,TeXForm etc.)

Mathematica 7.0.1: Other Tricks

I To clear a definition, use Clear[...]

I To clear all definitions, use ClearAll["Global‘*"].(It is useful to place this line in the first input cell of every notebook.)

I To flatten nested lists, use Flatten[...]

I It is possible to combine some commands using a piping (akapostfix) structure. Commands are stacked using the // operator:

In[1]:= Pi/2 // N

1/Sqrt[2] // ArcSin // N

Out[1]= 1.5708

Out[2]= 0.785398

This works for most single-argument functions (FullSimplify,TeXForm etc.)

Mathematica 7.0.1: Other Tricks

I To clear a definition, use Clear[...]

I To clear all definitions, use ClearAll["Global‘*"].(It is useful to place this line in the first input cell of every notebook.)

I To flatten nested lists, use Flatten[...]

I It is possible to combine some commands using a piping (akapostfix) structure. Commands are stacked using the // operator:

In[1]:= Pi/2 // N

1/Sqrt[2] // ArcSin // N

Out[1]= 1.5708

Out[2]= 0.785398

This works for most single-argument functions (FullSimplify,TeXForm etc.)

Mathematica 7.0.1: Other Neat Features

I Scientific data sets for e.g. weather, planet positions are built inan can be accessed using functions like WeatherData[...],AstronomicalData[...], etc.

I The generic Graphics[...] environment can be used to createdecent-looking diagrams.

I Mathematica can produce animations and manipulable graphicsusing Animate[...] and Manipulate[...] in combination withPlot and Graphics.

I See accompanying notebook for examples of these.

Mathematica 7.0.1: Other Neat Features

I Scientific data sets for e.g. weather, planet positions are built inan can be accessed using functions like WeatherData[...],AstronomicalData[...], etc.

I The generic Graphics[...] environment can be used to createdecent-looking diagrams.

I Mathematica can produce animations and manipulable graphicsusing Animate[...] and Manipulate[...] in combination withPlot and Graphics.

I See accompanying notebook for examples of these.

Mathematica 7.0.1: Other Neat Features

I Scientific data sets for e.g. weather, planet positions are built inan can be accessed using functions like WeatherData[...],AstronomicalData[...], etc.

I The generic Graphics[...] environment can be used to createdecent-looking diagrams.

I Mathematica can produce animations and manipulable graphicsusing Animate[...] and Manipulate[...] in combination withPlot and Graphics.

I See accompanying notebook for examples of these.

Mathematica 7.0.1: Other Neat Features

I Scientific data sets for e.g. weather, planet positions are built inan can be accessed using functions like WeatherData[...],AstronomicalData[...], etc.

I The generic Graphics[...] environment can be used to createdecent-looking diagrams.

I Mathematica can produce animations and manipulable graphicsusing Animate[...] and Manipulate[...] in combination withPlot and Graphics.

I See accompanying notebook for examples of these.

Mathematica 7.0.1: Quirks

Quirks to watch out for:

I ‘Undo’ button exists but rarely functions in any useful way.

I Highlighting with arrow keys is double ended :-S

I Mathematica always seems to try algebraic manipulation first.This can lead to problems when plotting functions withadditional (numerical) parameters. In this case, using a?NumericQ pattern typically avoids the issue.

I There is no equivalent of Matlab’s workspace - no easy way tocheck which variables are already defined.

Mathematica 7.0.1: Quirks

Quirks to watch out for:

I ‘Undo’ button exists but rarely functions in any useful way.

I Highlighting with arrow keys is double ended :-S

I Mathematica always seems to try algebraic manipulation first.This can lead to problems when plotting functions withadditional (numerical) parameters. In this case, using a?NumericQ pattern typically avoids the issue.

I There is no equivalent of Matlab’s workspace - no easy way tocheck which variables are already defined.

Mathematica 7.0.1: Quirks

Quirks to watch out for:

I ‘Undo’ button exists but rarely functions in any useful way.

I Highlighting with arrow keys is double ended :-S

I Mathematica always seems to try algebraic manipulation first.This can lead to problems when plotting functions withadditional (numerical) parameters. In this case, using a?NumericQ pattern typically avoids the issue.

I There is no equivalent of Matlab’s workspace - no easy way tocheck which variables are already defined.

Mathematica 7.0.1: Quirks

Quirks to watch out for:

I ‘Undo’ button exists but rarely functions in any useful way.

I Highlighting with arrow keys is double ended :-S

I Mathematica always seems to try algebraic manipulation first.This can lead to problems when plotting functions withadditional (numerical) parameters. In this case, using a?NumericQ pattern typically avoids the issue.

I There is no equivalent of Matlab’s workspace - no easy way tocheck which variables are already defined.

top related