è Utvecklades av Wolfram Research (Stephen Wolfram) på 80-talet è Programmet finns bl.a. till Windows, Mac OS X, Linux.
è Finns (åtminstone) installerat i ASA B121 (Stansen), i matematik institutionens datasal, samt på tuxedo.abo.fi
è Mest använd för symboliska beräkningar
¢ | £
Köra Mathematica på tuxedo.abo.fi
è Man kan köra Mathematica på unixservern tuxedo.abo.fi i textläge.
è Inte speciellt användarvänligt, men kan lätt utföra enkla beräkningar.
è För att starta programmet loggar man in t.ex. med SSH på tuxedo.abo.fi och skriver kommandot "math".
è Avsluta med kommandot "Quit".
¢ | £
Användargränssnittet
è Användargränssnittet är uppbyggt kring s.k. notebooks och flytande verktygspaletter.
è Klarar sig helt utan verktygspaletterna, men de underlättar i många fall.
è I version 7 finns bland annat "Basic Math Assistant" som innehåller de flesta funktioner man behöver
è Kommandon skrivs in i ett inputfält i en notebook och evalueras med SHIFT + ENTER
è Vanliga aritmetiska uttryck kan användas.
2+5 ^ 2-4 Sqrt@9D +Sin@2 Pi3D
15+ 3 2
è Observera att inbyggda funktioner och konstanter skrivs med stor bokstav.
è Funktioner: Sqrt[ ], Exp[ ], Cos[ ], ArcSin[ ].
è Konstanter: E, I, Infinity, Pi
è Vanliga parenteser () används för att gruppera uttryck.
¢ | £
Hjälpfunktioner och manual
è Mathematica har en utmärkt inbyggd manual som hittas i "Help" menyn.
è För att få hjälp om ett specifikt kommando används ?Funktionsnamn
? Sqrt
Sqrt@zD or z gives the square root of z.
è Kan även trycka F1 då markören befinner sig på ett kommando.
¢ | £
Uttryck och symboler i Mathematica
Numerisk evaluering (N)
N@PiD 3.14159
N@Pi, 50D
3.1415926535897932384626433832795028841971693993751
E N
2.71828
Ge variabler ett värde ( = ) och tömma variabler ( =.)
a = 5 Pi -2 -2+5Π
a^ 2
H-2+5ΠL2
N@a, 10D 13.70796327
a=. a a
Jämförelser ( ==, >, >=, <, <=, != )
2 1 False
2 > 1 True
Skriv ej ut resultatet (;)
N@PiD;
a = 2+Exp@1D;
a
2+ ã
Listor (Räckor, Arrays) { }
A = 81, 5, 6, 3, 10<
81, 5, 6, 3, 10<
A@@3DD 6
A@@2 ;; 4DD 85, 6, 3<
Ersätta värden i uttryck (/. eller ReplaceAll)
è För att ersätta variabler i uttryck med ett värde, en annan variabel eller ett uttryck används /. (snedstreck och punkt). Är en kortform för kommandot ReplaceAll
Clear@a,b, cD;
a = b+c b+c
a .b ® 1 1+c
ReplaceAll@a,8b ® Cos@yD,c ® Sin@xD<D
Cos@yD +Sin@xD
è Detta ändrar inte värdet på det ursprungliga uttrycket:
a
b+c
è Pilen skrivs med ett streck och ett större än tecken (Mathematica ersätter det automatiskt med en pil) eller så använder man någon av verktygspaletterna.
Referera till tidigare erhållna resultat
2+3 5
% +10
15
%25+ %26
15+ %26
è Obs! Spara hellre svaret till en variabel, eftersom referenserna ändras vartefter nya uttryck beräknas.
¢ | £
Funktioner
Funktioner defineras enligt
f@x_D := x^ 2;
g@x_, y_D :=x +y;
è Sedan kan de användas som vilken inbyggd funktion som helst.
è Observera _-tecknet efter variabeln.
f@2D +g@4, 3D
11
è För att kontrollera en funktions definition skriv ?Funktionsnamn.
? f
Global`f f@x_D := x2
Begränsa definitionsmängden
Clear@hD
h@x_D := Sqrt@xD ; x ³ 0
? h
Global`h
h@x_D := x ; x³ 0
h@3D h@-1D
3 h@-1D
Styckevis definerade funktioner
ã Alternativ 1
f@x_D := -1 ;x < -1 f@x_D := x ; x ³ -1 f@-100D
f@100D
Plot@f@xD, 8x,-2, 1<D
-1 100
-2.0 -1.5 -1.0 -0.5 0.5 1.0
-1.0 -0.5 0.5 1.0
ã Alternativ 2
g@x_D := Piecewise@88-1,x < -1<, 8x,x ³ -1<<D Plot@g@xD, 8x,-2, 1<D
-2.0 -1.5 -1.0 -0.5 0.5 1.0
-1.0 -0.5 0.5 1.0
Anropa funktioner med flera värden (/@ eller Map)
è För att anropa en funktion med flera givna värden kan man använda Map- funktionen eller dess kortform /@
Clear@fD;
f@x_D := 2x^ 2-4x;
Plot@f@xD, 8x,-1, 4<D
-1 1 2 3 4
5 10 15
f 80, 1, 2, 3<
Map@f, 80, 1, 2, 3<D
80,-2, 0, 6<
80,-2, 0, 6<
è Om man har en funktion av flera variabler, kan man använda MapThread istället:
g@x_, y_D :=2x+y;
MapThread@g, 881, 2, 3<, 80, 1, 1<<D 82, 5, 7<
¢ | £
Aritmetik
è I verktygsfältet "Basic Math Assistant" -> "Basic Commands" -> "y==x" finns flera olika funktioner för att omforma uttryck.
p = H2+xL H3+yL H4+zL^ 2
H2+xL H3+yL H4+zL2
p2 =Expand@pD
96+48 x+32 y+16 x y+48 z+24 x z+
16 y z+8 x y z+6 z2+3 x z2+2 y z2 +x y z2
Factor@p2D
H2+xL H3+yL H4+zL2
FullSimplify@p2+p2^ 2D H2+xL H3+yL H4+zL2
I97+2 yH4+zL2+xH3+yL H4+zL2 +6 zH8+zLM
¢ | £
Vektorer och matriser
Vektorer
è Mathematica tolkar vektorer som listor.
a = 81, 2, -1<;b = 82,-2, 3<;
è Addition och subtraktion av vektorer fungerar som vanligt.
a+b 83, 0, 2<
è Inre produkten fås som den ena produkten "punkt" den andra.
a.b
-5
Matriser
è Mathematica tolkar matriser som listor av vektorer, alltså dubbellistor.
A = 881, 3<, 8-4, 9<<;B = 882, 3<, 8-1, 1<<;
MatrixForm@AD MatrixForm@BD
J 1 3 -4 9 N
J 2 3 -1 1 N
è Addition och subtraktion av matriser fungerar som vanligt.
A+B MatrixForm
J 3 6 -5 10 N
è Matrismultiplikation är den ena matrisen "punkt" den andra.
A.B MatrixForm
J -1 6 -17 -3 N
Matrisfunktioner
ã Determinanten
Det@AD
21
ã Transponatet
MatrixForm@Transpose@BDD
J2 -1 3 1 N
ã Matrisinvers
MatrixForm@Inverse@ADD
3 7
-1
7 4 21
1 21
ã Egenvärden och egenvektorer
Eigenvalues@AD Eigenvectors@AD Eigensystem@AD 87, 3<
881, 2<, 83, 2<<
887, 3<, 881, 2<, 83, 2<<<
¢ | £
Integrering och differentiering
Differentiering
è Differentiering av en funktion kan göras genom att använda ' - tecknet.
f@x_D := Exp@-x^ 2D;
f'@xD
-2ã-x2 x
f''@xD
-2ã-x2 +4ã-x2 x2
è Differentiering av en funktion kan även göras med hjälp av D- funktionen.
D@f@xD, xD
-2ã-x2 x
è Högre ordningens derivator fås på följande sätt
D@x^x, 8x, 2<D
x-1+x+xxH1+Log@xDL2
ã Exempel: Gör en funktion som ger ut n-te ordningens derivata av den naturliga logaritmfunktionen
Clear@x,nD;
DLog@n_D:= D@Log@xD, 8x, n<D;
DLog 81, 2, 10<
91 x
, - 1 x2
, -362 880 x10
=
Integrering
è Integrering kan göras genom att använda någon av paletterna "Basic Math Assistant" eller "Classroom Assistant"
à
0 1
x3 âx
1 4
àSin@xD âx
-Cos@xD
è Integrering kan även göras med hjälp av Integrate- funktionen.
Integrate@x^ 3, 8x, 0, 1<D 1
4
Integrate@Sin@xD, xD
-Cos@xD
è Ifall Mathematica inte klarar av att utföra en integration returnereras funktionen själv:
è
funktionen själv:
Integrate@Sin@xD Log@xD, xD
à
Sin@xD Log@xD
âx
è Numerisk integration utförs med NIntegrate- kommandot:
NIntegrate@Sin@xD Log@xD, 8x, 2, 10<D 0.275074
¢ | £
Summor och produkter
Summor
è Summor görs antingen med hjälp av paletterna eller så använder man Sum- kommandot.
â
k=1
¥ 1 k2
Π2 6
Sum@1k^ 2,8k, 1, Infinity<D
Π2 6
è Ifall summan divergerar:
Sum@1k, 8k, 1, Infinity<D
Sum::div : Sum does not converge.
â
k=1
¥ 1 k
Produkter
è Produkter fås på samma sätt som summor, men kommandot är Product istället för Sum
ä
i=1 n
i^ 2
Hn!L2
Product@1-1i^ 4, 8i, 2, Infinity<D Sinh@ΠD
4Π
è Ifall produkten ej konvergerar:
Product@1+1i, 8i, 1, Infinity<D
Product::div : Product does not converge.
ä
i=1
¥
1+ 1 i
¢ | £
Gränsvärden
è Gränsvärden bestäms med Limit- kommandot
Limit@Sin@xD x, x ® 0D 1
Limit@H1+xnL^n, n ® InfinityD ãx
Limit@1x, x ® 0, Direction ® -1D
¥
Limit@1x, x ® 0, Direction ® +1D - ¥
¢ | £
Ekvationslösning
è Ekvationer med en eller flera obekanta variabler löses med Solve- kommandot.
Clear@a,b, c, xD;
Solve@ax^ 2+bx+c== 0, xD
99x®
-b- b2-4 a c
2 a =, 9x ®
-b+ b2-4 a c
2 a ==
Solve@2x^ 2-2x-10== 0,xD N@%D
99x® 1
2 I1- 21 M=, 9x ® 1
2 I1+ 21M==
88x® -1.79129<, 8x® 2.79129<<
è Resultatet ges som ersättningsuttryck (alltså med ® ). Vill man ha dem som punkter kan man göra på följande sätt
sol = Solve@2x^ 2-2x-10== 0, xD x .sol
99x® 1
2 I1- 21 M=, 9x ® 1
2 I1+ 21M==
91
2 I1- 21M, 1
2 I1+ 21M=
è För att lösa ekvationssystem används && mellan de olika ekvationerna.
Observera att även ett högerled måste finnas med, t.ex. == 0.
Solve@ax+y ==7 &&bx-y ==1, 8x, y<D
99x® 8 a+b
, y ® -a-7 b a+b ==
Exempel: Hitta skärningsspunkterna mellan en cirkel och en parabel
pts = Solve@x^ 2+y^ 2 1 &&y-2x^ 2+32 0,8x, y<D
99y ® 1
4 I-1- 5 M, x ® -1 2
1
2 I5- 5 M =, 9y® 1
4 I-1- 5 M, x ® 1 2
1
2 I5- 5 M =,
9y® 1
4 I-1+ 5 M, x ® - 5 8
+ 5
8 =,
9y® 1
4 I-1+ 5 M, x ® 5 8
+ 5
8 ==
Show@8ContourPlot@8x^ 2+y^ 2 1,y-2x^ 2+32 0<, 8x, -1.5, 1.5<, 8y, -1.5, 1.5<D,
Graphics@8Red, PointSize@MediumD, Point@8x,y< . ptsD<D<D
-1.5 -1.0 -0.5 0.0 0.5 1.0 1.5
-1.5 -1.0 -0.5 0.0 0.5 1.0 1.5
¢ | £
Rekursiva funktioner
Exempel: Skapa en funktion som beräknar fakulteten (!) av ett tal
facHnL = 9 1, n= 1
n *fHn-1L, n > 1 fac@1D = 1;
fac@n_D := nfac@n-1D; fac 81, 2, 3, 10<
81, 2, 6, 3 628 800<
è Detta är inte ett speciellt effektivt sätt att beräkna fakulteten på. Använd hellre det inbyggda kommandot ! eller Factorial
10!
Factorial@20D
3 628 800
2 432 902 008 176 640 000
¢ | £
Villkor (If-satser)
è Åstadkomms med kommandot If[villkor, värde om sant, värde om falskt]
Exempel: maximum av två tal
max@x_, y_D :=If@x > y, x, yD;
MapThread@max, 881, 2, 3<, 8-1, 0, 4<<D 81, 2, 4<
è Kommandot finns inbyggt i Mathematica som Max
Exempel: absolutvärdet
abs@x_D := If@x <0, -x, xD;
abs 8-1, 0, 1<
81, 0, 1<
è Kommandot finns inbyggt i Mathematica som Abs
¢ | £
Slingor (upprepningar)
è Slingor kan åstadkommas med kommandon som t.ex. Table, For, Do, While.
For- satser
è For-funktionen tar fyra "parametrar" For[initialisering, test, inkrementering, händelse]
For@i = 0,i < 4, i++, Print@iDD 0
1 2 3
For@i = 1;t = x, i^ 2 < 10, i++, t = t^ 2+i; Print@tDD 1+x2
2+ I1+x2M2
3+ I2+ I1+x2M2M2
Do- satser
è Do-funktionen kan ta olika många parametrar. Några exempel
Do@Print@"Test"D, 84<D Test
Test Test Test
Do@Print@n^ 2D, 8n, 4<D
1 4 9 16
Do@Print@nD, 8n, -3, 5, 2<D -3
-1 1 3 5
è Kan även användas med flera olika index
Do@Print@8i, j<D, 8i, 4<, 8j, i-1<D
82, 1<
83, 1<
83, 2<
84, 1<
84, 2<
84, 3<
Table
è Table-funktionen fungerar på samma sätt som Do, men ger resultatet direkt som en lista.
Table@n^ 2, 8n, 10<D
81, 4, 9, 16, 25, 36, 49, 64, 81, 100<
Table@x,810<D
8x, x, x, x, x, x, x, x, x, x<
è Table - kan även användas för att skapa matriser
Table@10i+j,8i, 4<, 8j, 3<D MatrixForm 11 12 13
21 22 23 31 32 33 41 42 43
Table@Prime@iD, 8i, 5<D 82, 3, 5, 7, 11<
While- satser
è While-funktionen tar två parametrar: While[test,händelse]
n = 1; While@n < 4, Print@nD; n++D 1
2 3
¢ | £
Använda lokala variabler i funktioner
è Problem kan uppstå om man använder samma variabelnamn till flera olika saker.
è Alla variabler är som standard globala i Mathematica.
Exempel: Fibonaccis talföljd, ej lokala variabler
Clear@fD f@x_D = x^ 2;
fib@n_D := Module@8<,
f@1D = f@2D = 1;
f@i_D := f@iD =f@i-1D +f@i-2D; f@nD
D;
fib@1D;
? f
Global`f f@1D = 1 f@2D = 1
f@i_D := f@iD = f@i-1D +f@i-2D
è Funktionen f definieras alltså om... Inte bra!
Module
è Genom att definiera de variabler som ska vara lokala ändras deras värde inte på annat håll i programmet.
è Module-funktionen tar två "parametrar" Module[{lokala variabler}, programkod]
Clear@fD f@x_D = x^ 2;
fib@n_D :=
Module@8f, i<, f@1D = f@2D = 1;
f@i_D := f@iD =f@i-1D +f@i-2D;
f@nD D;
? f
Global`f f@x_D = x2
è I detta exempel är alltså f och i lokala variabler (egentligen är f en lokal funktion).
¢ | £