MATLAB: Een Inleiding

Vergelijkbare documenten
Matlab introductie. Kees Vuik

Hoofdstuk 3. Matrices en stelsels. 3.1 Matrices. [[1,7]],[[12,8] ] of [ 1, 7; 12,8 ] bepaalt de matrix

Matlab-Introductie (les 1)

Lineaire Algebra voor ST

Aantekeningen over MATLAB

Eerste serie opgaven Systeemtheorie

1 Matlab: problemen oplossen binnen de lineaire algebra

Derive in ons wiskundeonderwijs Christine Decraemer

Lineaire Algebra Een Samenvatting

Stelsels Vergelijkingen

II. ZELFGEDEFINIEERDE FUNCTIES

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

Blokmatrices. , I 21 = ( 0 0 ) en I 22 = 1.

Basiskennis lineaire algebra

Practicum NLA : Iteratieve methodes

Korte handleiding Maple bij de cursus Meetkunde voor B

Het oplossen van stelsels lineaire vergelijkingen Wiskunde 2, 2DM60 College 2b

Lineaire Algebra voor ST

Lineaire Algebra voor ST

3.2 Vectoren and matrices

Lineaire Algebra. Bovendriehoeks- en onderdriehoeks vorm: onder (boven) elke leidende term staan enkel nullen

Matrixoperaties. Definitie. Voorbeelden. Een matrix is een rechthoekig array van getallen, die kentallen of elementen heten.

Matrices en Stelsel Lineaire Vergelijkingen

Uiteenzetting Wiskunde Grafische rekenmachine (ti 83) uitleg

Korte handleiding Maple, bestemd voor gebruik bij de cursus Wiskunde

WI1808TH1/CiTG - Lineaire algebra deel 1

11.0 Voorkennis V

Introductie in R.

Lineaire Algebra voor ST

PC les 1: MATLAB gebruiken

Beknopte handleiding voor Derive 5.0 for Windows

Lijsten op uw TI grafische rekenmachine.

x = b 1 x 1 , b = x n b m i,j=1,1 en een vector [x j] n j=1 m n a i,j x j j=1 i=1

Praktische informatie m.b.t. College Lineaire Algebra en Beeldverwerking Bachelor Informatica en Economie 2 e jaar Voorjaar semester 2013 Docent:

WI1808TH1/CiTG - Lineaire algebra deel 1

Een korte samenvatting van enkele FORTRAN opdrachten

2. Een eerste kennismaking met Maxima

Uitwerkingen Lineaire Algebra I (wiskundigen) 22 januari, 2015

3 Wat is een stelsel lineaire vergelijkingen?

Vakgroep CW KAHO Sint-Lieven

maplev 2010/7/12 14:02 page 15 #17 Nadere detaillering van een aantal zaken van Module 1 Geen,, " ", \, save, read, protect, unprotect

Linalg.nb 1. Werk het notebook aandachtig door en maak de (genummerde) oefeningen aan het einde van elke sectie. Succes!

Bekijk nog een keer het stelsel van twee vergelijkingen met twee onbekenden x en y: { De tweede vergelijking van de eerste aftrekken geeft:

4.0 Voorkennis [1] Stap 1: Maak bij een van de vergelijkingen een variabele vrij.

Rekenen met de GRM. 1 van 1. Inleiding: algemene zaken. donkerder. lichter

8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde

Examen Lineaire Algebra en Meetkunde Tweede zit (13:30-17:30)

Tentamen Lineaire Algebra 1 (Wiskundigen)

Antwoorden op de theoretische vragen in de examen voorbereiding

Wetenschappelijk Rekenen

Aanvullingen bij Hoofdstuk 8

Project Dynamica: oefenopgaven met R

Functies. Huub de Beer. Eindhoven, 4 juni 2011

Enkele voorbeelden volstaan. Zie verder de Help-file van Matlab.

Hoofdstuk 1. Illustratie 2

ONBETWIST ONderwijs verbeteren met WISkunde Toetsen Voorbeeldtoetsen Lineaire Algebra Deliverable 3.10 Henk van der Kooij ONBETWIST Deliverable 3.

Lineaire Algebra (2DD12)

Inleiding Statistiek

5. Vergelijkingen Vergelijkingen met één variabele Oplossen van een lineaire vergelijking

Matrixalgebra (het rekenen met matrices)

8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde

Tussentijdse Toets Wiskunde 2 1ste bachelor Biochemie & Biotechnologie, Chemie, Geografie, Geologie en Informatica april 2011

Overzicht. Lineaire vergelijkingen. Onderwerpen & Planning. Doel. VU Numeriek Programmeren 2.5

Functies van vectoren

De inverse van een matrix

Praktische informatie. m.b.t. College. Lineaire Algebra en Beeldverwerking. Bachelor Informatica. 1e jaar. Voorjaar semester 2012

Eindtermen Lineaire Algebra voor E vor VKO (2DE01)

Het installatiepakket haal je af van de website

Lineaire vergelijkingen

Tentamen lineaire algebra voor BWI maandag 15 december 2008, uur.

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Tentamen Lineaire Algebra voor ST (2DS06) op , uur.

TENTAMEN LINEAIRE ALGEBRA 1 donderdag 23 december 2004,

Berekeningen op het basisscherm

MAPLE: Een Inleiding

Supplement Wiskunde 2017/2018. Inhoudsopgave

Wiskundige Analyse I. Hoofdstuk 1. Vraag 1.1 Het beginvoorwaardenprobleem. x 2 y + xy + x 2 y = 0, y(0+) = 1, y (0+) = 0. bezit een unieke oplossing.

EXCEL BASIS 2013

Wetenschappelijke rekenmachines

MATLAB Quickstart. Versie 1.14 voor MATLAB 7.x. G.J. Bex

Oefeningen Numerieke Wiskunde

Lineaire Algebra voor ST

Variabelen gebruiken in ons programma

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Basisvaardigheden algebra. Willem van Ravenstein Den Haag

Kies voor i een willekeurige index tussen 1 en r. Neem het inproduct van v i met de relatie. We krijgen

M1 Wiskundig taalgebruik en notaties

5 FORMULES EN FUNCTIES

3. Lineaire vergelijkingen

CTB1002 deel 1 - Lineaire algebra 1

Lineaire vergelijkingen II: Pivotering

In dit hoofdstuk komen korte onderwerpen aan bod die we uitwerken met DERIVE. Zo leer je heel wat functies van DERIVE kennen.

5. Functies. In deze module leert u:

Een formule is een berekening die jij zelf maakt in Excel. Een formule begint met het isgelijkteken en bevat celverwijzingen.

Samenvatting Lineaire Algebra, periode 4

FACULTEIT ECONOMIE EN BEDRIJFSKUNDE Afdeling Kwantitatieve Economie

Meetkunde en lineaire algebra

Ruimtewiskunde. college. Stelsels lineaire vergelijkingen. Vandaag UNIVERSITEIT TWENTE. Stelsels lineaire vergelijkingen.

Stelsels lineaire vergelijkingen

HOOFDSTUK 1. beginnen met excel

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

Transcriptie:

MATLAB: Een Inleiding Numerieke wiskunde 2de kand. Burg. Ir. 2003-2004 Inhoudsopgave 1 Inleiding 2 2 Basiscommando s 2 2.1 Het invoeren van variabelen............................... 2 2.2 De uitvoer......................................... 3 2.3 Selecteren van matrixelementen............................. 4 2.4 Rekenkundige operatoren................................ 4 2.5 Relationele operatoren.................................. 5 3 Functies in MATLAB 6 3.1 Enkele elementaire functies in MATLAB........................ 6 3.2 Algemene MATLAB functies.............................. 6 3.3 Voorgedefinieerde constanten.............................. 6 3.4 Functies voor matrices.................................. 7 4 Constructies: if, for, while 8 4.1 if elseif else end................................... 8 4.2 for end.......................................... 8 4.3 while end........................................ 8 5 Zelf functies schrijven 8 6 Grafieken 9

1 Inleiding In de cursus Numerieke Wiskunde hebben we verschillende begrippen en methodes uit de numerieke wiskunde geïntroduceerd op een theoretische manier. In de oefenzittingen worden deze methodes geïllustreerd. Verder wordt een zekere feeling voor numerieke wiskunde bijgebracht tijdens de pc-sessies. We zullen hierbij o.a. gebruik maken van het software-pakket MATLAB. Dit is één van de vele software-pakketten die de (numerieke) wiskundige ter beschikking staan om een bepaald probleem efficiënt en nauwkeurig te analyseren en op te lossen. MATLAB is een pakket dat interactief wordt gebruikt en dat vooral geschikt is voor het werken met matrices. Vele functies uit welgekende pakketten voor lineaire algebra (LINPACK, EISPACK,...) worden in MATLAB aangeboden. Zo zijn er bv. commando s beschikbaar voor het berekenen van de eigenwaarden en eigenvectoren van een matrix of voor de LU-decompositie van een matrix. MATLAB bevat een uitgebreide online helpfunctie. Door het intypen van >> help verkrijgt men een overzicht van deze helpfunctie. Verdere informatie over bijvoorbeeld de mogelijke operatoren in MATLAB vindt men met het commando >> help ops Om te weten te komen wat de operator.* precies doet, typt men >> help arith Een nadeel van deze manier van werken, is dat men de naam van het commando moet kennen vooraleer men de documentatie hierover kan raadplegen. Door in het help menu het item index te kiezen, krijgt men echter een overzicht van alle MATLAB-commando s. Besef echter wel dat de gebruiker zelf ook functies kan definiëren en dat deze uiteraard niet in deze index voorkomen. Als je het exacte commando niet kent, kan je beroep doen op lookfor. >> lookfor eigenvalue zoekt van alle m-files (zie onder Zelf functies schrijven ) de eerste commentaarregel af en vermeld diegene die het opgegeven woord bevatten. Als je dus zelfgeschreven m-files hebt en je voorziet die van nuttige commentaar, kan het commando lookfor die terugvinden. Deze tekst wil een inleiding op MATLAB zijn en bevat enkel die functionaliteiten van MATLAB, waarvan wij denken dat ze moeten gekend zijn om enigszins vlot met het pakket te kunnen werken. Voor verdere informatie verwijzen we naar de uitgebreide helpfunctie die online wordt aangeboden. Meer informatie, onder andere bibliotheken met functies, kan je ook altijd vinden op de homepage van The Mathworks: [http://www-europe.mathworks.com/] 2 Basiscommando s Bij het werken met MATLAB krijg je op het scherm telkens een prompt. Dit is: >>. Hierachter kan je de gewenste bevelen intikken. Als je op de enter toets drukt, wordt het bevel uitgevoerd. 2.1 Het invoeren van variabelen GETALLEN: < naam-van-de-variabele > = < waarde > >> x = 0.65

heeft als resultaat dat MATLAB aan de variabele x de waarde 0.65 toekent. MATLAB antwoordt : x = 0.6500 MATRICES worden rij per rij gedefinieerd. Een vierkante haak [ maakt MATLAB duidelijk dat er een matrix volgt. Een matrix wordt afgesloten met ]. Je kan een matrix op 2 manieren invoeren. Je wil a = 0 1 2 3 4 5 6 7 8 dan tik je ofwel >> a = [ 0 1 2 ; 3 4 5 ; 6 7 8 ] ofwel >> a = [ 0 1 2 3 4 5 6 7 8 ] In beide gevallen antwoordt MATLAB : a = 0 1 2 3 4 5 6 7 8 De rijen worden dus gescheiden door een ; of door een enter, de verschillende elementen van een rij worden gescheiden door een blanco of eventueel door een komma. 2.2 De uitvoer De inhoud van een variabele kan je opvragen door gewoon de naam van de variabele in te tikken, en dan op de enter toets te drukken. >> x MATLAB antwoordt : x = 0.6500 Dit is het standaard uitvoerformaat van MATLAB. Wetenschappelijke notatie verkrijg je met het bevel: >> format short e Wil je meer cijfers van je getal zien, dan kan dat met de bevelen >> format long of >> format long e Na het intikken van dit laatste bevel, beantwoordt MATLAB

>> x met x = 6.500000000000000e-01 Meerdere opties wat uitvoer van getallen betreft, kan je opvragen met het commando >> help format Je merkt dat MATLAB steeds uitvoer geeft als een commando wordt ingetypt. Om dit te vermijden (wat bijvoorbeeld handig is als men grote matrices als uitvoer verwacht) kan men achter het commando een ; plaatsen. 2.3 Selecteren van matrixelementen Je kan matrix elementen als volgt selecteren : a(i,j) geeft het element op de i de rij en de j de kolom van a. a(i,:) geeft de hele i de rij van a. a(:,j) geeft de hele j de kolom van a. a(i:j,k:l) geeft de deelmatrix a(i... j, k... l). a(end,end) geeft het laatste element in de matrix. >> m = a(1:2,2:3) geeft m = 1 2 4 5 2.4 Rekenkundige operatoren De volgende rekenkundige bewerkingen kunnen zowel voor scalars als voor matrices gebruikt worden: + optelling - aftrekking * vermenigvuldiging / rechtse deling (a\b betekent a*{\rm inv} (b) ) \ linkse deling (a\b betekent inv(a)*b ) ^ machtsverheffing.* elementsgewijze vermenigvuldiging van matrices./ elementsgewijze deling van matrices.^ elementsgewijze machtsverheffing matrices >> a * b berekent het matrixproduct van de matrices a en b. Uiteraard moeten deze matrices de juiste dimensies hebben. Om de dimensie van de matrix a op te vragen kan men het commando

>> size(a) gebruiken. Om de elementen van twee matrices (van dezelfde dimensie) elementsgewijze te vermenigvuldigen, gebruikt men.*. Voorbeeld >> a = [ 9 5 4 ]; >> b = [ 6 7 0 ]; >> c = a.* b c = 54 35 0 Als je het resultaat van een bewerking niet toekent aan een variabele, wordt hiervoor automatisch de variabele ans (van answer ;-) gebruikt. >> 2^5 32 >> ans - 5 27 2.5 Relationele operatoren == gelijkheid ~= ongelijkheid < kleiner dan <= kleiner dan of gelijk > groter dan >= groter dan of gelijk Deze operatoren zullen we later nodig hebben bij het beschrijven van de commando s for, while, if,.... Het resultaat van een logische uitdrukking is 1 als ze waar is en 0 als ze onwaar is. >> 8 == ( 2^3 ) 1 >> 2 > 6 0

Merk op dat ronde haakjes kunnen worden gebruikt om de volgorde van operatoren op te leggen. Strikt genomen zijn deze in bovenstaand voorbeeld overbodig omdat de machtsverheffing een hogere prioriteit heeft dan de gelijkheid. Meer informatie over deze operatoren en nog andere kan men bekomen met >> help ops >> help arith >> help relop 3 Functies in MATLAB 3.1 Enkele elementaire functies in MATLAB log, log10, exp, sin, cos, tan, asin, sinh, asinh,... Het argument geef je in tussen ronde haakjes. >> log(1) geeft als antwoord: 0 3.2 Algemene MATLAB functies who clear save load path flops quit geeft een lijst van de variabelen die je gebruikt. geeft de gebruikte geheugenruimte terug vrij. bewaart de variabelen van de huidige MATLAB-sessie in een.mat -bestand. leest de variabelen uit een.mat-bestand terug in zodat deze terug de waarden hebben van net voor de laatste save. zet hierin de padnamen van de directories waar MATLAB naar functies (.m -bestanden) moet zoeken. geeft het aantal uitgevoerde bewegende komma- of floating point-operaties. Door het commando flops(0) wordt dit aantal op 0 geïnitialiseerd. Opgelet: dit commando is niet meer beschikbaar in MATLAB 6! sluit MATLAB af. Voor meer informatie over ingebouwde functies: >> help elfun >> help general >> help <functienaam> >> lookfor <term> 3.3 Voorgedefinieerde constanten eps tweemaal de machinenauwkeurigheid ɛ mach = ULP. pi het getal pi.

3.4 Functies voor matrices abs geeft de absolute waarde. round geeft het dichtstbij gelegen geheel getal. inv berekent de inverse matrix (vierkante matrix!). det berekent de determinant (vierkante matrix!). cond berekent het conditiegetal van een matrix. rank bepaalt de rang van een matrix. size bepaalt het aantal rijen en kolommen van een matrix. norm berekent de norm van een matrix of van een vector. eye(n) geeft de eenheidsmatrix terug van dimensie n. diag(a) als A een vector is, geeft dit een diagonaalmatrix met de elementen van A op de diagonaal. als A een matrix is, geeft dit een vector met de diagonaalelementen van A. kan ook gebruikt worden voor onder- en bovendiagonalen, zie help diag. lu geeft de factoren terug na Gauss-eliminatie (met optimale rij-pivotering). chol geeft de Cholesky-factorizatie. eig berekent eigenwaarden en eigenvectoren. svd berekent de singuliere waarden ontbinding. rand(m,n) geeft een (m x n)-matrix met randomgetallen, uniform verdeeld tussen 0 en 1. A geeft de getransponeerde van de matrix A. A(:) zet alle kolommen van A onder elkaar in een vector. ones(m,n) geeft een matrix van dimensie m x n met allemaal eentjes. zeros(m,n) geeft een matrix van dimensie m x n met allemaal nullen. fliplr(a) draait de matrix A om in de links/rechts richting. flipud(a) draait de matrix A om in de onder/boven richting. tril(a) geeft de onderdriehoeksmatrix van A. triu(a) geeft de bovendriehoeksmatrix van A. Voorbeelden: Na het intikken van >> [l,u] = lu(a) geeft MATLAB twee matrices l en u terug; l is een benedendriehoeksmatrix met 1 tjes op de diagonaal en u is een bovendriehoeksmatrix. Om een stelsel A X = B op te lossen, gebruik je de MATLAB deling >> x = a \ b Hierbij wordt impliciet ook Gauss-eliminatie met optimale rij-pivotering gebruikt. Als a geen vierkante matrix is (dit betekent dat het aantal vergelijkingen verschilt van het aantal onbekenden), dan krijg je de kleinste kwadraten oplossing. >> [V,D] = eig(a) geeft een diagonaal matrix D met de eigenwaarden en een volle matrix V waarvan de kolommen de eigenvectoren zijn zodat A V = V D. (Hier moet a een vierkante matrix zijn!) Voor verdere informatie over de commando s: >> help commando >> help matfun overzicht van de functies voor matrices. >> help specmat overzicht van matrices met een speciale structuur. >> help sparfun functies voor spaarse (ijle) matrices.

4 Constructies: if, for, while Deze constructies, die trouwens zeer sterk gelijken op analoge constructies in PASCAL of FOR- TRAN, kunnen zowel interactief als in een.m -bestand (zie later) worden gebruikt. 4.1 if elseif else end syntaxis: if expression, statements, else, statements, end >> if (i==j) i=j+1; j=i/2; else j=2*i; end Voor een uitgebreider voorbeeld verwijzen we naar de helpfunctie. 4.2 for end syntaxis: for variable = expr, statement,..., statement end >> x=0; >> for i=1:5, x=x+i; end 4.3 while end syntaxis: while variable, statement,..., statement, end >> x = 0; >> y = 0; >> while (x <= 5), x=x+1; y=y+x; end 5 Zelf functies schrijven In MATLAB kan je zelf ook functies schrijven om complexe berekeningen uit te voeren. Zodoende kan je het pakket naar je eigen behoefte verder uitbouwen. Ook op het Internet zijn vele dergelijke functies te vinden over allerlei onderwerpen. Een dergelijke functie wordt gewoon met een editor geschreven (je gebruikt best gewoon het bevel edit) en opgeslagen (in ASCII-formaat) in een bestand met extensie.m. Het is leerzaam om enkele van de in de PC-zittingen gebruikte.m -bestanden te bekijken om te zien hoe je zulke functies schrijft. De eerste regel van een.m -bestand bevat bijvoorbeeld: >> function [x,y] = naam(a,b,c) Als je dit bestand opslaat met de naam naam.m, kan je deze functie in MATLAB oproepen als:

>> [x,y] = naam(a,b,c) De parameters a, b, c zijn de gegevens die aan de functie worden doorgegeven. Het resultaat moet binnen de functie worden toegekend aan de variabelen x en y. Uiteraard moeten de namen van de variabelen en parameters binnen het.m -bestand en bij het oproepen van de functie niet hetzelfde zijn. Hiervoor geldt hetzelfde principe als in PASCAL bv. Na deze functiehoofding voeg je best wat commentaar toe over het doel van de functie, en bijvoorbeeld de volgorde waarin je de argumenten moet geven. Dit kan doen door je regel te laten beginnen met een %-teken. Deze eerste commentaarlijnen verschijnen als antwoord als je tikt >> help naam Je kan uiteraard ook op andere plaatsen in je functie commentaar schrijven. Vergeet niet om achter elk commando een ; te schrijven, anders krijg je bij het uitvoeren van de functie alle tussenresultaten op je scherm. Dit kan wel nuttig zijn bij het manueel debuggen van een functie. Om de functie te kunnen verlaten voor de laatste opdracht is uitgevoerd, bv. bij het slagen van een bepaalde test, gebruik je return. 6 Grafieken Grafieken maken kan met het commando plot. Zie de helpfunctie voor de precieze werking ervan. Onderaan de online-helpdocumentatie bij dit commando zie je een overzicht van een reeks commando s die verband houden met de plot functie. Soms kan het nuttig zijn om de grafiek uit te zetten in een logaritmische schaal. semilogx gebruikt een logaritmische schaal voor de horizontale as, semilogy voor de vertikale as en loglog voor de beide assen. Vooral bij het uitzetten van een foutenkromme kan dit nuttig zijn. Als je een grafiek hebt uitgezet op een figuur en je geeft opnieuw een plotcommando, zal je merken dat de vorige grafiek wordt gewist. Om toch meerdere grafieken op één figuur te zetten, gebruik je het commando hold on. Het commando hold off zet dit terug af. Om de grafieken later nog te kunnen begrijpen kan je de naam van de variabele vermelden die volgens een as is uitgezet (commando xlabel en ylabel). Ook kan je de grafiek een titel geven (commando title). Een legende toevoegen (handig als je meerdere grafieken op één figuur uitzet) kan met het commando legend. Je kan je grafiek afdrukken of opslaan in een bestand met het commando print. Meerdere grafieken openen, kan je met het commando figure. Raadpleeg weerom de helpfunctie voor de precieze werking van deze commando s. Veel plezier!