Innehåll Inledning Denna datorövning ger en introduktion till Matlab ystemet används här som en avancerad räknedosa med inbyggda matrisoperationer och grafik Ha Matlab Primer tillgänglig Förbered dig genom att titta igenom denna skrift och anvisningarna nedan Hinner du inte med riktigt alla uppgifterna under den handledda övningen, så genomför de återstående momenten på egen hand, antingen på skolans datorer eller på egna Övningarna kan köras på nästan valfritt operativsystem om man bara har en tillräckligt modern version av Matlab Matlab och Komplex analys för I Matlab är från början ett skal kring ett programbibliotek som innehåller rutiner från lineär algebra Några fördelar med Matlab som gör systemet lämpligt för experimentell matematik i vår kurs och i andra kurser är: Matlab har en enkel syntax Inga deklarationer behövs och det finns i princip en enda 1 datatyp, nämligen matriser I Matlab kan man direkt räkna med komplexa tal Komplicerade operationer på vektorer och matriser, t ex matrisprodukt och matrisinvers, är direkt tillgängliga med ett enda kommando (, ) Matlab har inbyggt kraftfulla grafiska kommandon, som gör det lätt att åskådliggöra resultat av beräkningar Matlab innehåller ett programmeringsspråk, som gör det möjligt att bygga ut systemet med egna nya funktioner och kommandon Matlab används i Lund flitigt av forskare i många områden, matematik, fysik, numerisk analys, reglerteknik, teletransmissionsteori, och du kommer att få använda systemet mera i kommande kurser 1 I version 5 av Matlab har införts fler typer, men det stör inte i enkla användningar 1
[ Vi skall längre fram använda ett annat matematiskt program, nämligen Maple Detta är speciellt duktigt på symboliska (i motsats till numeriska) räkningar, men är svårare för nybörjaren än Matlab Nedan ges en kort översikt över (en del av) de delar av Matlab som har direkt anknytning till Komplex analys för I För en mer allsidig introduktion hänvisas till Matlabs systemmanualer, som i senare versioner finns tillgängliga från Matlabsystemet, t ex via kommandot (lägg märke till att hjälpläsaren använder Javascript) Man kan också hitta en hel del upplysningar på WWW, kursens»vävsäte» innehåller några länkar Den när detta skrives senaste versionen av Matlab är 61, som speciellt när det gäller grafikkommandona skiljer sig en del från tidigare använda ( 5) Den grundläggande datastrukturen i Matlab är matriserna Vi skall här nästan enbart använda vektorer, närmare bestämt radvektorer, för att representera följder Följden 2 1 4 5 i 8 0 3i representeras i Matlab som radvektorn! "$#&%' De flesta följdoperationer har direkta motsvarigheter i Matlab Nedan följer en liten tabell med några exempel på de viktigaste: följd ) *,"- 2 1 4 5 i 8 0 3i ) /0$ 1 "#&%' 1 2 3 4 5 6 ) 234'4576*( ätt 8:9; 1 2 3 4 5 6 ) 4=>2?7'@;46( ätt AB95 1 1 1 1 1 1 1 ) ;=>27D4D4DE( 78F 3A ) G 8FIJA ) K% ( H1' 1 2 3IE 4 5 6LM95 4 10 18ON ) 247'(P% Σ8 ) R - Π8 ) RU, V 95 k 0 W k W 10 ) X5=7#&YJ # a kdz 0 W k W n ) &Y ar k\ 0 W k W n ) En snitslad väg genom Matlabdjungeln YO %] #KY QH46*( ( Var man startar 11 Första gången du vill köra Matlab så tillverka en katalog ^_" rotkatalog " $ omedelbart under din 2
- Övningen bör gå lika bra att genomföra på andra datorsystem där Matlab finns tillgängligt (åtminstone om det är version 50 eller högre) " 12 Gå till Matlab-katalogen (R " ) och starta Matlab med kommandot " eller genom att klicka på Matlabs ikon Kör ett eller flera demon för att se vilka möjligheter som finns peciellt behöver du kanske hjälp med det grafiska fönstret 13 Bekanta dig med Matlabs syntax Kontrollera att systemet kan lägga ihop 2 och 2 med rätt svar Lägg speciellt märke till möjligheten att kalla tillbaka gamla kommandon med pil-upp tangenten Det går också att göra rättelser i dem 14 Prova Matlabs hjälpfunktion genom att först ge kommandot och sedan välja något speciellt ämne kriver man bara får man en (lång) lista på det mesta man kan be om hjälp om Använd denna hjälpfunktion varje gång du stöter på något i texten som du inte -,,- ) förstår esta nu, Y ( R ) och % ( Följder och grafik W W 15 Rita upp kurvan sinl tn, 5 t 15 genom kommandona ( är Matlabs prompt och skall ej skrivas) =0$&Y #&%J YJ,- 2 e efter vad egentligen är För att slippa utskrifter av resultaten kan man lägga till ett semikolon på slutet av kommandot, alltså t ex =0&Y #K%J YJ Rita i stället kurvan sinl 2tN på samma intervall Prova sedan sinl ωtn med ω 9 50 100 200 500 501 502 503 Vad kan det vara frågan om? Kan man lita på datorritade figurer? 16 Generera följden 9 0 1 2 3 30 med Matlabs kolon-operator Y illverka följderna AB9D nl n 1N 2 och :9 Σ genom att sätta = :% _* =HR och jämför dem (t ex genom att bilda skillnaden) - element i bytta mot 1 illdelningssatsen = :% 17 Att förlänga en följd är lätt Prova till exempel 4=>J?4'4,( 4=> 7*( 4=> 76*( är en vektor med alla _* ger här samma resultat 3
R X X R Geometriska och andra summaföljder 18 Vi skall nu titta lite på geometriska följder kriv in ;= =D#&Y XD=D#&% - 5=4XP%],- - - *X #5,#D# %O*( *X " - - -,"5=HRU,- -," -," " - Z" 7- så får du följden och delsummorna utritade på olika sätt Om man vill göra om figurerna ovan med olika antal termer och olika värden på X så är det lämpligt att göra ett litet matlabprogram ådana program lägger man i filer med extensionen % 19 illverka en fil med namnet ;=4XP% ] - -,-, -, -* $ -, 5=HRU,,-, " -,," -* $," - % med innehållet och lägg in den i ditt matlabbibliotek Den kan nu köras med kommandot du ändra på värdet av x eller på antalet termer och köra om, så är det bara att skriva t ex =D#&Y'Z# XD=0#&% - -, Vill Prova detta och några andra x-värden tudera sedan finesserna i -filen Återställ till slut grafikfönstret med 4
X 110 De harmoniska talen utgör den diskreta motsvarigheten till logaritmfunktionen De är lätta att bilda i Matlab: = Y # = RU, E % _ Rita upp dem och rita in logaritmfunktionen i samma diagram Jämför sedan med logaritmfunktionen -,0- " -,0-,-,- -,0-,-,- Upprepa försöket med 40 ersatt med 1000 ror du nu på Eulers konstant? 1 111 Följden har intressanta egenskaper Vi skall försöka konstruera den, och börjar med att k! tillverka fakulteterna De är ju lösningar till differensekvationen x n 9 nx n 1 xl 0N 9 1 och kan alltså fås genom att bilda produktföljden till följden 8:9D 1 1 2 3 4 5 6 Lägg märke till den dubbla ettan i början När vi sedan har fakulteterna så är det bara att dividera 1 med dem I Matlab är det enkelt, skriv 4=>J7 Y E,( -$ =HR = %_ Z =HRU Observera att Matlab använder samma beteckning för funktionsvärden och matriselement ill exempel betyder X E värdet e 1 Z av exponentialfunktionen medan E anger term nummer 15 i följden Alla Matlabföljder indiceras med början från 1 Plotta sedan elementen i och dess summaföljd, och se hur värdena av summorna s n 9 n 1 k 0 k! tycks närma sig ett gränsvärde Vilket tror du? För att testa den hypotes som vi hoppas alla har ställt upp kan man jämföra t ex term 15 (den sista) i följden med e, genom kommandot E Z, E 5
X % 112 Den som vill spara och eventuellt skriva ut de figurer som Matlab ritat kan göra detta med kommandot Det finns en mängd optioner, som man får se med 7 Om man t ex vill spara sin figur i en Postscriptfil som sedan skall inkluderas i en LAEXfil (eller i något annat system), så ger man Matlabkommandot Vill man ha en fil som skall skickas ensam till en skrivare av någon typ så ger man i stället * ",$ för optionen i stället, ' etc Rekursionsekvationer 113 Matlab har de vanliga kontrollstrukturerna med repetitionsslingor,, och logiska val, Repetitionsslingor skall man av effektivitetskäl undvika om det är möjligt, men här skall vi använda dem för att lösa en differensekvation Låt oss börja med övning 216: x n 9 1 077x n 1 200 x 0 9 10000 Vi vill finna lösningen under de första 50 åren Detta kan vi ställa upp på en rad och sedan plotta lösningen med nästa rad på följande sätt: X U -$ = #Z#,#,# " #&Y = &Y,# X = %O#G,G X,#,# Plotsatsen ser ut som den gör, därför att Matlabvektorer nödvändigtvis indiceras med början på 1 medan vi startar vid år 0, och motsvarigheten mellan matematik och Matlab blir därför x n )>X Variera lite på begynnelseinsättningen och se vad som sker Lägg märke till skalorna! peciellt intressanta ting händer nära 2597 kronor Vad har detta med den konstanta partikulärlösningen att göra? 114 Lös rekursionsekvationen x n 9 ax n 1 x n 2 x 0 9 0 x 1 9 1 med a) a lite mindre än 2 och b) a lite större än 2 Det går att göra på en rad med X E =Z# X = -$ =Z'KY,# X =Z X Försök förklara resultatet ( i a) med hjälp av läroboken, avsnitt 33) Beundra de vackra sinuskurvorna som du får i a) med,- OX X - * 6
Matriser och lineära ekvationssystem Matlabs specialitet är matrisräkning Det finns i princip två typer av matrisoperationer i Matlab, elementvisa operationer (array operations) och egentliga matrisoperationer (matrix operations) De förra arbetar med en matris eller två av samma storlek, och utför operationen på en plats i taget utan att blanda in andra matriselement De senare bildar nya element ur många gamla ypiska exempel på egentliga matrisoperationer är matrisinversion och matrismultiplikation 115 Prova skillnaden mellan t ex % och (för en kvadratisk matris ) kriv in t ex =>J? '4Z( vilket ger 2 2-matrisen 1 2 3 4 ransponering av (reella) matriser sker med prim-operatorn, A erhålles med och AA för matrisen ovan Bilda A A 116 Man behöver ofta beräkna uttryck av typen [ a n 1 an 2 O an m \, om a 1 a 2 a m är givna Detta är mycket enkelt, använd operationen %] Försök t ex med J?4'4DD6*(P% ]' Observera att det inte finns någon operation %, eftersom matrisaddition alltid sker elementvis Med tillgång till Matlab behöver man inte tycka att lineära ekvationsystem är jobbiga att lösa, åtminstone inte kvadratiska med entydig lösning Matrisinversen A 1 erhålls med Ett sätt att lösa det lineära ekvationssystemet Ax 9 b är alltså att använda formeln x 9 A 1 b, vilket översatt till Matlab blir XZ= (Detta är i allmänhet inte det mest effektiva sättet att lösa systemet, utan man skall hellre använda Matlabkommandot XD= ) 117 Lös ekvationsystemet x 2y 9 5 3x 4y 9 6 för hand och med Matlab, med båda de angivna metoderna 118 Försök att lösa ekvationssystemet x 2y 9 5 2x 4y 9 6 för hand och med Matlab, med båda de angivna metoderna 119 Försök att lösa ekvationssystemet x 2y 9 5 2x 4y 9 10 för hand och med Matlab, med båda de angivna metoderna Kan du dra några slutsatser av resultaten? 7
Polynomekvationer 120 Med Matlab kan man lätt numeriskt lösa polynomekvationer Operationen heter -,- För att ta ett exempel, får man nollställena till polynomet x 3 5x 7 genom operationen -,- 2!#H7G( Lägg märke till att en del av dem är komplexa Man kan rita upp deras lägen i det komplexa talplanet genom följande operationer:,- *X -,- 24#H4G( (Den senare för att få samma skala på reella och imaginära axeln) Försök nu samma sak med andra polynom, t ex x 9 1 Lineära rekursionsekvationer Det ovanstående kan nu kombineras för att skriva en lösare av begynnelsevärdeesproblem för homogena lineära rekursionsekvationer, alltså (i specialfallet 2:a ordningen) av typen x n ax n 1 bx n 2 9 0 x 0 9 α x 1 9 β Detta görs ju i följande steg (sid 26 27 i läroboken), åtminstone om det karakteristiska polynomet inte har multipelrötter: 1 kriv upp den karakteristiska ekvationen 2 Lös denna 3 kriv upp den allmänna lösningen till ekvationen 4 ätt in begynnelsevärdena i den allmänna lösningen Det ger ett kvadratiskt lineärt ekvationssystem 5 Bestäm konstanterna med hjälp av begynnelsevärdena, dvs lös det lineära ekvationssystemet 6 Beräkna värdet av lösningen vid den önskade tidpunkten Alla dessa steg kan lätt utföras med hjälp av Matlab 121 Lös på detta sätt begynnelsevärdesproblemet x n 9 x n 1 x n 2 x 0 9 1 x 1 9 1 Bestäm x 5 och x 7 och jämför med direkt iteration 8
R = - = = 122 kriv en Matlabfunktion som löser ett allmänt problem x n ax n 1 bx n 2 9 0 x 0 9 α x 1 9 β Huvudet på funktionen skall se ut så här: * X "-, ",-, D H= "-, ",-,, -*,R * ;=, $ *,, 7 $ $ D=! Z$, 9