1 Handledning till Mathematica M

Save this PDF as:
 WORD  PNG  TXT  JPG

Storlek: px
Starta visningen från sidan:

Download "1 Handledning till Mathematica M"

Transkript

1 Matematiska institutionen Carl-Henrik Fant 1 Handledning till Mathematica M 1.1 en liten varudeklaration. Denna lilla skrift har endast ambitionen att ge en mini-introduktion till Mathematica. Troligen er den fler den besvarar. du vill veta mer du dig till en mer beskrivning av Mathematica. Det mesta du kommer att a veta finns i den interaktiva boken: The Mathematica Book. Denna finns i programmet och enkelt, mer om det nedan. I pappersversion finns ett flertal er. Grundboken Mathematica, a system for doing mathematics by computer skriven av Mathematicas skapare, Stephen Wolfram. Dessutom finns det en liten bok som beskriver Mathematicas frontend, dvs det du ser du an Mathematica, samt en bok om programpaketen. finns dessa i MDCs referensbibliotek. De flesta datorprogram har mycket generations-, en Mathematica. Risken att denna handledning inaktuell redan den skrivs - mycket stor. skall den undig att komma I texten ommer en hel del Mathematicakommandon. Dessa skrivs med speciellt typsnitt: kommando. Hur man startar och slutar. Mathematica startas genom att man skriver mathematica i ett eller med av menyn lokala program -. Efter ett tag dyker ett upp. man sedan det kommandot tar det ett tag innan Mathematica kommer Det en del som skall in i arbetsminnet. Testa skoj att skriva 1+1 och sedan shift+return. Det tar en stund innan svaret 2 kommer. lyckligtvis snabbare. Du kan avsluta Mathematica genom att mustill File, trycka musknapp och sedan flytta till Quit och sedan musknappen. Man kan avbryta genom att trycka Control - C. Ett annat att under rubriken Kernel Interrupt Evaluation eller Abort Evaluation. Hur man 19 januari 2000 Under Help-menyn till ges av olika slag. Help Browser kommer ett nytt upp. finns ett antal olika att Under Getting Started/Demos kan man inleda en Tour of Mathematica att grunderna presenterade. de olika som finns. er detta kan man kort information om ett visst kommando direkt i Mathematica genom?kommando Genom att skriva?? i? kan man ytterligare information. Informationen i Help Browser och enklare att Om du vill veta om laplacetransformen kan du skriva laplace vid Go To i Help Browser, du ett antal att vidare. En av dessa att i The Mathematica Book. Inmatning. Du som van vid MATLAB vet att man arbetar huvudsakligen med matriser vars element tal eller teck. I Mathematica arbetar man med uttryck, expressions som i sin tur kan exempelvis matriser, men mycket annat. Ett uttryck kan till exempel vara en ekvation och se ut Dessutom arbetar man med listor av uttryck. man vill att de olika kommandon/operationer man skriver skall trycker man samtidigt Shift och Return. skall vara vid de aktuella kommandona. Variabler kan tilldelas med vanligt likhetstecken,t.ex. Men ibland kan det vara att tilldelningen av med av :=. Se mer om detta i The Mathematica Book Man kan ta bort variabler mm genom Clear. Exempelvis Clear[x,y,z] variablerna x,y,z fria. Notera att Mathematica skillnad och stora ver, clear[x,y,z] ger meddelandet General::spell1: Possible spelling error: new symbol name "clear" is similar to existing symbol "Clear". vilket att man igen. Alla inbyggda funktioner i Mathematica har namn som med stor bokstav. kan det vara praktiskt att egna namn med liten bokstav att man inte till det.

2 Mathematica-intro M sid. 2 av 7 Vill man bara ett en variabel x i ett uttryck man det genom uttryck /. x ->. Symbolen /. insubstitution. Den av den/de substitutioner man vill x -> eller {x -> y ->. Pilen -> erav de tecknen - och >. Exempelvis f=x^2 + x * z av q = f /. x -> 3 ger q=9+3z. Man kan ett uttryck ende rad genom %, den senaste med %% och tidigare rader genom %n n anger hur steg man skall Genom Out[n] tar man fram uttrycket n:te outputen. 1.2 Tal och aritmetiska operationer Talen skrivs Pi skrivs E skrivs I Under File finns en rubrik Palettes. Paletten BasicInput symboler som om man klickar dem direkt dyker upp i aktuell notebook. De andra paletterna ger att olika kommandon och symboler. a dig fram. De vanliga aritmetiska operationerna mellan tal ser ut + addition - subtraktion * multiplikation (kan skrivas med bara mellanrum ex: a b) / division exponentiering Prioritetsordningen att har prioritet, och och sist och. Dessutom prioritet, Tal representeras i Mathematica som heltal, rationellt eller flyttal. Vill man tvinga fram en decimal- eller flyttalsrepresentation det att med kommandot N[talet] Antalet siffror som skall skrivas ut genom N[talet,antalet siffror] att styra Det att ange att man vill ha ett uttryck numerisk form genom att avsluta med //N. uttryck//n 1.3 Listor,vektorer,matriser Listor En lista av en samling objekt. Den definieras med t.ex. L={ 1,2,4,3 } listor kan aritmetik L+2 som ger 2 adderat till varje element i L. 2 L som ger varje element multiplicerat med 2. av typen L1+L2, L1*L2, L1/L2,L1 ^ L2 vilka alla opererar elementvis av vektorer och matriser Vektorer och matriser representeras i Mathematica av listor respektive listor av listor. {a,b,c} ger vektorn (a,b,c) { { a,b},{ c,d} } ger matrisen Det nog enklast att skriva in matriser med av Create Table/Matrix/Palette under Input-menyn. Elementet plats (i,j) i en matris M man genom M[[i,j]] Andra delar av en matris kan man M[[i]] ger den i:te raden. att kolonner transponerar man matrisen. M[[ ]] plockar ut motsvarande rader och kolonner till en matris. M[[Range[ ], Range[ ] ]] ger delmatrisen med rader och kolonner i respektive intervall. Help Browser speciella matriser kan IdentityMatrix[n] ger enhetsmatrisen av typ n. DiagonalMatrix[lista] ger en diagonalmatris med lista som diagonalelement.

3 Mathematica-intro M sid. 3 av Operationer matriser Nedan M matris och c. c M ger multiplikation med M.P ger matrismultiplikation Inverse[M] ger matrisinvers Transpose[M] ger den transponerade matrisen Det[M] ger determinanten. 1.4 De matematiska funktionerna Mathematica har de vanliga matematiska funktionerna exponential- och logaritmfunktionerna, de trigonometriska funktionerna och deras inverser, kvadratrot,absolutbelopp m fl. De skrivs i Mathematica med bokstaven stor och argumentet inom hakparentes, t.ex. Sin[x] En er de funktionerna i Mathematica man genom att i Help Browser Go To: Elementary Functions och sedan klicka i texten. motsvarande sida i The Mathematica Book Funktioner av matriser MatrixPower[A,n] ger MatrixExp[A] ger. Man kan en funktion f att verka varje enskilt element i en lista L genom Map[f,L] 1.5 Egna funktioner Ett exempel hur en egen funktion kan definieras f[x_ ]:=x x + 1 (notera att variabeln skrivs x_ i f[x_] och att := an Det att genom ett med /; en Funktionen i exemplet blir definierad bara x>0 genom f[x_ ]:=x x + 1 /;x>0 Man kan definiera funktioner av flera variabler samma V f[x_,y_ ]:=x 2 /y + 2 x y + 1 /;y!=0 funktioner definieras med en lista. f[x_,y_ ]:={ x y,x 2 / y } Vill man sedan spara de funktioner, till exempel f1,f2,f3, man definierat till ett senare det att genom Save[ filnamn,f1,f2,f3] ven kommandona Put, > > och > > > an att spara variabler. att sedan in dem igen skriver man < < filnamn att reda om och hur man an ett namn, kan man skriva?namn att namnet (och sig av med varibeln) skriver Clear[namn] eller namn=. (observera punkten) Rekursivt definierade funktioner Hur man definierar en funktion som kommer den ut kan ses i exempel Med f[x_] := f[x]=f[x-1]+f[x-2] f[0]=f[1]=1 vi Om vi vill definiera en, och skapar vi en lista med de olika funktionerna som element. nedan ges de fem elementen i denna lista. Listan uppfattas som en v funktion. Konstruktionen illustrerar hur man kan utnyttja funktionsbegreppet i Mathematica programmering. som f[x_] := Block[{q}, q={ Sin[x] }; For[k=1,k<5,k++, q=append[q,d[x q[[k]],x]]]; q] de kommentarer till raderna ovan: med en procedur av ett antal Mathematicakommandon i definition skulle ha fungerat:

4 Mathematica-intro M sid. 4 av 7 f[x_] := (q={sin[x]}; For[k=1,k<5,k++, q=append[q,d[x q[[k]],x]]]; q) Block[] ger att definiera lokala variabler, Block[{q},procedur] som q till lokal variabel. Observera att proceduren skall ramas in av () om inte Block an Proceduren uppbyggd av en For-snurra som skrivs For[start, test,. ningen skrivs k++ vilket kunde skrivits k=k+1 eller k += 1. Det sista som skrivs i proceduren, q, det som kommer ut som funktions- 1.6 Symbolmanipulation An kommandon an kommandon: Expand[uttryck] som an att utveckla produkter av summor. Factor[uttryck] som an att faktorisera ett uttryck. Vidare finns Simplify[uttryck] som an att uttryck. en som ut- ExpandAll[uttryck] vecklar erallt. FactorTerms[uttryck] bryter ut gemensamma faktorer. som Cancel[uttryck] som an att exempelvis rationella funktioner att gemensamma faktorer divideras bort. Together[uttryck] termerna gemensam som Apart[uttryck] som delar upp i termer med enkla Collect[uttryck,variabel] som samlar ihop gemensamma potenser av variabel. r = a+2 ger omedelbar definition medan s := a+2 ger Vid tilldelning genom := variabeln om varje den Skulle till exempel a vid definiha 3 kommer r i ha 5 en om man skulle a. s med a 1.7 Ekv En ekvation med avseende en variabel variabel man genom == variabel] Solve[{ekvationer},{variabler}] numerisk kan en vara intressanta NRoots[polynom ==0,x] numerisk approximation av till ett polynom. FindRoot[vl==hl,{ x,x0}] letar efter rot med start vid x ekvationssystem Ett ekvationssystem Ax=b direkt genom LinearSolve[A,b] NullSpace[A] ger en bas nollrummet till A RowReduce[A] ger en radreducerad form av A Egen och egenvektorer I detta sammanhang finns till exempel Eigenvalues[A] som ger en lista av egen Eigenvectors[A] som ger en lista av egenvektorerna Eigensystem[A] som ger en lista av formen Tilldelning av antingen ome- Man kan tilldela en variabel delbar tilldelning eller Genom att i dessa byta ut A mot N[A] eller N[A,k] man numeriska egen och egenvektorer, i det senare fallet med k siffrors precision.

5 Mathematica-intro M sid. 5 av Grafisk representation Funktionskurvor Plot[f(x),{x,xmin,xmax}] ritar f som en funktion xmin till xmax. ritar ut- Plot[{f1,f2,f3},{x,xmin,xmax}] de tre funktionernas grafer (om f1,f2,f3 tryck i x) Parameterkurvor Kommandot ParametricPlot[{ x,y},{t.tmin,tmax}] ger en parameterkurva ParametricPlot[{x,y},{t,tmin,tmax}, AspectRatio->Automatic] ger en kurva med ett till form, att exempelvis en cirkel verkligen ser ut som en cirkel. Kommandot Plot har ett antal al som man kan om under Graphics and Sound-Basic Options i Help Browser. Bland andra finns PlotRange man kan dimensionera i y-led. PlotLabel som rubrik 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 till Plot[Sin[2 x],{x,0,2 Pi}, PlotRange->{ 0,1}, PlotStyle->Dashing[{.05,.05}]] ger streckad den del av sinuskurvan som ligger x-axeln (v man nu skulle vilja ha det!) Om att spara bilder en PostScript-fil av en bild man omedel- kan man att bart innan Display[ filnamn,%] er D-plottning Plot3D[f,{x,xmin,xmax},{y,ymin,ymax}] ger funktionsytan z=f(x,y). ven finns ett antal tillval PlotPoints antalet punkter i vardera riktningen som an att generera ytan. (Def 15). genom PlotPoints->25 t.ex. ViewPoint som anger den punkt v ytan betraktas. Def (1.3,-2.4,2) och det genom av formen ViewPoint->{1,1,3}. BoxRatios som sidorna i den omskrivna boxen, ex BoxRatio->{1,1,1}. { 1,1,0.4} Ni vor Def mellan ContourPlot[f,{x,xmin,xmax}, {y,ymin,ymax}] ritar ut 10 ni or mellan zmin och zmax. ContourLevels->20 som i ContourPlot ger 20 ni or i Mathematica sparar informationen om varje plot att den kan visas igen om man skulle vilja Kommandot att visa en bild igen Show[plot] Man kan t.ex. genom detta samman kurvor som man som plot1,plot2 genom Show[plot1,plot2] 1.9 Analys-kommandon Limit[f,x->a] ger. D[f,x] ger (partiella) derivatan av f med avseende x. D[f,{ x,n}] ger n:te derivatan. av

6 Mathematica-intro M sid. 6 av 7 D[f,x1,x2] ger blandad derivata. Integrate[f,x] ger en primitiv funktion till f. Integrate[f,{ x,xmin,xmax}] ger en beintegral. Genom att en till y kan vi en ut dubbelintegraler. Sum och Product byggs upp samma som Integrate. Series[f,{x,a,ordning}] ger taylorutveckling av f runt a. Normal[serie] trunkerar en serie. att numeriska approximationer kommandon an N[uttryck] ger numeriskt av uttryck. NIntegrate numerisk integration. NSum numerisk summation. FindMinimum[f,{x,x0}] letar efter minimum f med i x Programmering i Mathematica Procedurer och lokala variabler En procedur en av uttryck separerade med av semikolon. I samband med detta kan man vilja lokala variabler. dessa inne i proceduren skall inte erka om samma symbol an en. Detta kommer man genom konstruktionen Block[{lokala variabler},procedur] Snurror och villkorssatser an kommandon Do[uttryck,{ i,imax}] upprepar med i=1 som och imax som och med ning av i med 1 varje Do[uttryck,{ i,imin,imax,istep}] annat och annan ste Do[uttryck,{ n}] upprepar n. Nest[f,uttryck,n] f att verka uttryck n. FixedPoint[f,uttryck] startar med uttryck och itererar med f tills resultatet inte While[test,uttryck] ger upprepad evaluering av uttryck test sann. For[start,test,steg,uttryck] belyses av exempel: For[i=1,i<4,i=i+1,Print[i^2 ]] om test uppfyllt annars annars. Ex. If[x>0,1,-1] ger 1 om x > 0 annars Logiska operationer en lista er logiska operationer vilka kan vara av intresse i olika sammanhang == lika med.!= inte lika med. >= eller lika med (strikt olikhet den uppenbara och motsvarande mindre! inte \& och eller Xor[p,q,...] exklusivt eller Output-Input Print[uttryck,uttryck,...] skriver uttrycken i en utan mellanrum emellan. att snyggare utskrift kan man ange en utskriftsform som argument till Print: TableForm MatrixForm text ger en te 1.11 Paket Till Mathematica finns ett antal paket, Add-ons, med vars man kan utvidga antalet operationer som kan att se vilka paket som finns i systemet och ladda in dem kan man in i Help Browser

7 Mathematica-intro M sid. 7 av 7 och Add-ons. I den menyn kan man se alla grupper av paket som finns i systemet. Standard Packages och Introduction att ytterligare information. du Calculus kan du i ni VectorAnalysis. I xten finner du en rad <<Calculus VectorAnalysis. och exekvera med Shift-Return paketet in Differentialekvationer DSolve[ekv,x[t],t] en differentialekvation med x som funktion av t. DSolve kan att ekv,x[t],t kan av listor av ekvationer, variabler och funktioner. av dif- NDSolve ger numerisk ferentialekvationer Laplacetransformer LaplaceTransform[f[t],t,s] kan been del laplacetransformer, men alla. Ibland verkar man ha frammed Integrate[f[t] Exp[-s t], { t, 0,Infinity}]. Om man vill begynnelse t kan man Ge motsvarande ekvation med godtyckligt gerled ett namn: ekv=(d[y[t],t,t,t]+d[y[t],t,t]+ D[y[t],t]+y[t]==f[t]) Laplacetransformera denna ekvation med begynnelse och beteckning laplacetransformen av : lapekv=laplacetransform[ekv,t,s] /. {y[0]->1,y [0]->0,y [0]->-1, LaplaceTransform[y[t],t,s]->ly[s] ut samtidigt som du in : sol=solve[lapekv /.f[t]->sin[t],ly[s]]. Inverstransformera slutligen denna yut[t]=inverselaplacetransform[ly[s] /.sol,s,t]. att ett hyfsat svar du nog utnyttja Eulers formler och och dessutom an Simplify.