En liten lathund till Mathematica

J-E A version 10-95

1 Allmän information

• Mathematica startas antingen genom att man skriver

mathematica eller att man väljer Mathematica i menyn för lokala program. Efter ett tag dyker då ett fönster upp. När sedan man utför det första kommandot tar det ett tag innan Mathematica kommer igång.

• Mathematica kan avslutas genom att föra pilen till File,trycka på vänster musknapp och sedan flytta markören till Quit och sedan släppa musknappen.

• Under Help-menyn ges hjälp av olika slag. Exempelvis är Getting started och Open Function Browser användbara.

• När man vill att de olika kommandon man skriver skall utföras trycker man på Shift och Return. Markören skall då vara vid de aktuella kommandona.

• Information om ett visst kommando får man genom

?kommando Genom att skriva ?? i stället för ? kan man få ytterligare information.

• Man kan avbryta beräkningar genom att trycka på Control och C. Ett annat sätt är att under rubriken Action välja Interrupt.

• Variabler kan tilldelas värden med vanligt likhetstecken,t.ex x=värde . Men ibland kan det vara lämpligare att tilldela värden med hjälp av := .Se nedan under Symbolmanipulation. Man kan ta bort åsatta värden på variabler mm genom Clear. Exempelvis Clear[x,y,z] gör variablerna x,y,z fria.

• Vill man bara sätta ett värde på en variabel x i ett uttryck gör man det genom uttryck /. x->värde

• Man kan åkalla ett uttryck från närmast föregående rad genom % och från ännu tidigare rader genom % n där n anger hur många steg bakåt man skall gå. Genom Out[n] tar man fram uttrycket från n:te outputen.

2 Tal och aritmetiska operationer

Talen π skrivs Pi e skrivs E i skrivs I

De vanliga aritmetiska operationerna mellan tal ser ut så här: + addition

- subtraktion

* multiplikation (eller bara mellanrum ex: a b) / division ˆ exponentiering

Tal representeras i Mathematica som heltal,rationellt bråk,decimalbråk eller flyttal.Vill man tvinga fram en decimal- eller flyttalsrepresentation går det att göra med kommandot

N[talet] Antalet siffror som skall skrivas ut går här att styra genom

N[talet,antalet siffror] Det går också att ange att man vill ha ett uttryck på numerisk form genom att avsluta med //N

.Alltså uttryck//N

3 De elementära matematiska funktionerna

Mathematica har de vanliga elementära matematiska funktionerna såsom exponential- och logaritmfunktionerna,de trigonometriska funktionerna och deras inverser, kvadratrot,absolutbelopp m fl.

De skrivs i Mathematica med första bokstaven stor och argumentet inom hakparentes, t.ex. Sin[x]

En förteckning över de elementära funktionerna i Mathematica får man genom att under Help gå in i Open Function Browser och där välja Mathematical Functions vilket ger bl.a. paketet Elementary Functions . Paketet Numerical Functions ger ytterligare fler funktioner.

4 Egna funktioner

Ett exempel på hur en egen funktion kan definieras är:

f[x_]:=xˆ 2 + 2 x + 1 (se om := senare) Det är möjligt att genom ett tillägg med /; införa en definitionsmängd. Ett exempel på användning

är

f[x_]:=xˆ 2 + 2 x + 1 /;x>0 ;f[x_]:=x+1/;x<=0 där funktionen är olika definierad på två delintervall.

Vill man sedan spara de funktioner, till exempel f1,f2,f3, man definierat till ett senare tillfälle går det att göra genom

Save[“filnamn”,f1,f2,f3] För att sedan läsa in dem igen skriver man

« filnamn För att få reda på om man använt en bokstav som namn på en funktion, kan man skriva

?bokstav För att frigöra bokstaven (och göra sig av med funktionen) skriver

Clear[bokstav] Genom

Clear[@] tar man bort alla variabler som skrivits med små bokstäver.

4.1 Rekursivt definierade funktioner

Hur man definierar en funktion som kommer ihåg de värden den räknar ut kan ses i följande exempel

f[x_] := f[x]=f[x-1]+f[x-2] Med tillägget

f[0]=f[1]=1 får vi då Fibonacciföljden.

5 Symbolmanipulation

5.1 Användbara kommandon

Här följer några användbara kommandon:

Expand[uttryck] som används för att utveckla produkter av summor. Factor[uttryck] som används för att faktorisera ett uttryck. Simplify[uttryck] som används för att förenkla uttryck.

Vidare finns även ExpandAll[uttryck] som utvecklar överallt. FactorTerms[uttryck] som bryter ut gemensamma faktorer. Cancel[uttryck] som användas för att förenkla exempelvis rationella funktioner så att gemensamma faktorer divideras bort. Together[uttryck] som sätter termerna på gemensam nämnare. Apart[uttryck] som delar upp i termer med enkla nämnare. Collect[uttryck,variabel] som samlar ihop gemensamma potenser av variabel.

5.2 Tilldelning av värden

Man kan tilldela en variabel värden antingen omedelbar tilldelning eller fördröjd.

r = a+2 ger omedelbar definition medan s := a+2 ger fördröjd.

Vid tilldelning genom := räknas variabeln om varje gång den åkallas. Skulle till exempel a vid definitionstillfället ha värdet 3 kommer r i fortsättningen ha värdet 5 även om man skulle ändra värde på a. Däremot följer s med då värdet på a ändras

6 Ekvationslösning

En ekvation vänsterled=högerled med avseende på en variabel variabel löser man genom

Solve[vänsterled == högerled,variabel] Har man flera flera ekvationer och variabler sätter man dem inom mängdklamrar.

Solve[{ ekvationer} ,{ variabler} ] För numerisk lösning kan även följande vara intressanta

NRoots[poly==0,x] numerisk approximation av rötterna till ett polynom. FindRoot[vl==hl,{ x,x0} ] letar efter rot med start vid x0.

7 Grafisk representation

7.1 Funktionskurvor

Plot[f,{ x,xmin,xmax } ] ritar f som en funktion från xmin till xmax. Plot[{ f1,f2,f3} ,{ x,xmin,xmax} ] ritar de tre funktionernas grafer.

Kommandot Plot har ett antal tilläggsval som man kan läsa om under Graphics and Sound i Function Browser. Bland andra finns

PlotRange där man kan dimensionera i y-led. PlotLabel som sätter rubrik för bilden. PlotStyle som styr vilken stil grafen har,tjocklek genom Thickness, streckad genom Dashing mm. Axes->{ x,y } specificerar var axlarna skall placeras.

Ett exempel som visar hur det kan gå till Plot[Sin[2 x],{ x,0,2 Pi}, PlotRange->{ 0,1} , PlotStyle->Dashing[{ .05,.05}]]

ger streckad den del av sinuskurvan som ligger över x-axeln (varför man nu skulle vilja ha det!).

7.2 Om att spara bilder

För att göra en PostScript-fil av en bild man omedelbart innan fått på skärmen kan man göra

Display[“filnamn”,%] Mathematica sparar alltså informationen om varje plot så att den kan visas igen om man skulle vilja ändra någonting. Kommandot för att visa en bild igen är

Show[plot] Man kan t.ex. genom detta sätta samman kurvor som man infört som plot1,plot2 genom

Show[plot1,plot2 ]

7.3 Parameterkurvor

Kommandot ParametricPlot[{ x,y},{t.tmin,tmax}] ger en parameterkurva ParametricPlot[{ x,y },{ t,tmin,tmax} ,AspectRatio->Automatic] ger en kurva med ett försök till rätt form, så att exempelvis en cirkel verkligen ser ut som en cirkel.

7.4 3D-plottning

Plot3D[f,{ x,xmin,xmax} ,{ y,ymin,ymax} ] ger funktionsytan z=f(x,y).

Även här finns ett antal optioner såsom

PlotPoints antalet punkter i vardera riktningen som används för att generera ytan.(Defaultvärdet är 15). Ändras genom tillägget PlotPoints->25 t.ex. ViewPoint som anger den punkt varifrån ytan betraktas. Defaultvärde är (1.3,-2.4,2) och det ändras genom tillägg av formen ViewPoint->{ 1,1,3} . BoxRatios som förändrar förhållandena mellan sidorna i den omskrivna boxen, ex BoxRatio- >{ 1,1,1} . Defaultvärdet är här { 1,1,0.4} .

7.5 Nivåkurvor

ContourPlot[f,{ x,xmin,xmax} ,{ y,ymin,ymax }] ger ritar ut 10 nivåkurvor mellan zmin och zmax. ContourLevels->20 som tillägg i ContourPlot ger 20 nivåkurvor i stället.

8 Analys-kommandon

Limit[f,x->a] ger gränsvärdet av f(x) då x → a. D[f,x] ger (partiella) derivatan av f med avseende på x. D[f,{ x,n} ] ger n:te derivatan. D[f,x1,x2] ger blandad derivata. Integrate[f,x] ger en primitiv funktion till f. Integrate[f,{ x,xmin,xmax} ] ger en bestämd integral. Genom att även lägga till gränser för y kan vi även räkna ut dubbelintegraler. Sum och Product byggs upp på samma sätt som Integrate. För att de skall fungera om gränserna inte är givna tal utan parametrar måste man ladda in paketet SymbolicSum.m som finns i paketet Algebra. Series[f,{ x,a,ordning} ] ger taylorutveckling av f runt a. Normal[serie] trunkerar en serie.

För att få numeriska approximationer är följande kommandon användbara N[uttryck] ger numeriskt värde av uttryck. NIntegrate numerisk integration. NSum numerisk summation. FindMinimum[f,{ x,x0} ] letar efter minimum för f med början i x0.

9 Listor,vektorer,matriser

9.1 Listor

En lista är en samling objekt. Den definieras med hjälp av mängdklamrar t.ex.

L={ 1,2,4,3 } På sådana listor kan aritmetik genomföras av typen

L+2 som ger 2 adderat till varje element i L. 2 L som ger varje element multiplicerat med 2. L1+L2 , L1*L2 , L1/L2,L1 L̂2 vilka alla opererar elementvis. L1 L̂2 som också opererar elementvis.

Man kan få en funktion f att verka på varje enskilt element i en lista genom Map[f,lista]

9.2 Införande av vektorer och matriser

Vektorer och matriser representeras i Mathematica av listor och listor av matriser {a,b,c} ger vektorn (a,b,c) \{ \{ a,b\} ,\{ c,d\} \} ger matrisen ( \begin{matrix}a & b \\ c & d \end{matrix} )

Elementet på plats (i,j) i en matris M får man genom

M[[i,j]] Andra delar av en matris kan man få så här

M[[i]] ger den i:te raden. För att få kolonner transponerar man matrisen. M[[{i_{1}, ..., i_{r}}, {j_{1}, ..., j_{s}}]] plockar ut motsvarande rader och kolonner till en matris. M[[Range[i_{0}, i_{1}], Range[j_{0}, j_{1}] ]] ger delmatrisen med rader och kolonner i respektive intervall.

Några speciella matriser kan införas så här IdentityMatrix[n] ger enhetsmatrisen av typ n. DiagonalMatrix[lista] ger en diagonalmatris med lista som diagonalelement.

9.3 Operationer på matriser

Nedan är M matris och c skalär.

c M ger multiplikation med skalär M_{1}.M_{2} ger matrismultiplikation Inverse[M] ger matrisinvers Transpose[M] ger den transponerade matrisen Det[M] ger determinanten.

9.4 Linjära ekvationssystem

Ett linjärt ekvationssystem Ax=b löses direkt genom LinearSolve[A,b] NullSpace[A] ger en bas för nollrummet till A RowReduce[A] ger en radreducerad form av A .

9.5 Egenvärde och egenvektorer

I detta sammanhang finns till exempel Eigenvalues[A] som ger en lista av egenvärdena Eigenvectors[A] som ger en lista av egenvektorerna Eigensystem[A] som ger en lista av formen { egenvärden,egenvektorer}

Genom att i dessa byta ut A mot N[A] eller N[A,k] får man numeriska egenvärden och egenvektorer, i det senare fallet med k siffrors precision.

9.6 Funktioner av matriser

MatrixPower[A,n] ger A^{n} MatrixExp[A] ger e^{A}.

10 Programmering i Mathematica

10.1 Procedurer och lokala variabler

En procedur är en följd av uttryck separerade med hjälp av semikolon. I samband med detta kan man vilja införa tillfälliga, lokala variabler. Värden på dessa inne i proceduren skall inte påverka om samma symbol används även utanför. Detta åstadkommer man genom konstruktionen

Block[{ lokala variabler} ,procedure]

10.2 Loopar och villkor

Här är några användbara kommandon Do[uttryck,{ i,imax} ] upprepar med i=1 som startvärde och imax som slutvärde och med ökning av i med 1 varje gång. Do[uttryck,{ i,imin,imax,istep} ] tillåter annat startvärde och annan steglängd. Do[uttryck,{ n} ] upprepar n gånger. Nest[f,uttryck,n] får f att verka på uttryck n gånger. FixedPoint[f,uttryck] startar med uttryck och itererar med f tills resultatet inte ändras längre. While[test,uttryck] ger upprepad evaluering av uttryck så länge test är sann. For[start,test,steg,uttryck] belyses av följande exempel: For[i=1,i<4,i=i+1,Print[i ˆ 2 ]] If[test,så,annars] utför så om test är uppfyllt annars annars. Ex. If[x>0,1,-1] ger värdet 1 om x>0 annars -1.

10.3 Logiska operationer

Här följer en lista över några logiska operationer vilka kan vara av intresse i olika sammanhang == lika med. != inte lika med. >= större än eller lika med (strikt olikhet är den uppenbara och motsvarande för mindre än). ! inte & & och || eller Xor[p,q,...] exklusivt eller

10.4 Output-Input

Print[uttryck_{1}, uttryck_{2}, ...] skriver uttrycken i en följd utan mellanrum emellan. För att få snyggare utskrift kan man ange en utskriftsform som argument till Print:

TableForm

MatrixForm

“text” ger en textsträng

11 Paket

Till Mathematica finns ett antal paket,packages, med vars hjälp man kan utvidga antalet operationer som kan utföras. Sådana paket kan laddas in genom

»namn För att se vilka paket som finns i vårt system kan man gå in under rubriken Help och i Function

Browser välja Packages. I den vänstra menyn kan man då se alla paket som finns i systemet. När man väljer något av dessa visas i den mittersta namnen på de funktioner som ingår i detta. Vill man sedan ladda in en sådan, markerar man den och klickar på Evaluate Template längst ner till höger. Några av de paket vi har är

Algebra  Calculus  DiscreteMath
Geometry  Graphics  LinearAlgebra
NumberTheory NumericalMath Statistics

12 Differential- och rekurrensekvationer

12.1 Differentialekvationer

DSolve[ekv,x[t],t] löser en diff.ekvation med x som funktion av t.

DSolve kan utsträckas så att ekv,t,x[t] kan ersättas av listor av ekvationer,variabler och funktioner.

NDSolve ger numerisk lösning av differentialekvationer.

I paketet Calculus finns en utsträckning av DSolve kallad DSolve.m.

12.2 Rekurrensekvationer

Paketet DiscreteMath innehåller funktionen RSolve .

13 Ytterligare information

Förutom manualer,böcker och tidskrifter om Mathematica finns även information att hämta på Internet. Wolfgang Research Institute, det företag som utvecklar Mathematica, kan man komma till genom

http://www.wri.com

Där finns diverse olika dokument att läsa.