10. Controleopdrachten



Vergelijkbare documenten
12. Uitwerkingen van de opgaven

6. Functies Definities en gebruik van functies/variabelen

8. Differentiaal- en integraalrekening

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

II. ZELFGEDEFINIEERDE FUNCTIES

Een korte samenvatting van enkele FORTRAN opdrachten

Vakgroep CW KAHO Sint-Lieven

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

4. Vereenvoudigen expressies

10 Meer over functies

Project Dynamica: oefenopgaven met R

Propositielogica Het maken van een waarheidstabel

{ auteur, toelichting }

11. Eenvoudige programma s schrijven in Maxima

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )

Uitwerking tentamen Analyse van Algoritmen, 29 januari

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

Tentamen Programmeren in C (EE1400)

Small Basic Programmeren Text Console 2

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

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

VBA voor Doe het Zelvers Deel 7

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Geven we decimale getallen als invoer, dan past Maxima zich onmiddellijk aan en geeft ook decimale getallen als resultaat:

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Java Les 3 Theorie Herhaal structuren

OEFENINGEN PYTHON REEKS 1

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

Uitleg van de Hough transformatie

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

3. Structuren in de taal

Tentamen Programmeren in C (EE1400)

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

Algoritmen en programmeren: deel 1 - overzicht

Practicum Programmeerprincipes

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens

Functies. Huub de Beer. Eindhoven, 4 juni 2011

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

Lab Webdesign: Javascript 3 maart 2008

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Hoofdstuk 7: Werken met arrays

Oefening 1. Welke van de volgende functies is injectief? (E) f : N N N : (n, m) 7 2m+n. m n. Oefening 2

Hoofdstuk 7 - veranderingen. getal & ruimte HAVO wiskunde A deel 2

De bouwstenen van het programmeren 1

Small Basic Console Uitwerking opdrachten

OEFENINGEN PYTHON REEKS 1

Efficientie in de ruimte - leerlingmateriaal

VAN HET PROGRAMMEREN. Inleiding

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Informatie. Voorbeeld. Voorbeeld: toegangsprijs

VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW:

Deel 2. Basiskennis wiskunde

A.C. Gijssen. 0.3 PHP en MySQL

Inleiding Programmeren 2

Les S-02: Meer geavanceerde SQL-instructies

Les 7 & 8: MSW Logo Mieke Depaemelaere

PSD. Reeksen van logische procedures om problemen op te lossen in een eindig aantal stappen.

Hieronder zie je hoe dat gaat. Opgave 3. Tel het aantal routes in de volgende onvolledige roosters van linksboven naar rechtsonder.

5 keer beoordeeld 4 maart Wiskunde H6, H7, H8 Samenvatting


Ontwerp van Algoritmen: opgaven weken 3 en 4

Cabri-werkblad. Driehoeken, rechthoeken en vierkanten. 1. Eerst twee macro's

De keuzestructuur. Versie DD

Recursie. public static int faculteit( int n ){ // Deze functie berekent n! // pre: n = N en n >= 0 // post: faculteit = N!

PYTHON REEKS 1: BASICS. Mathias Polfliet

inleiding theoretische informatica practicum 1 deadline woensdag 20 februari 2008 om uur

Informatica: C# WPO 7

9.1 Recursieve en directe formules [1]

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

7. Tweedimensionale grafieken

GEOGEBRA 4. R. Van Nieuwenhuyze. Hoofdlector wiskunde, lerarenopleiding HUB, Brussel. Auteur Van Basis tot Limiet.

Machten, exponenten en logaritmen

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

opgaven formele structuren tellen Opgave 1. Zij A een oneindige verzameling en B een eindige. Dat wil zeggen (zie pagina 6 van het dictaat): 2 a 2.

Open het programma Geogebra. Het beginscherm verschijnt. Klik voordat je verder gaat met je muis ergens in het

Negende college algoritmiek. 15 april Dynamisch Programmeren

Ijkingstoets industrieel ingenieur aangeboden door UGent en VUB op 30 juni 2014: algemene feedback

Tentamen Kunstmatige Intelligentie (INFOB2KI)

7 Omzetten van Recursieve naar Iteratieve Algoritmen

P is nu het punt waarvan de x-coördinaat gelijk is aan die van het punt X en waarvan de y-coördinaat gelijk is aan AB (inclusief het teken).

Programmeermethoden NA. Week 3: Controlestructuren

Graphics. Small Basic graphics 1/6

Faculteit Economie en Bedrijfskunde

2.0 Voorkennis. Rekenregels machten: 5) a 0 = 1. p p q p q a p q q. p q pq p p p. Willem-Jan van der Zanden

Korte handleiding Maple bij de cursus Meetkunde voor B

Combinatoriek groep 1

OEFENINGEN PYTHON REEKS 1

Een eenvoudig algoritme om permutaties te genereren

Transcriptie:

Computeralgebra met Maxima 10. Controleopdrachten 10.1. Functies en operatoren voor lijsten/vectoren/arrays Een van de eenvoudigste maar belangrijkste lusachtige functies is de makelist opdracht. Voor het gebruik van rijen van elementen (lijsten, vectoren in de meeste programmeertalen als arrays aangeduid) biedt Maxima een heel scala aan opdrachten. Belangrijkste functies/operatoren voor lijsten/arrays: makelist(u,k,m,n) makelist(u,k,z) create_list(u,k,z) Creëert de lijst [u(m), u(m+1),..., u(n)] in afhankelijkheid van k. Creëert de lijst [u(z 1 ), u(z 2 ),..., u(z n )], waarbij z zelf een lijst Alternatief voor makelist u[n] Selecteert het n-de element van de lijst u. Selecteert het eerste element van een lijst (vector). Op dezelfde first(u) wijze kunt u via second(u), third(u),, tot tenth(u) de andere elementen van u selecteren. Een andere mogelijkheid is nog last(u). length(u) delete(w,v) append(list1,list2) cons(a,v) rest(v,n) reverse(v) sort(v) Enkele voorbeelden : Retourneert het aantal elementen van u Wist alle expressies w in de lijst v Aan lijst1 worden de elementen van lijst2 toegevoegd. Voegt de expressie a toe aan het begin van lijst v ; a wordt daarmee het eerste element van lijst v. Retourneert v zonder de eerste n elementen Geeft een kopie van v, waarbij de elementen in de omgekeerde volgorde staan. Geeft een (oplopend) gesorteerde lijst 1

Controleopdrachten 10.1.1. Toepassingen Tabel met functiewaarden Het komt in de wiskunde regelmatig voor dat we een tabel met functiewaarden nodig hebben. 2 Stel we willen een tabel van f ( x) = x x 1 op het interval [-2,3] met stapgrootte 0,5. Hint: Omdat de opdracht makelist geen optie step kent, maken we binnen makelist een lijst met de gewenst waarden (natuurlijk weer met makelist) en berekenen hiermee aansluitend de betreffende functiewaarden. Om een stapgrootte van 1 te kunnen gebruiken,verdubbelen we alle gewenste argumentwaarden. De gewenste argumentwaarden verkrijgen we nu door alle elementen van w door 2 te delen : De gewenste lijst met functiewaarden krijgen we nu eenvoudig als volgt : Uiteraard kunnen we dit resultaat ook in één opdracht bereiken : Opgave 10.1 a. 1 Maak een lijst met de eerste 20 elementen van de rij a n met a n = n 3 b. Maak door middel van de opdracht makelist de volgende lijst: c. Maak een lijst van de eerste 20 partiële sommen van de rij 1, 1, 1, 1,... 1! 3! 5! 7! 2

Computeralgebra met Maxima Opgave 10.2 Definieer een functie hoek(r,n), die de hoekpunten van een regelmatige n-hoek creëert met behulp van de opdracht makelist (straal van de omgeschreven cirkel = r). Teken met behulp van deze hoekpunten een regelmatige 6-hoek, met r = 4. Combinaties en driehoek van Pascal Via het gebruik van lijsten willen we de eerste 8 rijen van de driehoek van Pascal gaan construeren 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 De n-de rij bestaat uit de getallen n. De getallen n C k : het aantal combinaties van k uit n, met k=0,1,., n C k zijn in Maxima beschikbaar via de functie combination (n,k) uit het pakket functs. We kunnen dan bijvoorbeeld de 5-de rij uit de driehoek van Pascal als volgt maken : 5 makelist ( C k, k, 0, 5) In Maxima ziet een en ander concreet als volgt uit : We moeten nu nog een lijst maken voor alle rijen vanaf rij met nummer n=0 tot en met rij met nummer n=8: Hier staat de driehoek van Pascal, waarbij alle rijen achter elkaar staan. 3

Controleopdrachten We willen natuurlijk elke rij op een nieuwe regel afdrukken. We maken daartoe gebruik van een echte lus opdracht : for.. thru.. do (zie paragraaf 9.3) : 10.2. IF-opdracht De if opdracht biedt de mogelijkheid om berekeningen uit te voeren welke afhankelijk zijn van een of meerdere voorwaarden. Typische toepassingen zijn : gebruik als stopcriterium in recursies, definiëren van samengestelde functies. Het enkelvoudige if-statement ziet er als volgt uit : if cond_1 then expr_1 else expr_0 met de volgende betekenis : als cond_1 waar (true) is, dan wordt expr_1 uitgerekend en in alle andere gevallen wordt expr_0 berekend. Het samengestelde if-statement ziet er als volgt uit : if cond_1 then expr_1 elseif cond_2 then expr_2 elseif.. else expr_0 met de volgende betekenis : expr_k wordt uitgevoerd als cond_k true is én alle voorafgaande condities false zijn ; als alle condities false zijn dan wordt expr_0 berekend. Voorbeeld 1: Samengestelde functies 2 x x < 2 2 De functie f is gedefinieerd door : f ( x) = x 2 x 2 2 x x > 2 2 De eenvoudigste manier om f te definiëren in Maxima is via : f(x):= if (x<-2 or x>2) then x^2/2 else abs(x) 4

Computeralgebra met Maxima Algebravenster: Plotvenster: Voorbeeld 2: Recursie met if We beschrijven de faculteit van een natuurlijk getal in Maxima met behulp van de if - opdracht. De recursieve definitie luidt als volgt : facult(0)=1 facult(n)=n*facult(n-1) voor n>0 5

Controleopdrachten 10.3. FOR-opdracht Voor het herhaald uitvoeren (iteraties) van dezelfde berekeningen beschikt Maxima, net als andere programmeertalen (Fortran, Algol, Pascal, Java) over de for-opdracht. Maxima kent de volgende varianten, welke alleen in het stopcriterium verschillen. for var: initial_value step increment thru limit do body for var: initial_value step increment while condition do body for var: initial_value step increment unless condition do body Hierbij mogen initial_value, increment, limit, en body willekeurige expressies zijn. Als de stapgrootte (increment) gelijk is aan 1, dan mag "step 1" worden weggelaten.. De uitvoering van het do-satement wordt altijd voorafgegaan door het initialiseren van de variabele var (controle-variabele) met de waarde initial_value. 6

Computeralgebra met Maxima Vervolgens: (1) Als de controle-variabele de limit van een thru heeft overschreden of als de condition van de unless true is, of als de condition van de while false is, dan eindigt de do. (2) De body wordt uitgevoerd. (3) De increment wordt opgeteld bij de controle-variabele var. De processen (1) tot en met (3 ) worden herhaald totdat voldaan is aan de stopconditie. Voorbeeld Probleem: We willen nu een functie schrijven loop_teller(n) welke de getallen 1 tot en met n bij elkaar optelt via een loop. De variabelen i en som uit het voorbeeld kunnen dan als lokale variabelen gebruikt worden. Opmerking: Lokale variabelen welke in een programma voorkomen moeten na de instructie block() in een lijst, tussen vierkante haken, opgesomd worden. loop_teller(n) :=block ( [i:0, som:0],.) geeft de waarde van n door aan het programma loop_teller. Dit programma gebruikt intern de lokale variabelen i en som Oplossing : 7

Controleopdrachten De andere twee varianten hierop zien er als volgt uit : Opgave 10.3 Schrijf een functie kapitaal_verd (k,p) welke berekent in hoeveel jaar een kapitaal k, bij een samengestelde interest van p procent per jaar, verdubbelt. 8