2 Getallen en online help Okay, start M ATLAB weer op. Inleiding Matlab Opdracht-3: Tik in 2+3 Zoals je ziet laat M ATLAB het resultaat 5 zien. Opdracht-4: Tik in a=2+3; Dit definieert de variabele a en zijn waarde is 5. Dat M ATLAB het resultaat niet laat zien is omdat het commando eindigt met ; 1 Matlab Dit is een beknopte, telegram-stijl inleiding tot een M ATLAB . Het pakket M ATLAB is bij uitstek geschikt voor numeriek werk en voor het rekenen met vectoren en matrices. M ATLAB kenmerkt zich door korte en efficiënte code en het is makkelijk in gebruik. Elke paragraaf behandelt een beperkt aantal onderwerpen. Aan de hand van vele korte opgaven (de grijze kadertjes) leiden we de onderwerpen in. Opdracht-5: Tik in a=2+3*sqrt(-1) Aha, M ATLAB kent dus complexe getallen. Je had overigens ook gewoon a=2+3*i in kunnen tikken. M ATLAB heeft heel veel functies die op getallen werken. Bijvoorbeeld sin(1) geeft wat je verwacht. Als je niet weet hoe een functie werkt of of een functie überhaupt binnen M ATLAB gedefinieerd is kun ‘help’ roepen: Opdracht-6: Tik in help abs Opdracht-1: Start M ATLAB op. Als je ‘iets’ wil met tangens (Engels: tangent) maar je weet niet precies hoe en wat, dan doe je ‘lookfor’. Dat geeft een overzicht van alle commando’s die iets met tangens te maken hebben: Als het goed is zie je nu zoiets als dit: Opdracht-7: Tik in lookfor tangent (overigens, dit kan een tijdje duren) Opdracht-8: Tik in x=1/0 Opdracht-9: Tik in y=1/x Jawel, in M ATLAB mag je delen door nul en door oneindig. Het grote venster rechts heet de command window en dat is waar je interactief de M ATLAB commando’s kunt intikken (we maken ons niet druk om de kleine venstertjes links). De twee groter-dan tekens >> in de command window geeft aan dat M ATLAB klaar is voor invoer. 3 Vectoren Opdracht-10: v=[1 2 3 4 5] Dit definieert de rij-vector v∈ R1×5 . Om bijvoorbeeld het tweede element ervan te zien doe je v(2). Het veranderen van de waarden gaat bijvoorbeeld zo: Opdracht-2: Selecteer met de muis de command window en tik vervolgens exit return Opdracht-11: v(2)=-2 Hiermee verlaat je M ATLAB. In het vervolg laten we return achterwege en veronderstellen we dat de command window al is geselecteerd. Opdracht-12: v(8)=8 Je ziet, je hoeft in M ATLAB vectoren niet vooraf te declareren: op het moment dat je v(8) nodig hebt gebruik je het 1 gewoon. M ATLAB geeft de door jouw nog niet gedefinieerde v(6) en v(7) de waarde nul. Overigens, het voortdurend laten groeien van de dimensie van een vector kost erg veel tijd en geheugen en is het beste te vermijden. x =[1 -2 3]; roots(x) de nulpunten van de polynoom 1 · t 2 − 2 · t + 3. Opdracht-27: Bepaal de nulpunten van de polynoom t 3 + 3t2 + 3t + 1. Opdracht-13: nul=zeros(1,5) Opdracht-14: een=ones(5,1) 4 Plotten Opdracht-15: rij=1:5 Om de grafiek van y = t 2 te plotten zou je bijvoorbeeld kunnen doen: Opdracht-16: kolom=(1:5)’ Opdracht-17: rij=10:-2:3 t=1:6; % da’s [1 2 3 4 5 6] y=t.*t; % da’s [1 4 9 16 25 36] plot(t,y); De laatste behoeft wellicht enige uitleg. De constructie a:b:c betekent de rij-vector a a + b a + 2b a + 3b · · · a + b c−a b cb Het commando plot zet hier de elementen van de vector y uit tegen de elementen van t. Iets geavanceerder is dit plotje van sin t : Anders gezegd, het is de doorsnijding van het rijtje a a + b a + 2b · · · met het interval [a c]. Nog een paar andere constructies: t=0:0.01:20; y=sin(t); plot(t,y); Opdracht-18: x=1:3 Hier gebeurt iets bijzonders: t is een vector dus y=sin(t) geeft aan dat we de sinus van een vector kunnen bepalen! De sinus van een vector is de vector van de sinussen, bijvoorbeeld Opdracht-19: v=[-2 x x 10] Opdracht-20: x([1 3])=[-11 -33] sin([3 5]) == [sin(3) sin(5)] Het laatste commando is een compacte manier om te zeggen dat x(1)=-11 en x(3)=-33. Je kunt vectoren optellen en scalair vermeningvuldigen, bijvoorbeeld Opdracht-28: t=0:0.01:20; Opdracht-29: y=sin(t); Opdracht-21: x=[1 2 4]; y=x+x Opdracht-30: plot(t,y,’b’,t+1,y/2,’ro’); Toont twee grafieken met wat toeters en bellen. Opdracht-22: x=[1 2 4]; y=3*x Met help plot zie je dat plot nog veel meer toeters en bellen kent. M ATLAB kent daarnaast ook het zeer handige elementsgewijze product, quotiënt etcetera van vectoren en matrices. Als deze elementsgewijze operaties worden bedoeld dan moet de operatie worden voorafgegaan door een . bijvoorbeeld Opdracht-31: Bepaal de plot van cos t 1 + t op [0,10] We kunnen zonder veel moeite functies in het complexe vlak weergeven. De complexe functie e it kun je bijvoorbeeld op de volgende manier plotten in het complexe vlak: [2 5].*[2 5] geeft de rijvector [4 25]. Dergelijke operaties zijn o.a. zinvol als er functies geplot moeten worden (zie verderop). t=0:pi/50:2*pi; plot(exp(i*t)) Opdracht-23: x=[1 -2 3]; y=x.*x We hebben tot dusver steeds in één figuur-venster de nieuwe plot weergegeven. Vaak wil je meerdere plots tegelijk kunnen weergeven, ofwel in één venster of juist in meerdere vensters. Met het commando hold zorg je er voor dat de volgende plot aan de huidige wordt toegevoegd (dus zonder de huidige te overschrijven). Nog een keer het commando hold zorgt ervoor dat de volgende plot de huidige plot weer overschrijft. Opdracht-24: x=[1 -2 3]; y=x./x Opdracht-25: x=[1 -2 3]; y=x.ˆx Opdracht-26: x=[1 -2 3]; y=x+10 Ook handig Een vector kan in M ATLAB ook een polynoom representeren. Zo geeft bijvoorbeeld het commando 2 Opdracht-32: Teken de grafieken van sin t , sin 2t en sin 4t op het interval [− ] in één figuur-venster. Opdracht-38: Open de editor weer en tik in deze editor in: function [mi,ma,gem]=stats(v); mi=min(v); ma=max(v); n=length(v); gem=sum(v)/n; Wil je een tweede figuur-venster, dan kunnen je deze openen met figure(2). Soortgelijk kun je een derde, vierde, etc. figuur-venster openen. Opdracht-33: Teken de grafieken van sin t , sin 2t en sin 4t op het interval [− ] in drie verschillende figuur-vensters. Bewaar dit bestand onder de naam stats.m De eerste regel is hier van de vorm function uitvoer=naam(invoer); Tenslotte nog een opmerking over het bewaren van figuren. Onder het kopje File in het figuur-venster vind je Export... Dit commando stelt je in staat om je figuur te bewaren als o.a. eps-bestand of pdfbestand (beide van goede kwaliteit). Je plaatst een figuur in de clipboard door onder Edit op Copy Figure te klikken. Dit laatste resulteert evenwel in een bitmap van de figuur en is daarom van iets mindere kwaliteit. Bewaren van figuren. waarbij naam ook de naam van bestand is. Je hebt nu een functie aan M ATLAB toegevoegd. Deze functie bepaalt het minimum, het maximum en het gemiddelde van een vector. Opdracht-39: w=[1 2 3 4]; Opdracht-40: [mii,maa,gemm]=stats(w) Als het goed is zijn mii, maa en gem het minimum, het maximum respectievelijk het gemiddelde van [1 2 3 4]. 5 Scripts en functies (m-files) Het interactieve van M ATLAB (en M APLE) mag dan handig zijn, je wilt de commando’s en uitvoer ook kunnen bewaren. De makkelijkste manier is door alle commando’s in een bestand (macro) te bewaren. Dergelijke bestanden moeten als extensie .m hebben vandaar dat men spreekt over m-files. 6 Tot slot We hebben slechts een klein tipje van M ATLAB’s sluier opgelicht. Voor meer informatie doe demo of doc. Dit opent een apart venster van waaruit vele demonstraties geselecteerd kunnen worden. Als je help doet dan krijg je een compact overzicht van de verschillende toolboxen te zien (waaronder ops). Elke toolbox kun je apart bekijken door, bijvoorbeeld, help ops in te tikken. Dat geeft dan weer een lijst, die je ook weer met help verder kan bekijken, zoals help punct. Als je bijvoorbeeld wilt weten hoe je de uitvoer kan bewaren doe dan help print of help save. Als je wilt weten hoe for-loops en whileloops werken doe dan help for en help while etcetera. Opdracht-34: Tik in edit Dit opent een editor. Opdracht-35: Tik in in deze editor: disp(’Goedendag’); Opdracht-36: Bewaar dit bestand onder de naam dag.m Opdracht-37: Tik in in de command window dag Als het goed is antwoordt M ATLAB met een welgemeende Goedendag. Als M ATLAB klaagt met Undefined function or variable ’dag’ dan kan M ATLAB je bestand dag.m niet vinden. Dit kun je verhelpen door bovenin de M ATLAB-window de Current directory aan te passen. Overigens, het aardige van M ATLAB is dat je m-files niet hoeft te declareren, te laden of te compileren: als M ATLAB het bestand dag.m kan vinden dan kun je de commando’s in dat bestand uitvoeren door simpelweg dag in te tikken in M ATLAB’s command window. 3