Mathematica Första kapitlet kommer att handla om Mathematica det matematiska verktyg, som vi ska lära oss hantera under denna kurs. Indata När du arbetar med Mathematica ger du indata i form av kommandon till programmet. Att lära sig Mathematica, är att lära sig hur dessa kommandon skrivs. Dina kommandon kommer att numreras av programmet: In[1], In[2],... Kommandona hamnar i en cell på skärmen (en klammer ute till höger markerar cellens storlek). Man kan ha en eller flera kommandon eller satser, som vi också kommer att kalla dem, i samma cell. Innehållet i en Input-cell kan ändras. För att komma åt innehållet klickar vi med musen i cellen, för att sedan ändra den, på samma sätt, som om vi arbetade i en vanlig ordbehandlare. För att ta bort hela cellen markerar vi den genom att klicka på klammern ute till höger på skärmen, följt av en tryckning på Delete-tangenten. Nedan ser du ett typiskt kommando för att finna rötterna till ekvationen x 2 +4x 10 = 0. För att utföra, exekvera, kommandot trycker vi på SHIFT-ENTER. Solve[x^2+4x-10==0,x] Utdata Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från ovan. { { } { } } x 4 2 14, x 4+2 14 2 2 Utdata bildar också celler, Output-celler, som numreras av programmet Out[1], Out[2]... Innehållet i dessa celler kan inte direkt förändras. Just i detta fall är det möjligt att förkorta resultatet. Mer om det senare. Mathematica kan också ge resultat i form av bilder, grafer, kurvor, animeringar och ljud. Text Förutom dina kommandon och programmets svar kan du lägga in text var som helst i dokumentet. Texten kan bestå av rubriker, underrubriker och stycken, precis som i en vanlig ordbehandlare. Hela dokumentet går sedan att spara och att skriva ut. Sist i detta kapitel återges ett dokument, innehållande denna övning, ungefär som det ser ut i Mathematica. Målet med övningen är att i princip kopiera detta dokument men då helst med din egen layout. Uppgiften I den allra första uppgiften i denna kurs handlar det, som sagt, om att kopiera vad någon annan redan gjort. När du genomfört uppgiften kan du hantera några av de vanligaste funktionerna och kommandona i Mathematica. Håkan Strömberg 1 KTH Syd
Problemet Kurvan y = 4x x 2 skär x-axeln i punkterna p 1 = (x 1,0) och p 2 = (x 2,0). Kurvans tangenter i p 1 och p 2 begränsar tillsammans med kurvan ett område. Beräkna arean av detta område. Att definiera en funktion Med hjälp av kommandot y[x_]:=4x-x^2 definierar vi i Mathematica en funktionen y(x). Därefter kan vi enkelt ta reda på olika funktionsvärden, endast genom att skriva y[10] eller y[-3]. Observera att... multiplikationstecknet i 4x kan utelämnas, men att det går lika bra att skriva 4*x. När produkten mellan två variabler, till exempel xy ska skrivas in måste detta ske antingen med multiplikationstecken, x*y eller med mellanslag x y. Sekvensen xy uppfattar Mathematica som namnet på en variabel xy. potenser skrivs med ett ^, som till exempel 3^4 för 3 4 funktionsargumentet, här x, ska omges av hakparenteser [ ]. funktionsparameterns namn följs av underscore (_), här [x_] Förutom :=, som används här och består av två tecken kolon och lika med, används även det vanliga likhetstecknet, =, för tilldelningar. Vi återkommer längre fram i kursen att diskutera skillnaderna. Dessutom används dubbelt likhetstecken, ==, för jämförelser, precis som i C. Skriv nu in funktionen exakt som den ser ut i raden ovan och avsluta inmatningen med SHIFT-ENTER. Ta därefter reda på y(10) och y( 5). Kom ihåg att en cell med kommandon ska avslutas med SHIFT-ENTER. Att plotta en funktion Innan vi börjar lösa själva problemet kan det vara bra att ha en uppfattning om hur kurvan ser ut. Skriv därför in kommandot Plot[y[x],{x,-7,7}] Observera att... det är viktigt att Plot inleds med stor bokstav. Alla funktionsnamn i Mathematica inleds med versal. Därför väljer vi att ge våra egna funktioner och variabler namn, som inleds med en gemen (liten bokstav). kommandot Plot inleds med att ange vilken funktion som ska plottas. Håkan Strömberg 2 KTH Syd
inom klammer {} anges sedan, mellan vilka gränser på x-axeln plottningen ska göras. skalorna på x- och y-axel inte är lika. (Detta kan ordnas, men det väntar vi med till senare) Skriv in Plot-kommandot och glöm inte att avsluta inmatningen med SHIFT-ENTER Mera om Plot Att skriva Plot[4x-x^2,{x,-7,7}] hade kunnat vara ett alternativ, men varför skriva detta längre kommando när vi redan definierat funktionen y(x)? Det hade också gått bra att skriva Plot[y[a],{a,-7,7}]. Det vill säga vilken variabel vi använder för att beskriva vad som ska plottas spelar ingen roll. Vill man plotta två funktioner i samma graf använder man sig av klamrarna {} för att bunta ihop funktionerna, till exempel Plot[{Sin[x],Cos[x]},{x,-4Pi,4Pi}]. Du förstår av detta exempel också att funktionerna sinx och cosx redan är definerade i Mathematica som Sin respektive Cos och att sättet man anropar dem på liknar det sätt på vilket vi anropar vår funktion y(x). Ekvationslösning Från grafen kan vi avläsa att 4x x 2 = 0 har rötterna x 1 = 0 och x 2 = 4. Vill vi få detta bekräftat löser vi ekvationen med hjälp av kommandot Solve[y[x]==0] Observera att... man uttrycker likheten med två likhetstecken ==. det hade gått lika bra att skriva Solve[4x-x^2==0] det hade gått lika bra att skriva Solve[y[x]==0,x], där det andra argumentet, x, talar om för Mathematica med avseende på vilken variabel ekvationen ska lösas. Här är det inget problem eftersom det bara finns en variabel, men om kommandot i stället hade varit Solve[3x+4y==5,y] hade det andra argumentet varit nödvändigt för att få resultatet y = (5 3x)/4. Resultatet från Solve ges som två regler, {{x 0},{x 4}}. Vi förstår att detta ska tolkas som att rötterna x 1 = 0 och x 2 = 4. Lite matematik Vi känner nu punkterna p 1 = (0,0) och p 2 = (4,0) och är intresserade av linjens ekvation för de tangenter till kurvan som går genom dessa punkter. Hur får vi då tag i dem? Räta linjens ekvation i enpunktsform, det vill säga y y 1 = k(x x 1 ) är en möjlighet. Det betyder att vi måste känna till en punkt samt linjens k-värde. Håkan Strömberg 3 KTH Syd
En punkt har vi men hur ska vi få tag i k-värdet? Svaret är att tangentens k-värde är lika med derivatans värde för givet x. Alltså måste vi derivera funktionen och det kan man förstås göra i Mathematica. Derivata Genom att skriva D[y[x],x] ber vi Mathematica att beräkna derivatan till y(x) med avseende på x. Du blir inte speciellt förvånad då datorn skriver ut 4-2x, men eftersom vi vill gå vidare med denna funktion kan det vara trevligare att skriva yp[x_]=d[y[x],x] (där p står för prim, y ) och därmed definiera derivatan som en funktion. Definiera derivatan enligt ovan och ta sedan reda på y (0) och y (4), med hjälp av Mathematica. Tangenterna Nu kan vi definiera tangenterna med utgångspunkt från enpunktsformeln och med hjälp av y(x) och y (x). Så här skriver vi det i Mathematica eftersom enpunktsformen kan skrivas y = k(x x 1 )+y 1. t1[x_]:=yp[0](x-0)+y[0] t2[x_]:=yp[4](x-4)+y[4] Med en notation vi är vana vid t 1 (x) = y (0)(x 0)+y(0) och t 2 (x) = y (4)(x 4)+y(4). Det kan verka lite omständligt att använda yp[0], yp[4], y[0] och y[4], när vi redan vet att dessa värden är 0, -4, 0 respektive 0. Detta får du se som är ett steg mot ett mer generellt arbetssätt. Plotta igen Nu skulle det vara intressant att få upp en graf över funktionen y(x) och de två tangenterna. Hur skriver man det kommandot? Plot[{y[x],t1[x],t2[x]},{x,-1,5}] Studerar vi nu denna graf, kan vi enkelt identifiera det område vars area vi söker. Mera matematik För att få fram den eftersökta arean måste vi integrera Du kommer kanske på att integreringen här måste göras i två steg. Från 0 till x 0 och från x 0 till 4, där x 0 är x-koordinaten för tangenternas skärningspunkt. Hur ska vi finna den? Med Solve förstås! Att söka skärningspunkten till två linjer är i allmänhet det samma som att lösa ett linjärt ekvationssystem. Men här räcker det att skriva t 1 (x) = t 2 (x) eftersom vi inte behöver veta y-koordinaten för denna punkt. Vi exekverar Solve[t1[x]==t2[x]] i Mathematica och blir inte överraskade när vi får svaret x 0 = 2. Håkan Strömberg 4 KTH Syd
Att integrera Om du får reda på att man med hjälp av Integrate[x^2,{x,-2,3}] finner värdet till 3 2 x2 dx, kan du då ställa upp integralerna i vårt problem? 2 0 t 1 (x) y(x) dx+ 4 Integrate[t1[x]-y[x],{x,0,2}]+ Integrate[t2[x]-y[x],{x,2,4}] 2 t 2 (x) y(x) dx ger oss så till slut lösningen 16/3 på vårt problem! Observera att vi aldrig utnyttjat den symmetri som finns i uppgiften. Första övningen Allt du skriver in på skärmen i Mathematica uppfattar programmet först som indata kommandon som ska exekveras. Men om du inte avslutar inmatningen i cellen med SHIFT- ENTER, utan i stället under FORMAT-STYLE väljer ett passande format kommer den inmatade texten att i stället bli en text-cell. För att få rubriken FÖRSTA ÖVNINGEN valde jag TITLE, för att formatera detta stycke valde jag TEXT och för mellanrubrikerna SUBSUBTITLE. Innan det är möjligt att formatera en cell måste man dock markera den genom att klicka på den klammer som begränsar textmassan. Nu över till problemet När jag skriver in ett kommando och avslutar med SHIFT-ENTER kommer datorn att svara med resultatet av sina beräkningar. y[x_]:=4x-x^2 y[10] y[-3] 60 21 Det är uppenbart att programmet känner till funktionen y(x), som vi definierat den. Håkan Strömberg 5 KTH Syd
Vi plottar en kurva Plot[y[x],{x,-7,7}] Figur 1: Storleken på bilden kan förändras genom att först markera bilden med musen och sedan dra i någon av de åtta små svarta kvadraterna. Man kan också flytta omkring bilden genom att markera med musen någonstans mitt i hålla vänster knapp nere och dra bilden dit, där man vill ha den. Plot[{Sin[x],Cos[x]},{x,-4Pi,4Pi}] Figur 2: För att ta bort en cell markerar man den först följt av en tryckning på tangenten DELETE. Vi löser ekvationen Solve[y[x]==0] {{x 0},{x 4}} Programmets utskrift är en lista med två regler. Reglerna säger att ekvationen har rötterna 0 och 4. Håkan Strömberg 6 KTH Syd
Vi deriverar Först på ett lite enklare sätt D[y[x],x] 4 2x Och sedan på det sätt vi vill ha det yp[x_]=d[y[x],x] 4 2x Vi undersöker sedan att vår definition verkligen fungerar yp[0] yp[4] 4 4 Tangenterna Nu kan vi definiera funktionerna för våra tangenter t1[x_]:=yp[0](x-0)+y[0] t2[x_]:=yp[4](x-4)+y[4] Funktionerna kan definieras i ett svep. Det är inte förrän man trycker SHIFT-ENTER som cellen exekveras. Överkurs: Hur hade man här kunnat klara sig med en enda funktion t? Vi plottar situationen Plot[{y[x],t1[x],t2[x]},{x,-1,5}] Det är området vi ser ovanför x-axeln, ovanför kurvan, men under linjerna, vi ska finna arean till. Var skär linjerna varandra? Av symmetriskäl förstår man att skärningspunkten ligger i x=2, men vi låter datorn bestämma skärningspunkten i stället. Solve[t1[x]==t2[x]] Håkan Strömberg 7 KTH Syd
Figur 3: Nu är det dags att integrera {{x 2}} Integrate[t1[x]-y[x],{x,0,2}]+ Integrate[t2[x]-y[x],{x,2,4}] 16 3 Svaret Svaret på vårt lilla problem blir alltså 16/3 Till sist Rapporter liknande denna är det meningen att du ska producera framöver. Håkan Strömberg 8 KTH Syd