Numerieke Methoden I Matlab: Scripts versus functions A.A.N. Ridder Department EOR Vrije Universiteit Amsterdam Huispagina: http://personal.vu.nl/a.a.n.ridder/numprog/default.htm 3 september 2014 c Ad Ridder (VU) Numerieke Methoden I – Najaar 2014 1/9 Wat is een script file? I Een tekst bestand (file) met extensie .m; I Iedere regel is een Matlab opdracht (commando); I Uitvoer door in het commandoscherm de naam van het bestand in te tikken; I Gelijkwaardig is om alle opdrachten direct in het commandoscherm in te tikken regel voor regel direct achter de prompt; c Ad Ridder (VU) Numerieke Methoden I – Najaar 2014 2/9 Voorbeeld Het volgende programma staat in het bestand testprog1.m x = linspace(-pi,pi,200); y1 = cos(x); y2 = 1 - 0.5*x.ˆ2; plot(x,y1,’k’,x,y2,’r’,’LineWidth’,2); c Ad Ridder (VU) Numerieke Methoden I – Najaar 2014 3/9 Nadelen script file (voordelen?) I Werkt alleen met globale variabelen; I Variabelen blijven in geheugen; I Resultaten blijven in geheugen; I Grote programma’s worden spaghetti-code; I Niet flexibel; I Onoverzichteljk; I ¨ Lastige te verifieren; I ... c Ad Ridder (VU) Numerieke Methoden I – Najaar 2014 4/9 Modulair programmeren Bron: http://nl.wikipedia.org/wiki/Modulair_programmeren I Splits je programma op in modules die elk een logische functie uitvoeren; I Een module roept eventueel een andere module aan om zijn doel te bereiken, maar werkt anderszins zoveel mogelijk zelfstandig; I Modules kunne apart gecompileerd worden ter verificatie van correctheid; I Vele voordelen: zie de WiKi pagina. c Ad Ridder (VU) Numerieke Methoden I – Najaar 2014 5/9 Modulair programmeren in Matlab I Een module is in Matlab een enkele function; I Elke function kan gecodeerd worden in een aparte function file met dezelfde naam als de naam van de function; I Function file heeft ook extensie .m; I In feite is ook de code van alle Matlab functies die je aanroept (bv sin(pi/3), exp(sqrt(2)),... geschreven in function files (sin.m, sqrt.m, exp.m etc. c Ad Ridder (VU) Numerieke Methoden I – Najaar 2014 6/9 Een bestand per programma I Handiger en aangeraden: schrijf alle functions van een bepaald programma in ´ bestand; e´ en I Althans, zolang je nog geen complexe projecten uitvoert met programma’s van duizenden/tienduizenden/..., regels; I Zo doe je dat (meestal) ook in Java (en C++, en Python, en ...); I Elk programma komt zo in zijn eigen bestand; I Om het programma uit te voeren wordt ook het hele programma een function en het bestand krijgt de naam van deze function; I Voorbeeld op volgende slide; c Ad Ridder (VU) Numerieke Methoden I – Najaar 2014 7/9 Voorbeeld Gevraagd: I Construeer de rij van Fibonacci 0, 1, 1, 2, 3, 5, 8, . . .; I Noem deze fi , i = 1, 2, . . .; I Druk de 10-de t/m 15-de uit deze rij af (f10 , . . . , f15 ); I Bereken de ratio’s φi = fi+1 /fi en de verschillen vi = φi − φ, waarin φ het gulden snede getal is: √ φ = 21 1 + 2 ≈ 1.618033988749895 I Maak een plot van deze verschillen tot en met v50 ; c Ad Ridder (VU) Numerieke Methoden I – Najaar 2014 8/9 Programma De file heet fibonacci.m function fibonacci main; % roept de eerste (sub)functie van het programma aan function main L = input(’Geef lengte rij L>=55: ’); if L<55 error(’te kleine rij’); end ... end function rij = construeer_fibonacci_rij(n) ... end ... end Te vinden op de website http://personal.vu.nl/a.a.n.ridder/numprog/matlab/default.htm c Ad Ridder (VU) Numerieke Methoden I – Najaar 2014 9/9
© Copyright 2024 ExpyDoc