1 Handleiding Maple 102 3 Handleiding Maple 10 Metha Kamminga van Hulsen4 Meer informatie over deze en andere uitgaven kunt u verkrijgen bij: Sdu Klan...
Meer informatie over deze en andere uitgaven kunt u verkrijgen bij: Sdu Klantenservice Postbus 20014 2500 EA Den Haag tel.: 070 378 98 80 fax: 070 378 97 83 c 2006 Sdu Uitgevers bv, Den Haag
1e druk, 1e oplage januari 2006 Academic Service is een imprint van Sdu Uitgevers bv. Zetwerk: Elvenkind B.V., Dordrecht Omslagontwerp: Studio kader, Stolwijk Druk- en bindwerk: DeltaHage, Den Haag ISBN 90 395 2346 0 NUR 123/991 Alle rechten voorbehouden. Alle auteursrechten en databankrechten ten aanzien van deze uitgave worden uitdrukkelijk voorbehouden. Deze rechten berusten bij Sdu Uitgevers bv. Behoudens de in of krachtens de Auteurswet 1912 gestelde uitzonderingen, mag niets uit deze uitgave worden verveelvoudigd, opgeslagen in een geautomatiseerd gegevensbestand of openbaar gemaakt in enige vorm of op enige wijze, hetzij elektronisch, mechanisch, door fotokopien, opnamen of enige andere manier, zonder voorafgaande schriftelijke toestemming van de uitgever. Voorzover het maken van reprografische verveelvoudigingen uit deze uitgave is toegestaan op grond van artikel 16 h Auteurswet 1912, dient men de daarvoor wettelijk verschuldigde vergoedingen te voldoen aan de Stichting Reprorecht (postbus 3060, 2130 KB Hoofddorp, www.reprorecht.nl). Voor het overnemen van gedeelte(n) uit deze uitgave in bloemlezingen, readers en andere compilatiewerken (artikel 16 Auteurswet 1912) dient men zich te wenden tot de Stichting PRO (Stichting Publicatie- en Reproductierechten Organisatie, Postbus 3060, 2130 KB Hoofddorp, www.cedar.nl/pro). Voor het overnemen van een gedeelte van deze uitgave ten behoeve van commercile doeleinden dient men zich te wenden tot de uitgever. Hoewel aan de totstandkoming van deze uitgave de uiterste zorg is besteed, kan voor de afwezigheid van eventuele (druk)fouten en onvolledigheden niet worden ingestaan en aanvaarden de auteur(s), redacteur(en) en uitgever deswege geen aansprakelijkheid voor de gevolgen van eventueel voorkomende fouten en onvolledigheden. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without the publisher’s prior consent. While every effort has been made to ensure the reliability of the information presented in this publication, Sdu Uitgevers neither guarantees the accuracy of the data contained herein nor accepts responsibility for errors or omissions or their consequences.
Woord vooraf Deze Handleiding Maple 10 is een herziene versie van de handleiding die in 2002 verscheen. De versies van Maple volgen elkaar in hoog tempo op en er wordt hard gewerkt om met de tijd mee te gaan en de gebruiksvriendelijkheid te verhogen. De handleiding die nu voor je ligt, is te gebruiken bij Maple 8, 9, 9.5 en 10. Bij het boek hoort een cd-rom met een demo-versie van het computeralgebrasysteem Maple 10 en verder nog de invoerregels van alle voorbeelden van het gehele boek, de appendix in de vorm van een werkblad, enkele toetsbanken voor het toetsprogramma MapleTA, enkele Maplets met broncode en een lijst met Maple-commando’s per hoofdstuk. Niets staat meer in de weg om snel aan de slag te gaan. Op de cd-rom is het ook mogelijk over de inputregels van de voorbeelden voor versie 9 te beschikken. De handleiding is commando-geori¨enteerd ten behoeve van de reproduceerbaarheid van de werkbladen (worksheets). Er worden echter ook aanwijzingen gegeven voor menu-gestuurde opdrachten die wat gebruiksvriendelijker zijn voor de incidentele gebruiker van het pakket. Op de website http://www.nhl.nl/˜kamminga is steeds de laatste informatie te vinden over nieuwe versies en meer geavanceerde aanvullingen op de handleiding. Op hogescholen en universiteiten wordt steeds meer gebruikgemaakt van digitale leeromgevingen en internet. Dat alles brengt met zich mee dat er steeds meer op een digitale manier gecommuniceerd gaat worden. Maple kan daarin een belangrijke bijdrage leveren op het gebied van de schriftelijke communicatie met formules en berekeningen, maar ook op het gebied van Maplets waarmee visualisaties van wiskundige begrippen en trainingen tot de mogelijkheden behoren. In de handleiding is een hoofdstuk opgenomen met tips voor het gebruik van Maple als tekstverwerker, ook in combinatie met internet en tips over het maken van Maplets. Er zijn uitgebreide exportmogelijkheden voor werkbladen. Ook de exportmogelijkheden van de grafieken, animaties, spreadsheets en matrices zijn talrijk. Bovendien is Maple compatibel met vele andere applicaties. Er is in deze handleiding ook bijzondere aandacht besteed aan het zo overzichtelijk mogelijk presenteren van de in- en uitvoer van berekeningen en grafieken, zodat deze opgenomen kunnen worden in verslagen en lesmateriaal. Alle grafieken in dit boek, kunnen ook zelf gemaakt worden. In hoofdstuk 4 wordt een overzicht gegeven van de verschillende wiskundige objecten die in de handleiding voorkomen. Dit is gedaan om het objectgeori¨enteerde programma beter te begrijpen en bovendien heeft het te maken met de menu’s die aangeboden worden bij het gebruik van de rechtermuisknop. Het programma herkent namelijk het object dat aangeklikt wordt en biedt een bijpassend menu aan voor elementaire berekeningen en bewerkingen. Niet alle mogelijkheden kunnen in deze handleiding de revue passeren, maar op de website worden er nog enkele aangestipt. Vanaf versie 8 kan men zelf Maplets maken. Dat zijn gebruiksvriendelijke dialoogboxen ten behoeve van visualisaties in wisselwerking met de gebruiker. Met de komst van versie 10 is het maken van Maplets een stuk eenvoudiger geworden met behulp van de Maplet Builder. Er kan hierin ook gewerkt worden met programmeerbare formules (MathML). De gebruiker kan met behulp van de inhoudsopgave en de uitgebreide index gemakkelijk iets
vi
Handleiding Maple 10
van zijn gading vinden. Alle voorbeelden staan op zichzelf en zijn afzonderlijk na te doen en te bewerken. Met de vele verwijzingen hoeft niet de volgorde van het boek aangehouden te worden om toch snel het niveau te bereiken van een handige gebruiker. Tevens is deze handleiding uitermate geschikt voor zelfstudie en kan parallel aan elke wiskundemethode aangewend worden op HBO en universitair niveau. Veel succes bij het gebruik van deze handleiding. Metha Kamminga-van Hulsen Lihas, Evia, Griekenland januari 2006
Inhoudsopgave Woord vooraf
v
Inhoudsopgave
vii
1
Snel aan de slag 1.1 Inleiding 1.2 Instellingen Maple Classic Worksheet 1.2.1 File Association 1.2.2 Mogelijke instellingen 1.2.3 Instellingen voor Excel 1.2.4 Openen en opslaan van het werkblad 1.3 Berekeningen met aanwijzingen 1.3.1 Afsluittekens en procentteken 1.3.2 Toekenning 1.3.3 Vermenigvuldigen 1.3.4 Decimale getallen 1.3.5 Namen voor de getallen i, e en π 1.3.6 Gebruik van paletten 1.4 Contextgevoelige menu’s met de rechtermuisknop 1.4.1 Oplossen van een vergelijking met de rechtermuisknop 1.4.2 Grafieken maken met de rechtermuisknop 1.5 Standaardfuncties 1.5.1 Absolutewaardefuncties, wortels en oneigenlijke machten 1.5.2 De exponenti¨ele functie en de logaritmische functie 1.5.3 Goniometrische en cyclometrische functies 1.5.4 Faculteitfunctie en binomiaalfunctie 1.5.5 Standaardfuncties met een Maplet 1.5.6 Functienotatie 1.6 Maple als tekstverwerker 1.6.1 Het werkblad 1.6.2 Paragrafen maken 1.6.3 Formules in de tekst 1.6.4 Hyperlinks en bookmarks 1.7 Spreadsheets 1.8 Helpfunctie 1.9 Veelvoorkomende beginnersfouten
Functies van e´ e´ n variabele 2.5.1 De eenheidsstapfunctie (Heaviside) 2.5.2 Functies in stukken 2.5.3 Functies met absolute waarden Vectorfuncties (parameterkrommen) 2.6.1 Vlakke krommen 2.6.2 Ruimtekrommen Functies met poolco¨ordinaten Impliciete functies Functies van twee variabelen 2.9.1 Contourplot 2.9.2 Doorsnijdingen met een vlak Verschillende soorten grafieken in e´ e´ n figuur Asymptoten Animaties 2.12.1 Het doorlopen van de grafiek 2.12.2 Functies met parameters in een animatie 2.12.3 Gebruik van display 2.12.4 Animaties met Maplets Grafiek met punten, pijlen en tekst
Overzicht van wiskundige objecten 4.1 Formules uitdrukkingen en functies 4.2 Vergelijkingen en ongelijkheden 4.3 Intervallen (ranges) 4.4 Operanden 4.5 Randomgetallen 4.6 Rijen (sequenties) 4.6.1 Het dollarteken voor een rij 4.6.2 De som van een rij 4.7 Lijsten (lists) 4.8 Verzamelingen (sets) 4.9 Vectoren 4.9.1 Geavanceerde berekeningen met vectoren 4.9.2 Tekenen van vectoren 4.10 Matrices 4.11 Arrays 4.12 Strings 4.13 Omzettingen
Differenti¨eren 5.1 Inleiding 5.2 De raaklijn aan de grafiek (functie van e´ e´ n variabele) 5.3 De parti¨ele afgeleide (functies van twee variabelen) 5.3.1 De richtingsafgeleide 5.3.2 Gradi¨ent 5.3.3 Maximum, minimum en zadelpunt 5.4 Functies in stukken 5.4.1 Eenheidspuls (Dirac-puls) 5.4.2 Differenti¨eren van een functie in stukken 5.5 Differenti¨eren van een vectorfunctie 5.6 Differenti¨eren van impliciete functies 5.7 Differenti¨eren van functies met poolco¨ordinaten 5.8 Machtreeksontwikkeling
Praktische tips 6.1 Inleiding 6.2 Het gebruik van indices en subscript 6.3 Het gebruik van quotes 6.3.1 Quotes 6.3.2 Backquotes 6.3.3 Dubbele quotes 6.4 Afspraken met alias, assume en unprotect 6.4.1 Alias 6.4.2 Assume 6.4.3 Unprotect
115 115 115 115 116 116 117 117 117 118 119
x
Handleiding Maple 10
6.5 6.6 6.7 6.8 6.9
Instellingen met interface 6.5.1 De imaginaire eenheid Rekenen met alleen de re¨ele getallen Eenheden Maplets MapleTA 6.9.1 Het commando evalb 6.9.2 Maple-commando’s binnen MapleTA 6.9.3 MathML
119 119 120 121 122 123 124 124 125
7 Formulemanipulatie 7.1 Inleiding 7.2 Vereenvoudigen en herleiden 7.2.1 Polynomen herleiden 7.2.2 Breuken herleiden 7.2.3 Wortelvormen herleiden 7.2.4 Omzettingen en combinaties 7.3 Herleiden met gebruik van vergelijkingen 7.4 De Gr¨obner-basis 7.5 Optimaliseren 7.5.1 Optimaliseren algemeen 7.5.2 Optimalisatie-methodes 7.5.3 Lineair programmeren 7.5.4 De grafiek van het toelatingsgebied bij lineair programmeren
Eliminatiemethode van Gauss Kleinste kwadratenmethode
xi
166 169
Integreren 9.1 Inleiding 9.2 Oneigenlijke integralen 9.2.1 Integreren van functies in stukken (piecewise) 9.2.2 Oneindige discontinu¨ıteit van de integrand 9.2.3 Oneigenlijke integraal met parameter 9.2.4 De normale verdeling 9.3 Enkele toepassingen 9.3.1 Booglengte 9.4 Meervoudige integratie 9.4.1 Inhoudsbepaling met de dubbelintegraal 9.4.2 Oppervlaktebepaling met de dubbelintegraal 9.4.3 Dubbelintegraal met poolco¨ordinaten 9.5 Laplace-transformatie 9.5.1 Voorbeelden van Laplace-getransformeerde 9.5.2 De inverse Laplace-transformatie 9.6 Fourier 9.6.1 De Fourier-reeks 9.6.2 De Fourier-transformatie
10 Complexe getallen 10.1 Inleiding 10.2 Basiskennis van de complexe getallen 10.2.1 Complex geconjugeerde en basisbewerkingen 10.2.2 Het commando evalc 10.2.3 Re¨ele deel en imaginaire deel 10.2.4 Modulus en argument 10.2.5 Het complexe vlak 10.2.6 De formule van Euler 10.3 Vergelijkingen oplossen in C 10.3.1 Binomiaalvergelijkingen 10.4 Grafieken van complexe functies 10.4.1 Polair diagram 10.4.2 Bode diagram 10.4.3 Poolbanen (rootlocus)
11 Differentiaalvergelijkingen 11.1 Inleiding 11.2 Differentiaalvergelijkingen van de eerste orde 11.2.1 Veelvoorkomende eerste-orde DV’s 11.2.2 Het aanbieden van de DV en de gedaante van de oplossing 11.3 Differentiaalvergelijkingen van de tweede orde 11.3.1 Lineaire DV met constante co¨effici¨enten 11.3.2 Niet-lineaire systemen
205 205 206 206 209 214 214 217
xii
Handleiding Maple 10
11.4 Algemene tips voor differentiaalvergelijkingen 11.4.1 Functienotatie 11.4.2 Het invoeren van een DV 11.4.3 Integratieconstanten en parameters 11.4.4 Randvoorwaarden 11.4.5 Lijnelementenveld 11.4.6 Stelsels differentiaalvergelijkingen 11.4.7 Numerieke oplossingen 11.4.8 Oplosmethoden
220 220 221 222 222 222 223 223 224
12 Curvefitting 12.1 Inleiding 12.2 Regressiekrommen (Trendlijnen) 12.3 Splines 12.4 Lagrange-polynomen 12.5 Aanbieden van de data
225 225 226 229 230 232
Literatuur
235
Index
237
1 Snel aan de slag 1.1 Inleiding Een computeralgebrasysteem is een krachtige rekenmachine die naast het gewone rekenen met getallen ook symbolisch en algebra¨ısch kan rekenen. Bovendien hebben computeralgebrasystemen uitgebreide grafische mogelijkheden. Onder symbolisch rekenen verstaan we het rekenen met andere objecten dan getallen, bijvoorbeeld met veeltermen, functies, rijen en vectoren. Algebra¨ısch rekenen wil zeggen, niet afgerond rekenen. Dit in tegenstelling tot wat er in numerieke programma’s gebeurt. De berekeningen waaraan we hier denken, zijn bijvoorbeeld: differenti¨eren, integreren, het oplossen van stelsels vergelijkingen, enzovoort. Computeralgebrasystemen zijn in tegenstelling tot numerieke programma’s interactieve programma’s; de gebruiker geeft opdracht, het computeralgebrasysteem voert de berekeningen uit en aan de hand van de uitkomst van de berekening besluit de gebruiker tot een nieuwe opdracht. Samenvattend kunnen we dus zeggen dat een computeralgebrasysteem een interactief programma is ten behoeve van symbolische en algebra¨ısche wiskundige berekeningen. Maple is zo’n systeem waarbij de grafische mogelijkheden bijzonder groot zijn. Bovendien zijn de numerieke mogelijkheden in de laatste versies van Maple enorm uitgebreid en doen nauwelijks onder voor specifiek numerieke programmatuur. Rond 1980 begon men aan de Universiteit van Waterloo in Canada aan de ontwikkeling van Maple en dit programma is momenteel e´ e´ n van de grootste computeralgebrasystemen. Het is zelfs mogelijk documenten te maken met berekeningen, tekst, formules en grafieken. Zo’n document wordt werkblad (worksheet) genoemd. In paragraaf 1.6 wordt aandacht besteed aan de tekstverwerking binnen het programma en paragraaf 6.8 wordt de mogelijkheid tot het maken van Maplets aangegeven. Het programma bevat ook nog de mogelijkheid om te programmeren, maar de bespreking van dit onderdeel valt buiten het bestek van dit boek, afgezien van een enkel voorbeeld.
1.2 Instellingen Maple Classic Worksheet Controleer welke versie van Maple je gebruikt. Dit boek is geschreven met Maple 10 en ook geheel gecontroleerd voor de versies 8, 9 en 9.5. De versies 6 en 7 werken soms iets verschillend, maar de commando’s zijn over het algemeen hetzelfde. De aangeboden menu’s zullen in hogere versies iets uitgebreider zijn. Voor versies 6, 7 en 8 wordt verwezen naar de Handleiding Maple 8 van 2002 en voor versies ouder dan 6 naar de Handleiding Maple van 1999. 1.2.1
File Association
Er zijn twee manieren om met Maple te werken. In dit boek wordt verondersteld dat er gewerkt wordt met Maple Classic Worksheet. Deze interface, waarvan de bestanden de extensie .mws hebben, werkt iets eenvoudiger en sneller dan de standaardinterface waarvan de bestanden de extensie .mw hebben en is verder ongevoelig voor gebruik in verschillende
2
Handleiding Maple 10
versies die eventueel door elkaar gebruikt kunnen worden, wat een groot voordeel is. Controleer of de bestanden automatisch in de juiste interface geopend zullen worden (met dubbelklikken op het bestand in de verkenner) op de volgende manier: Met Start, Programs, Maple10, Tools, Worksheet File Assosiation Selector kunnen de instellingen z´o gezet worden, dat met MW File Association gekozen wordt voor de standaard Maple 10 interface en met MWS File Association voor Classic Worksheet Maple 10. Deze instellingen zijn ook te bereiken via de verkenner bij Maple10: bin.win met ToggleAssociation.exe. Op internet worden regelmatig aanvullingen gegeven op deze handleiding met informatie over nieuwe versies van Maple. Zie de website bij dit boek: http://www.nhl.nl/˜kamminga. Werkbladen (worksheets) die gemaakt zijn in de zogenoemde Maple Classic Worksheetinterface, kunnen zonder problemen in hogere en lagere versies geopend worden. Neem dan wel steeds de volgende maatregelen. 1. Met het dubbelklikken op een bestaand werkblad in de file manager opent Maple automatisch in de juiste interface. Als dat niet zo is, check dan de File Association Selector zoals hierboven beschreven. 2. Om Maple te openen met Programs, Maple Classic Worksheet kies dan steeds voor Maple Classic Worksheet. 3. Bij het opslaan van het werkblad is het aan te bevelen om de output eruit te halen met Edit, Remove Output. Het werkblad kan dan zonder problemen in een andere versie geopend worden. 4. Open het werkblad (eventueel in een andere versie) en maak het actief door middel van Edit, Execute Worksheet. Er is natuurlijk dan wel kans dat er dingen niet mogelijk zijn in een oudere versie die in een nieuwe versie wel mogelijk zijn. Andersom gaat het meestal wel goed. 1.2.2 Mogelijke instellingen Na het starten van het programma verschijnt een Windows-scherm met een menubalk, een knoppenbalk en een contextbalk. Zie figuur 1.1.
contextbalk
knoppenbalk
menubalk
Figuur 1.1
Het werkblad vertoont bovenaan de ‘prompt’ (>). Als je in plaats van dit teken een vraagteken ziet, klik dan in de contextbalk op de meest linkse knop met de x. Het vraagteken verandert dan in de ‘prompt’ (>) en er kan iets ingevoerd worden in Maple notation. Dit teken geeft aan dat Maple wacht op een opdracht in de vorm van machinetaal, zoals je formules intikt in een computer: met sterren en dakjes en / voor deling en dergelijke. Tik bijvoorbeeld in x^2+5; (dus afsluiten met een puntkomma) en druk op Enter. Je ziet dan in
1 · Snel aan de slag
3
de uitvoer een blauwe formule zoals de formule ook in boeken verschijnt (dit noemen we de tweedimensionale presentatie, immers het kwadraat staat iets hoger genoteerd). Het voordeel van de invoer in Maple notation (of ook wel Maple syntax genoemd) is, dat je later precies kunt reconstrueren wat je ingetikt hebt. Ook komt er bij verkeerd intikken een knipperende cursor te staan precies op de plaats waar je mogelijk een fout betreffende de syntax hebt getikt. Voor verdere instellingen gaan we naar de menubalk bij File en kiezen bij Preferences eerst voor tabblad General. Vink de checkbox Balloon Help aan. Hiermee komen er aanwijzingen te staan als de muis over een van de knoppen gaat (zie links in figuur 1.1). Vervolgens is het verstandig om meteen ook AutoSave te activeren. Het werkblad wordt dan veiligheidshalve met de extensie MAS.mws opgeslagen na een instelbaar aantal minuten, zodat niet direct het werkblad waaraan je werkt wordt overschreven. Als er dan iets mocht gebeuren, is dit het reservebestand. Het werkblad moet om te beginnen dan wel eerst opgeslagen zijn onder een naam. Voordat je de instellingen afsluit, beslis dan voor Apply Globally, dan zullen deze instellingen gelden voor ieder werkblad waarin je gaat werken. Vervolgens kun je bij het tabblad I/O Display (Input/Output) de instellingen controleren of de input inderdaad op Maple Notation staat en de output op Standard Math Notation. Het wil dus zeggen dat de input goed te controleren is op juistheid wat betreft het intikken en de output goed te controleren is doordat de formule gepresenteerd wordt zoals gebruikelijk is (twee dimensionaal). Voor de rest laat je alle andere instellingen onveranderd. 1.2.3
Instellingen voor Excel
Met het oog op uitwisselbaarheid van de spreadsheets in Maple met die van Excel, is het handig om nu ook de instellingen bij Excel klaar te zetten. Open Excel en kies bij menu Extra (Tools) voor Invoegtoepassingen (Ad-Ins) en zoek de Maple Excel Ad-In. Als deze er niet bij staat, moet er nog iets geladen worden. Klik dan op Bladeren (Browse) en navigeer naar de map waarin Maple ge¨ınstalleerd is. Daarin bevindt zich een map Excel waarin je dan het bestand WMIMPLEX.xla selecteert waarna je vervolgens op OK klikt. De checkbox van de Maple Excel Add-In kan nu aangevinkt worden en na OK worden er bij Excel knopjes aangemaakt waarmee er het een en ander van Maple naar Excel gekopieerd kan worden en andersom. Ook is de Maple-functionaliteit binnen Excel nu mogelijk. Je kunt binnen Excel op een bepaalde manier dan gebruikmaken van allerlei Maple-commando’s: met maple(" ") waar binnen de dubbele quotes de Maple-opdracht komt te staan. Probeer in een cel in Excel eens het volgende in te tikken: =maple("evalf(Pi)") In deze cel komt dan keurig het getal 3.141593 te staan. Een en ander is ook na te lezen door in Maple in te tikken: ?Excel. Zie verder bij spreadsheets paragraaf 1.7. 1.2.4
Openen en opslaan van het werkblad
Start Maple op in Classic Worksheet. Als je Maple wilt verlaten, sluit je op de gebruikelijke manier af in Windows. Er wordt dan gevraagd of je het werkblad wilt bewaren. Als je toch al in Maple Classic Worksheet bezig was, dan wordt het werkblad automatisch ook als Classic Worksheet bewaard, maar het kan ook op andere manieren bewaard worden. De voor ons meest interessante manieren zijn: als html-bestand (waarbij automatisch frames aangemaakt kunnen worden als je met paragrafen werkt) en als rtf-bestand (Richt Text Format). Deze laatste manier is geschikt om in Word te openen en daarin verder te werken. Verder is het ook mogelijk om het werkblad als Maple Worksheet (met extensie .mw) te bewaren waardoor het te openen is in
4
Handleiding Maple 10
de standaardinterface van Maple. Gebruik echter deze twee interfaces niet door elkaar. Ze zijn zeer slecht uitwisselbaar! Op de website behorende bij dit boek, wordt de werking van het standaardinterface toegelicht. Zie verder voor Maple als tekstverwerker paragraaf 1.6. Om weer een nieuw werkblad te openen kun je met de muis klikken op het meest linkse vakje van de knoppenbalk. Het beste is dan te beginnen met het intikken van restart afgesloten met een puntkomma, zodat alle eventuele toekenningen (zie paragraaf 1.3.2) ongedaan gemaakt worden. Je kunt op deze manier meerdere werkbladen tegelijk gebruiken. Houd er echter wel rekening mee dat toekenningen in het ene openstaande werkblad ook tegelijk gelden in een andere werkblad dat openstaat. Als je alleen e´ e´ n openstaand werkblad wilt afsluiten, gaat dat op de gebruikelijke manier met Windows. (Er wordt dan gevraagd of het werkblad bewaard moet worden.) Als het werkblad afgesloten is (maar Maple nog niet), blijven echter wel alle toekenningen bestaan! Wees daarop bedacht, vooral als je met meer dan e´ e´ n werkblad bezig bent. Begin daarom dus een nieuwe sessie altijd met restart. Als je Maple echt wilt verlaten, sluit je af op de gebruikelijke manier in Windows. Mocht een berekening erg lang duren en je wilt de berekening stoppen, klik dan op de rode ‘stopknop’ in de knoppenbalk. Je hebt kans dat de berekening dan afgebroken wordt. Het lukt echter niet altijd om Maple te stoppen! Dus sla je werkblad regelmatig op. Zie voor meer informatie over het opslaan van het werkblad in html-formaat de website behorende bij dit boek.
1.3 Berekeningen met aanwijzingen 1.3.1 Afsluittekens en procentteken Je kunt op vrijwel dezelfde manier met gehele getallen gaan rekenen als op een gewone rekenmachine. Let op: vrijwel! Er bestaan wat verschillen in de invoer. Het belangrijkste verschil is dat een invoerregel altijd afgesloten moet worden met een afsluitteken. Dat kan een puntkomma zijn of een dubbele punt. Bij afsluiting met een puntkomma (semicolon) komt het resultaat van de berekening op het scherm te staan; bij afsluiting met een dubbele punt komt er niets op het scherm te staan, terwijl de berekening w´el is uitgevoerd. Je kunt in beide gevallen verder werken met het resultaat van de berekening. Na het afsluitteken (puntkomma) moet je laten weten dat je klaar bent met het typen van de opdracht. Dit doe je door op Return of Enter te drukken. Het is niet erg als je per ongeluk het afsluitteken vergeten bent. Er komt dan een waarschuwing en je kunt de regel dan alsnog corrigeren. Er wordt pas gerekend als er een afsluitteken verschijnt en het wel of niet intikken van spaties is totaal onbelangrijk. Als het commando langer is dan een regel en je wilt op de volgende regel verder gaan, druk dan op Shift-Return. Voorbeeld 1.1 Afsluitteken en procentteken In de Maple-sessie die volgt, zie je precies wat er op het scherm verschijnt. Lees ook de toelichting en probeer dingen uit met behulp van zelfbedachte voorbeelden. Het >-teken aan het begin van de invoerregel is de prompt van Maple, dat hoef je dus niet te typen. > restart; 108/4+3*7; 48 > %+a; 48 + a > 6^2-6; 30
1 · Snel aan de slag
5
> 5!: %-1*2*3*4*5;
0 Toelichting: Merk op dat een regel afgesloten door een dubbele punt weliswaar geen resultaat afdrukt, maar wel oplevert. Je weet waarschijnlijk wel dat het teken ˆ voor machtsverheffen staat, / voor delen en het teken ! voor faculteit (5-faculteit betekent 1 × 2 × 3 × 4 × 5, zie ook bij de standaardfuncties paragraaf 1.5). Het procentteken (%) zoals te zien is in een van de bovenstaande regels, levert het resultaat van de laatste invoerregel, ongeacht of deze nu is afgesloten door middel van een dubbele punt of door een puntkomma (semicolon). Dit handigheidje werkt tot maximaal drie opdrachten terug. Dus %% levert het resultaat van twee opdrachten terug en %%% dat van drie opdrachten terug. Het is echter niet aan te raden hiervan veel gebruik te maken zoals in de rest van het boek te zien is. Maak liever gebruik van namen, zodat het werkblad beter leesbaar is en er geen onbegrijpelijke berekeningen kunnen ontstaan. Echter soms kan het wel handig zijn om een mooie eenvoudige uitvoer te garanderen als je met vertraagde evaluatie werkt. Zie voorbeeld 6.2 met de quotes of voorbeeld 3.31 met gebruikmaking van value. 1.3.2
Toekenning
Bij het gebruik van namen is het werkblad beter leesbaar. Je kent dan aan een naam een bepaald getal of bepaalde berekening toe. Voorbeeld 1.2 Toekenning Om bijvoorbeeld af te spreken dat voortaan a altijd gelijk is aan 5! (5 faculteit betekent 1 × 2 × 3 × 4 × 5, zie ook paragraaf 1.5) is de volgende toekenning handig om deze later weer te kunnen gebruiken. Spreek dit af door gebruik te maken van := (dubbele punt en isgelijkteken). Dit is het teken voor een toekenning. > restart; a:=5!: a-1*2*3*4*5;
0 Toelichting: Tik niet in dergelijke gevallen een isgelijkteken, want dan is er gewoon een gelijkheid ingevoerd en geen toekenning. Zie ook bij vergelijkingen paragraaf 3.3. Na het invoeren van de toekenning is afgesloten met een dubbele punt. Op het scherm verschijnt dus de toekenning niet, maar aan het resultaat te zien van de volgende opdracht is de toekenning wel goed begrepen door het programma. TIP: om een toekenning weer ongedaan te maken is een handige truc: > a:= ’a’; Vanaf dit moment heeft a zijn eerder toegekende waarde weer verloren. Zie ook paragraaf 6.3 meer informatie over het gebruik van quotes. Voorbeeld 1.3 Meer opdrachten op e´ e´ n regel Je mag meer opdrachten achter elkaar op e´ e´ n regel invoeren. De opdrachten worden dan achtereenvolgens stuk voor stuk afgewerkt alsof ze onder elkaar zijn ingevoerd. Als echter het afsluitteken vergeten is, wordt er wel gewaarschuwd met bijvoorbeeld: “warning, premature end of input” of “warning, incomplete statement or missing semicolon”. Het afsluitteken kan dan alsnog toegevoegd worden.
6
Handleiding Maple 10
> 5! ;9+5^3; 8*7; 120 134 56 1.3.3 Vermenigvuldigen Voorbeeld 1.4 Een sterretje voor vermenigvuldigingen Bij de volgende opdracht wordt gevraagd om 8 × 4 − 3 x in te voeren. > restart; 8*4-3*x; 32 − 3 x Toelichting: Er moet beslist een sterretje getypt worden tussen de drie en de x! Dit heeft te maken met de manier waarop Maple variabelen wil ontvangen. Een variabele mag wel x3 heten maar niet 3x, dus begin nooit met een cijfer in de invoer. Als je echter bedoelt: ‘3 maal x’, moet je typen: 3*x. Een fout in de invoer wordt aangegeven door de cursor die gaat knipperen op de plaats waar eventueel het sterretje ontbreekt. Zie ook het verschil tussen de vermenigvuldiging a b en een variabele die bijvoorbeeld ab heet. > a*b+ab; a b + ab In de uitvoer staat er een spatie als er sprake is van vermenigvuldiging. TIP: het is belangrijk te weten dat er onderscheid gemaakt wordt tussen hoofdletters en kleine letters. (Er zijn op die manier dus tweemaal zoveel variabelen mogelijk en ook nodig. Denk bijvoorbeeld maar aan de snelheid v en het volume V.) 1.3.4 Decimale getallen Als er geen speciale opdracht wordt gegeven, wordt er exact gerekend zoals het volgende voorbeeld laat zien. Er zijn echter wel degelijk mogelijkheden om het programma numeriek te laten rekenen en wel op globaal genomen twee zeer verschillende manieren. Ten eerste met het commando evalf en ten tweede met behulp van floating point in de invoer. Voorbeeld 1.5 Evalueren met floating point (evalf) > restart; b:=116/3; evalf(b); 116 3 38.66666667 b :=
Toelichting: Het valt op dat Maple de uitdrukking 116 3 niet verder uitwerkt, wat een gewone rekenmachine wel doet. Als je een exact getal wilt benaderen, moet je daarom vragen. Dit doe je met het commando evalf (eval = evalueer en de f staat voor floating point). Met eventueel een index bij het commando evalf wordt aangegeven hoeveel significante cijfers je in totaal wilt zien (dus n´ıet het aantal decimalen). Als je niets opgeeft, worden er standaard tien significante cijfers gegeven. Je kunt vooraf instellen hoeveel significante cijfers je wilt zien door middel van het commando Digits (met een hoofdletter!). Vanaf dat moment worden de getallen na evalf met het aantal ingestelde significante cijfers gegeven, tenzij anders vermeld met de index van evalf. Er is echter n´og een mogelijkheid om met decimale getallen (meestal afgeronde benaderingen) te werken. Maple gaat namelijk automatisch over op floating point (zonder het commando evalf) als je bij de invoer ten minste e´ e´ n van de getallen met een decimale punt invoert. Voorbeeld 1.6 Invoer met floating point > 116.0/3; 38.66666667 > sqrt(5)=sqrt(5.0);
√ 5 = 2.236067977
Toelichting: Er is dus nu geen opdracht evalf nodig om de deling 116 3 te laten benaderen. Er is immers bij de invoer al een decimale punt ingevoerd, zodat het programma onmiddellijk overgaat op numerieke benadering. Het commando sqrt betekent square root, ofwel tweedemachtswortel (zie verder bij de standaardfuncties paragraaf 1.5). Let ook op dat hier geen toekenning is gedaan maar er is gewoon een gelijkheid ingetikt. De ene keer exact en de andere keer benaderd, omdat er met floating point gewerkt is. TIP: het is mogelijk om decimale getallen om te zetten met convert naar breuken en andersom. Probeer maar eens 0.56 om te zetten naar een gewone breuk. In dat geval kun je convert(0.56,fraction); invoeren en dan wordt het decimale getal dat je eerst hebt ingevoerd met behulp van een decimale punt (dus geen komma!) omgezet naar een echte breuk. Probeer ook bijvoorbeeld convert(116/3,float,5);. De breuk wordt daarmee omgezet naar een decimaal getal met 5 significante cijfers. Deze omzetting is natuurlijk hetzelfde als met evalf[5](116/3);. Voorbeeld 1.7 Aantal decimalen in de uitvoer Ten slotte is er nog een manier om w´el met het volledige aantal significante cijfers te rekenen, maar op het scherm niet meer dan een bepaald aantal decimalen te zien. De overzichtelijkheid wordt daarmee bevorderd! Begin de sessie na restart in dat geval met interface(displayprecision=4): of een ander getal (tussen 0 en 100). > restart; interface(displayprecision=3): sqrt(5)=sqrt(5.0); √ 5 = 2.236 Het is een bijzonder handige tip in situaties waarbij er gerekend wordt met hardware float die niet te be¨ınvloeden is door evalf en Digits. Voorbeelden daarvan vind je volop in de voorbeelden van dit boek.
8
Handleiding Maple 10
1.3.5 Namen voor de getallen i, e en π Let erop dat je bij het namen geven aan variabelen, functies of andere objecten, geen naam gebruikt die binnen Maple al ergens voor staat. Bijvoorbeeld de letter I is bij Maple (invoer en uitvoer) de imaginaire eenheid. Deze letter komt vaak voor op het scherm omdat Maple eigenlijk altijd rekent met complexe getallen. Je zult deze letter veelvuldig tegenkomen en meteen herkenen zodra het om een complex getal gaat. Zie voorbeeld 3.17 en 7.2. We schrijven in de tekst van een document voor √ de imaginaire eenheid een i en hiervoor geldt i2 = −1 (soms wel voorgesteld als i = −1). Op het scherm in de uitvoer zie je dan een hoofdletter I. Het is ook mogelijk een andere letter te kiezen voor de imaginaire eenheid. Zie daarvoor voorbeeld 10.4 en ook paragraaf 6.5.1. Het grondtal van de natuurlijke logaritme en de natuurlijke exponent is het getal van Euler. We schrijven in de tekst van een document de letter e (afgerond 2.72). Op het scherm in de uitvoer komt er een ‘rechte’ en vette e te staan. Als je bijvoorbeeld intikt exp(x), wordt dat opgevat als ex . Het getal π (afgerond 3.14) is bekend onder de naam Pi (met hoofdletter P). Op het scherm verschijnt een Griekse letter en deze wordt dan echt opgevat als het afgesproken getal. Als je echter pi ingevoerd had met een kleine letter, was er wel een Griekse letter π in de uitvoer verschenen, maar deze wordt dan niet opgevat als getal (afgerond 3.14) maar als variabele. Zo zijn er nog een paar letters die al ergens voor gereserveerd zijn, bijvoorbeeld de hoofdletters D en O. Let daar dus op. Mocht je deze per ongeluk toch gebruiken, dan wordt er wel voor gewaarschuwd. Wil je misschien iets meer weten over de letter D bij Maple, dan typ je ?D (hoofdletter) en kom je in de helpfunctie. 1.3.6 Gebruik van paletten Voor Griekse letters is het handig gebruik te maken van de zogenoemde paletten die je kunt activeren door in de menubalk te klikken op View en vervolgens te kiezen voor Palettes (figuur 1.2). Neem die met de symbolen en je kunt beschikken over de Griekse letters. Niet alleen voor Griekse letters, maar ook om snel formules, vectoren en matrices te maken, kun je gebruikmaken van vier soorten paletten. Het snelst kun je in deze situatie met de Tab-toets naar de volgende plaats gaan om de formule in te vullen.
1.4 Contextgevoelige menu’s met de rechtermuisknop Snel even een paar berekeningen doen, een formule manipuleren, een vergelijking oplossen of een grafiek maken, gaat heel vlot met de rechtermuisknop. Het is niet aan te raden om hiervan veel gebruik te maken in een uitgebreid werkblad dat gereproduceerd moet kunnen worden, maar om te beginnen is het wel aardig om snel wat dingen te kunnen doen, vooral als je nog niet goed op de hoogte bent van de commando’s en hun specifieke werking. De popupmenu’s die tevoorschijn komen bij het aanklikken van de uitvoer met de rechtermuisknop, zijn contextgevoelig. Dat wil zeggen dat je een ander, maar bijpassend pop upmenu krijgt bij een vergelijking, een uitdrukking of een grafiek. Je selecteert bijvoorbeeld een vergelijking. Met de rechtermuisknop wordt er dan een menu geopend en er kan een aantal eenvoudige dingen met deze vergelijking gedaan worden. Bijvoorbeeld alles naar de linkerkant van het gelijkteken brengen (Move to the Left) of de vergelijking oplossen (Solve). Zie figuur 1.3. Selecteer je daarentegen een uitdrukking, dan krijg je een heel ander bijpassend menu.
1 · Snel aan de slag
9
Figuur 1.2
Het programma herkent het soort wiskundig object en geeft een bijpassend pop-upmenu. In hoofdstuk 4 wordt een overzicht gegeven van de meest voorkomende objecten in de wiskunde. Een en ander wordt hieronder met voorbeelden toegelicht. Het is echter niet aan te raden om veel van deze mogelijkheid gebruik te maken. Het wordt in feite een beetje een kladblok, maar als je even wat snelle berekeningen moet doen, is het wel gemakkelijk. TIP: werk zo weinig mogelijk met de rechtermuisknop. Acties met de rechtermuisknop worden namelijk niet reproduceerbaar bewaard bij het opslaan van het werkblad! De resultaten daarvan wel als ook de output bij het opslaan bewaard wordt. 1.4.1
Oplossen van een vergelijking met de rechtermuisknop
Begin eens met het intikken van een vergelijking en geef deze bijvoorbeeld de naam verg. > verg:=x^2-58*x=6; Selecteer vervolgens de gehele uitvoer (die standaard in het blauw op het scherm verschijnt) en klik met de rechtermuisknop. Er opent zich dan een pop-upmenu dat betrekking heeft op een vergelijking. Als je dan voor bijvoorbeeld Solve kiest, wordt de vergelijking exact opgelost. Zie figuur 1.3. Meteen wordt er ook automatisch de naam R gegeven aan deze oplossing, maar die naam kan later wel veranderd worden. Houd er wel rekening mee dat Maple rekent in de complexe getallen en dat er als oplossing eventueel een complex getal kan komen te herkennen aan de I (paragraaf 1.3.5). Er kan zelfs met de vergelijking gemanipuleerd worden als je op Manipulate Equation klikt. Je komt daarmee in een Maplet waarin je achtereenvolgens bijvoorbeeld links en rechts iets erbij op kunt tellen of links en rechts tot een bepaalde macht kunt verheffen of breuken wegwerken, enzovoort. (Zie voor Maplets paragraaf 6.8.) De stappen die achtereenvolgens genomen worden bij het manipuleren, kunnen onthouden worden met de knop Return Steps in het Maplet en automatisch meegenomen worden in het werkblad. Over allerlei commando’s die mogelijkheden bieden om formules te manipuleren, is het nodige te vinden in de hoofdstukken 3 en 7.
10
Handleiding Maple 10
Figuur 1.3
1.4.2 Grafieken maken met de rechtermuisknop Tik eerst bijvoorbeeld een functie in: f:=x^2-5*x; en selecteer de uitvoer in zijn geheel. Met de rechtermuisknop komt er dan een pop-upmenu dat juist bij een dergelijke uitdrukking past. Kies voor Plots, 2-D Plot en er ontstaat een zogenoemde smartplot. Zie figuur 1.4.
Klik op de functie in de uitvoer en met de rechtermuisknop opent zich een bijpassend pop-upmenu.
Figuur 1.4
Klik vervolgens op de grafiek in de uitvoer. Met de rechtermuisknop komt er dan een popupmenu tevoorschijn dat specifiek bij een grafiek past om bijvoorbeeld het bereik langs de assen in te stellen. Zie figuur 1.5. Standaard wordt er altijd horizontaal het interval van -10 tot 10 genomen, maar dat is niet altijd wenselijk. Als je deze instellingen verandert met behulp van het pop-upmenu, worden deze verder niet bewaard bij het opslaan van het werkblad, alleen het resultaat wordt bewaard als het werkblad inclusief de uitvoer opgeslagen wordt. Een extra grafiek in de figuur plaatsen gaat heel gemakkelijk met het intikken van nog een uitdrukking, deze in de uitvoer te selecteren en vervolgens in de figuur te slepen. Zie figuur 1.6. Door met de muis over een van de grafieken te bewegen tot deze van kleur verschiet, kunnen vervolgens de eigenschappen van deze grafiek aangepast worden met weer een nieuw popupmenu dat met de rechtermuisknop tevoorschijn komt. In hoofdstuk 2 wordt er veel duidelijk over de verschillende manieren waarop je grafieken kunt maken, onder andere ook met de Plot Builder (paragraaf 2.4).
1 · Snel aan de slag
11
Klik op de grafiek met de rechtermuisknop en een bijpassend pop-upmenu opent zich.
Figuur 1.5
Sleep met de muis de geselecteerde uitdrukking naar de grafiek.
Figuur 1.6
1.5 Standaardfuncties Een standaardfunctie bij Maple werkt altijd op dezelfde wijze, namelijk met haakjes. Bijvoorbeeld sin(x), de sinus van x. Er kunnen op een gemakkelijke manier functiewaarden worden uitgerekend. Bijvoorbeeld sin(π). Het tekenen van grafieken van standaardfuncties komt in hoofdstuk 2 aan de orde. Er volgt hier een aantal vaak gebruikte en bekende voorbeelden van functies. Bij iedere functie staat een korte uitleg van de betekenis ervan. Let er wel op dat Maple √alle functies beschouwt als complexe functies. Dus kijk niet vreemd op bij opdrachten als −3 en ln(−6). Er kunnen dan ook complexe resultaten op het scherm verschijnen die je kunt herkennen aan de I, zoals uitgelegd in paragraaf 1.3.5. Als je dat van tevoren weet, kun je de uitvoer van Maple beter interpreteren en op waarde schatten. Voor de rest van de standaardfuncties wordt verwezen naar de helpfunctie.
1.5.1
Absolutewaardefuncties, wortels en oneigenlijke machten
Voor het doen van de volgende voorbeelden kan eventueel ook gebruikgemaakt worden van de zogenoemde paletten (Expression Palette onder View in de menubalk). Voorbeeld 1.8 De absolutewaardefunctie berekent van ieder √ getal de afstand tot de oorsprong. Ook van imaginaire getallen zoals het getal i = −1 (bij Maple bekend onder de naam I) op de imaginaire as in het complexe vlak, kun je de afstand tot de oorsprong vragen. Van complexe getallen in het algemeen kan de afstand tot de oorsprong in het complexe vlak met behulp van het commando abs berekend worden (zie paragraaf 10.2.4). In de hierna volgende Maple-sessie wordt een aantal commando’s op e´ e´ n regel gegeven. Onder elkaar komen de resultaten van de afzonderlijke opdrachten te staan.
12
Handleiding Maple 10
> abs(-4); abs(3*I); abs(-4+3*I); 4 3 5 Voorbeeld 1.9 De wortelfunctie (sqrt) hebben we al leren kennen in voorbeeld 1.6 en simplify(%) betekent: vereenvoudig het voorgaande resultaat. > sqrt(4); 4^(1/2); simplify(%); sqrt(-3); √2 4 2 √ 3I De wortel uit een negatief getal kan wel, omdat per definitie in de complexe getallen gerekend wordt (zie hoofdstuk 10). Voorbeeld 1.10 Voor oneigenlijke machten kun je het commando surd gebruiken, maar natuurlijk ook gewoon met het ˆ-teken werken. Er is wel enig verschil in deze twee manieren, maar dat valt pas op als je met complexe getallen werkt. Meer informatie hierover is te vinden op de website bij dit boek bij Aanvullingen op de handleiding. > restart; surd(x,3); surd(x, 3) > convert(%,power); x(1/3) > surd(x,2);
√ x
Zie voor het omzet-commando convert paragraaf 4.13. ¨ functie en de logaritmische functie 1.5.2 De exponentiele Voorbeeld 1.11 De exponenti¨ele functie ex wordt in boeken vaak geschreven als exp(x) (met het natuurlijke grondtal e ≈ 2.718). Als je bij Maple dit getal e (getal van Euler) los wilt invoeren, moet exp(1) worden getypt. Zie ook bij het Expression Palette paragraaf 1.3.6 en verder nog paragraaf 1.3.5. De exponenti¨ele functie e x wordt ingevoerd door exp(x) in te tikken. Kijk goed naar de volgende commando’s en probeer zelf nog een paar voorbeelden uit. > restart; exp(5): %=evalf(%); e5 = 148.4131591 > a^x*exp(x+y): %=expand(%); ax e(x+y) = ax ex ey > 1/exp(1): %=evalf(%); 1 = 0.3678794412 e Toelichting: Je kunt van alles uitrekenen door gebruik te maken van de commando’s zoals simplify (vereenvoudig), expand (werk haakjes weg) en evalf (benader met floating point).
1 · Snel aan de slag
13
Er is hier, ten behoeve van een mooie uitvoer, gebruikgemaakt van de dubbele punt als afsluitteken (het resultaat van een opdracht wordt in zo’n geval niet zichtbaar). Tevens wordt gebruikgemaakt van het %-teken dat verwijst naar het resultaat van de laatst uitgevoerde opdracht. Zie voor deze trucs ook paragraaf 1.3.1. Van de exponenti¨ele functie wordt ook veel gebruikgemaakt bij complexe getallen, zie paragraaf 10.2.6. Voorbeeld 1.12 De logaritmische functie is bij Maple bekend onder de functienaam ln, hiermee wordt de natuurlijke logaritme bedoeld. Het grondtal is het getal van Euler: de e ≈ 2.718 . > ln(5):%=evalf(%); ln(5) = 1.609437912 > log[3](27); 3 > log[10](95); ln(95) ln(10) > log(21); ln(21) Toelichting: Als je per ongeluk log typt in plaats van ln, wordt dit opgevat als de natuurlijke logaritme en beslist niet als de logaritme met grondtal 10. Wil je toch een ander grondtal dan het getal e, dan kan dat met het intikken van vierkante haakjes: dus log3 (27) (het grondtal is hier 3) wordt ingevoerd als log[3](27) en vervolgens direct vereenvoudigd tot 3 in de uitvoer. Dus als je e´ cht de logaritme met grondtal 10 wilt, bijvoorbeeld log10 (x), dan moet er ingevoerd worden log[10](x). Echter de vorm wordt door het programma onmiddellijk herleid tot de natuurlijke logaritme. (In sommige boeken komt nog voor dat het grondtal van de logaritme links boven de log staat zoals 10 log(x).) TIP: er wordt soms geschreven ln2 x terwijl er dan bedoeld wordt: (ln(x))2 . Ga op onderzoek uit en controleer dat wanneer je ln(x)^2 typt, dit hetzelfde is als (ln(x))^2. Probeer zelf het verschil met ln(x^2) te ontdekken. 1.5.3
Goniometrische en cyclometrische functies
Bij goniometrische functies is het belangrijk te weten dat de hoek in radialen opgegeven moet worden. Wil je toch de sinus van bijvoorbeeld 45◦ uitrekenen, dan moeten de graden eerst omgezet worden naar radialen. Dus sin(45◦ ) = sin( π4 ). Als je bijvoorbeeld typt: sin(20), wordt dit opgevat als de sinus van 20 radialen. Let op dat sinx niet opgevat wordt als de sinus van x. Het typen van sin*x is helemaal uit den boze. Voorbeeld 1.13 Sinus- en cosinusfunctie De sinus van 45◦ en de cosinus van 1.2 radialen worden dus als volgt berekend: > sin(Pi/4); cos(1.2);
√ 2 2 0.3623577545
14
Handleiding Maple 10
Voorbeeld 1.14 Graden en radialen Een truc om toch gemakkelijk met graden te kunnen werken is de volgende. Als je weet dat π . Om de cosinus van 20◦ te π radialen gelijk is aan 180◦, stel je α graden dus op α × 180 berekenen kan voorlopig als volgt gewerkt worden. > restart; graden:=evalf(Pi/180); graden := 0.01745329252 > cos(20*graden); 0.9396926208 In paragraaf 6.7 is meer informatie over eenheden te vinden om dit wat offici¨eler aan te pakken. Voorbeeld 1.15 De cyclometrische functies, zoals arcsin, arccos en arctan, worden op volkomen natuurlijke wijze ingevoerd. Houd er steeds rekening mee dat in de wiskunde met radialen gewerkt wordt. De uitkomst van bijvoorbeeld arcsin(0.6) is een hoek in radialen! Het omzetten van radialen naar graden kan met behulp van convert(..,degrees). > restart; arcsin(0.6): %=evalf(convert(%,degrees)); 0.6435011088 = 36.86989764 degrees TIP: als je buiten het domein [−1, 1] van bijvoorbeeld de arcsinusfunctie komt, wordt er een complexe functiewaarde teruggegeven. Meestal werken we met de re¨ele functie arcsinus die dus een beperkt domein heeft. 1.5.4 Faculteitfunctie en binomiaalfunctie Dan hebben we nog tot onze beschikking de faculteitfunctie: n! als n een geheel positief getal is. Deze functie is bekend onder de functienaam factorial. Als alternatief van deze functie kun je gebruikmaken van het uitroepteken in de invoer. Ten slotte is er de binomiaalfunctie: nk waarbij n en k positieve gehele getallen zijn en n ≥ k. Deze functie komt vaak voor bij de kansrekening. Voorbeeld 1.16 De commando’s factorial en binomial De betekenis van 7! is dezelfde als factorial(7) waarmee bedoeld wordt 1 × 2 × 3 × 4 × 5 × 6 × 7. Verder schrijven we bijvoorbeeld 7 boven 2 als 72 . We typen dan binomial(7,2) terwijl 7! de betekenis is: 2! (7−2)! . In de volgende regels wordt een en ander gecontroleerd. > restart; 7!=factorial(7); 5040 = 5040 > binomial(7,2)=7!/(2!*5!); 21 = 21 1.5.5 Standaardfuncties met een Maplet Het is ook mogelijk om standaardfuncties te bestuderen met een Maplet (een soort applet). Je kunt dan zien hoe de functie ingevoerd moet worden en de grafiek ervan bekijken. Ook is het mogelijk om grafiektransformaties (manipulaties zoals verschuiven of uitrekken) te doen met standaardfuncties. Bekijk bijvoorbeeld hoe de grafiek van de arcsinus eruitziet en ook hoe de grafiek van 2 arcsin (x − 1) + 4 eruitziet. Deze krijg je dan in e´ e´ n figuur samen met de grafiek van de standaardfunctie arcsin(x) te zien in verschillende kleuren. Bij Plot Options
1 · Snel aan de slag
15
kun je nog een aantal instellingen veranderen voor de grafieken. Als er met Close afgesloten wordt, dan staat de grafiek in het werkblad. Om het Maplet te activeren is het volgende commando nodig: > Student[Precalculus][StandardFunctionsTutor](); Zie figuur 1.7.
Figuur 1.7
1.5.6
Functienotatie
Tot nu toe zijn er uitdrukkingen ingevoerd met behulp van een variabele toekenning, bijvoorbeeld f:=.... Soms werd daarmee een functie van x bedoeld. In de tekst werd in dat geval gesproken over f (x), bijvoorbeeld als de grafiek van zo’n functie getekend moest worden. Steeds was deze functie dan bij Maple bekend als uitdrukking onder de naam f. Het is echter ook mogelijk om de functie f in te voeren als een echte functie en niet als een uitdrukking. Je hebt gezien hoe de standaardfuncties bij Maple werken. Nu is de bedoeling dat we zelf functies maken die op dezelfde manier werken als de standaardfuncties. We willen een functie f defini¨eren, waarmee we snel de functiewaarden kunnen uitrekenen, bijvoorbeeld f (x) of f (10). Dit is alleen mogelijk als we de functie met behulp van de pijltjesnotatie invoeren. We defini¨eren de functie voor dit doel nu eens niet door middel van een variabele toekenning, maar met behulp van een functievoorschrift in pijltjesnotatie. Het pijltje maak je met behulp van het minteken en het groterdanteken ->. Voorbeeld 1.17 Het invoeren van een functie met de pijltjesnotatie heeft als voordeel dat snel functiewaarden opgevraagd kunnen worden. > restart; f:=x->x^2+1; f(x); f(10); f := x → x2 + 1 x2 + 1 101 Als de uitdrukking f (x) dan op een bepaald ogenblik nodig is, kan deze opgevraagd worden met f(x). TIP: definieer liever niet een functie met behulp van f(x):=... In de tekst kun je wel spreken over f (x), terwijl de functie bij Maple bekend is als uitdrukking onder de naam f.
16
Handleiding Maple 10
Voorbeeld 1.18 Pijltjesnotatie bij een functie met parameters Als er een parameter in het spel is, is het van belang om te weten welke de variabele is en welke letter als parameter opgevat moet worden. Met f (x) = a x + 3 bijvoorbeeld wordt een functie van x bedoeld waarbij a een parameter is. Voer de functie dan eens in als e´ chte functie: f:=x->a*x+3; en vraag vervolgens naar f(5);. > restart; f:=x->a*x+3; > f(5);
f := x → a x + 3 5a + 3
• Let wel op als je bijvoorbeeld de functie aanroept om er iets mee te gaan doen, een grafiek tekenen met behulp van het commando plot bijvoorbeeld en je hebt de pijltjesnotatie gebruikt om de functie te defini¨eren, dat je dan de functie aanroept met f (x) en niet met alleen f . Dus om te plotten, typ je plot(f(x),x=-5..5);. De functie moet in het geval van plotten dan natuurlijk geen parameters bevatten (zie voorbeeld 5.2). • Er zijn dus twee methoden om een functie bij Maple te defini¨eren. Als uitdrukking met een variabeletoekenning f:=... en met behulp van het functievoorschrift (pijltjesnotatie) f:=x->.... Beide methoden hebben voordelen. In de rest van het boek komt het door elkaar voor. Het hangt van de situatie af wat het handigst is. • Wil je bijvoorbeeld van een functie die ingevoerd is als uitdrukking met een variabele toekenning een pijltjesnotatie maken, dan kan dat in e´ e´ n keer veranderd worden met het commando unapply (zie voorbeeld 1.19). • Een functie van twee of meer variabelen gaat op dezelfde wijze: f(x,y)->... en de functiewaarde in punt (3, 5) krijg je dan meteen met f(3,5). Toepassingen hiervan zijn in voorbeeld 5.4 en 8.16 te zien. Voorbeeld 1.19 Een uitdrukking veranderen in een echte functie Om van een functie die ingevoerd is als uitdrukking een echte functie (met pijltjesnotatie) te maken, definieer je hem opnieuw met unapply en daarna is het mogelijk om deze functie als echte functie te laten werken om bijvoorbeeld functiewaarden op te vragen: > restart; g:=x^2-5*x; > g:=unapply(g,x); > g(3);
g := x2 − 5 x g := x → x2 − 5 x −6
TIP: zie ook in voorbeeld 3.33 hoe je handig gebruik kunt maken van de invoer in pijltjesnotatie bij differenti¨eren.
1.6 Maple als tekstverwerker Neem nu de appendix op de cd-rom behorende bij het boek erbij. Het handelt over de herkomst van het getal van Euler, het grondtal van de natuurlijke logaritme en van de natuurlijke exponenti¨ele functie. Aan de hand van dit werkblad (worksheet) dat geheel in Maple (Classic Worksheet) gemaakt is, wordt een aantal tips voor het maken van zo’n werkblad gegeven. Je ziet dat Maple als tekstverwerker gebruikt kan worden. Indeling in
1 · Snel aan de slag
17
paragrafen (secties) gaat automatisch en de formules in de tekst zijn gemakkelijk te maken. Berekeningen, tekst en grafieken wisselen elkaar af, alles zonder Maple te verlaten. Als de knoppen in de knoppenbalk en de contextbalk je niet zo bekend voorkomen, kun je ervoor zorgen dat bij de instellingen Balloon Help is aangevinkt (zie paragraaf 1.2 bij de instellingen). Als dat gedaan is en je gaat met de muis langs de knoppen van de knoppenbalk en de contextbalk, krijg je te zien wat het effect zal zijn bij het aanklikken van een van deze knoppen.
1.6.1
Het werkblad
Neem een nieuw werkblad. Links bovenaan staat dan een [> -teken en Maple wacht in dat geval op invoer voor het doen van een berekening. Je wilt echter eerst een tekst maken. Klik voor het maken van tekst op de letter T in de knoppenbalk en maak eerst een titel. Er is een rolmenu om Title te selecteren en meteen wordt dan automatisch het juiste lettertype ingesteld, zie figuur 1.8.
Klik hier voor het maken van een tekst.
Figuur 1.8
Na Enter, kom je automatisch in een speciaal lettertype om je naam te typen (author) en na nogmaals Enter, kun je tekst intikken. Maar je wilt bijvoorbeeld eerst paragrafen (sections) maken.
1.6.2
Paragrafen maken
Het maken van een nieuwe paragraaf (sectie) gaat met het menu Insert, Section (zie figuur 1.9). Dus niet met Insert, Paragraph, want dat betekent een nieuwe alinea. Je krijgt bij het maken van een sectie een vierkantje met een minteken erin en daarachter kun je de titel van deze paragraaf intikken met als titel ‘Inleiding’. Automatisch is de titel van een paragraaf op Heading 1 ingesteld, maar er mag natuurlijk ook voor een andere stijl gekozen worden. (Voor titels van subparagrafen (subsections) wordt automatisch Heading 2 ingesteld.) Na Enter kun je normale tekst gaan intikken. Je zit dan in de tekst-mode die je wel van Word kent met vette, cursieve en onderstreepte letters, links uitlijnen, centreren en rechts uitlijnen. Alles volgens een gewone tekstverwerker. Na het maken van een aantal paragrafen met het hokje met het minteken erin, kun je voor de overzichtelijkheid op deze mintekens klikken. De mintekens veranderen in plustekens en de inhoud van de paragrafen (sections) kan, behalve de titel van de paragraaf, onzichtbaar gemaakt worden. Dit kan voor het hele document in e´ e´ n keer met View Collapse All Sections. Je hebt dan een overzicht van je document en je kunt eventueel nummering aanbrengen of secties (of subsecties) tussenvoegen. Verder is er
18
Handleiding Maple 10
Figuur 1.9
in het Insert-menu nog te zien dat je spreadsheets (zie paragraaf 1.7) en zelfs hyperlinks (zie paragraaf 1.6.4) kunt tussenvoegen. Als je in figuur 1.2 kijkt op blz. 9, zie je dat bij het menu View mogelijkheden zijn om in e´ e´ n keer alle secties ‘dicht te klappen en weer open te klappen’ met Collapse respectievelijk Expand All Sections. Ook is het mogelijk om de verticale lijnen in de kantlijn (on)zichtbaar te maken (Show Section Ranges en Show Group Ranges). In de appendix op de cd-rom zijn de lijnen in de kantlijn onzichtbaar gemaakt.
1.6.3 Formules in de tekst Wil je nu een formule in de tekst schrijven, dan kan dat heel gemakkelijk en automatisch in de goede lay-out door in de knoppenbalk op de Σ-knop te klikken (links naast de T van tekst, zie figuur 1.10).
Sigma-knop om de formuleeditor te activeren die je in de Contextbalk kunt editen.
Figuur 1.10
Je komt dan onmiddellijk in de formule-editor terecht met een andere, bijpassende contextbalk. In feite wordt de formule getikt ´ın de contextbalk en als de formule klaar is, kun je weer over naar de tekst-mode door op de T in de knoppenbalk te klikken. Als later de formule verbeterd moet worden, selecteer je de formule met de muis en je kunt in de contextbalk de verbetering typen, zie figuur 1.10. Het centreren van de formule kan alleen zolang je in de tekst-mode bent, dus v´oo´ rdat je op de Σ-knop klikt o´ f nadat je weer op de T-knop hebt geklikt. Ook kleine formules in de regel doe
1 · Snel aan de slag
19
je met de formule-editor. Je krijgt dan automatisch de juiste spati¨ering en de juiste lay-out die past bij wiskundige formules. Op de website bij dit boek staat een bestand dat gaat over de formuleconventies: hoe formules in documenten gepresenteerd moeten worden. Als er na een stukje tekst weer een berekening moet plaatsvinden, kan dat eenvoudig met het aanklikken van het [> -teken in de knoppenbalk. Je kunt dan weer berekeningen en grafieken maken zoals je inmiddels gewend bent. Resultaten van berekeningen kunnen weer gebruikt worden om in de tekst op te nemen zonder deze na te typen. Selecteer een formule, liefst in de uitvoer van een berekening en ‘sleep’ deze met de muis naar de plaats in de tekst waar je deze formule wilt neerzetten. Bij het loslaten van de muisknop is de formule verplaatst (niet gekopieerd). Als je wilt kopi¨eren, werk dan met Copy en Paste uit het Edit-menu of het ingedrukt houden van de Ctrl-toets tijdens het slepen. Matrices en vectoren kun je netjes in de tekst plaatsten door in een kladwerkblad een matrix te maken en de uitvoer daarvan met Copy en Paste op de gewenste plaats in de tekst te zetten. Een matrix of een vector maak je met behulp van de palettes (zie figuur1.2) die je met View kunt openen. Steeds kun je met de Tab-toets naar het volgende element van de matrix gaan om deze verder te vullen. 1.6.4
Hyperlinks en bookmarks
In het werkblad kun je zelfs gebruikmaken van hyperlinks en bookmarks. Met een hyperlink kun je, werkend in je werkblad, naar andere plaatsen van het werkblad verwijzen door middel van aangebrachte bookmarks. Je kunt zelfs naar andere werkbladen, naar helppagina’s of internetsites verwijzen. Het aanbrengen van een hyperlink in het werkblad gaat als volgt en een en ander is uit te proberen in het werkblad van de appendix op de cd-rom. Klik in het Insert-menu Hyperlink aan. Vervolgens krijg je een dialoogscherm waarin een en ander is in te vullen. Het dialoogscherm krijg je ook als je met de rechtermuisknop op de link in het werkblad klikt van de appendix en dan kiest voor Properties. Er kan gekozen worden voor de verwijzing naar een helppagina in Maple (in de appendix wordt verwezen naar een helppagina die uitleg geeft over limieten). De hyperlink is dan ook ‘limieten’ genoemd. Je kunt ook verwijzen naar een ander document dat je zelf hebt aangemaakt (met Browse). Je kunt zelfs verwijzen naar een plaats in het document waarin je aan het werk bent: namelijk een plaats die je met een bookmark ‘gemerkt’ hebt. Ten slotte kan ook verwezen worden naar een internetsite. Helemaal onder aan het werkblad in de appendix zie je deze hyperlink. Als je deze hyperlink nog wilt wijzigen in je werkblad, kun je met de rechtermuisknop erop klikken en via Properties eventueel verbeteren. Met het intikken van ?hyperlink kom je meer hierover en over het aanbrengen van bookmarks te weten. Meteen wordt in deze helppagina uitgelegd hoe je een zogenoemd bookmark aanbrengt via het View-menu.
1.7 Spreadsheets Je kunt beschikken over spreadsheets binnen Maple. Het invoegen van een spreadsheet gaat via het Insert-menu. Zodra je dat gedaan hebt, verandert de contextbalk, zie figuur 1.11. De contextbalk wordt aangepast en er worden een paar knoppen ten behoeve van de spreadsheet aangeboden. Cel B1 is gevuld met f(~A1). Het betekent dat de functie (met pijltjes-notatie) die vooraf in het werkblad gedefinieerd is, gebruikt kan worden. Met de meest linkse knop vul je een aantal cellen naar beneden op dezelfde manier. ˜A1 betekent een referentie naar Cel A1. De tilde die er voor staat is beslist noodzakelijk en een eigenschap
20
Handleiding Maple 10
Hiermee vul je de geselecteerde cellen
Figuur 1.11
van Maple (in tegenstelling tot Excel) omdat het ook mogelijk is dat een object reeds de naam A1 zou kunnen hebben in het werkblad. Met een tilde verwijs je altijd naar een cel. Als je op de meest linkse knop van de contextbalk klikt, verschijnt het pop-upmenu Fill en kun je naar beneden vullen op dezelfde manier als waarop ook cel B1 is gevuld. Met de knop ernaast wordt het gehele spreadsheet doorgerekend. De werking is vergelijkbaar met Excel. Het voordeel is hier echter dat je de beschikking hebt over een gigantisch rekenpakket binnen het spreadsheetprogramma van Maple. Het is zelfs mogelijk om de spreadsheets van Maple en Excel onderling uit te wisselen. Zie ook bij de instellingen paragraaf 1.2.3. Er kan zowel symbolisch als numeriek gewerkt worden in een spreadsheet. De instellingen daarvoor zijn gemakkelijk te doen door met de rechtermuisknop op de spreadsheet te klikken en te kiezen voor Properties. Geef dan de spreadsheet ook een specifieke naam. In voorbeeld 5.10 staat een toepassing van het gebruik van spreadsheets. Begin een werkblad met een spreadsheet erin altijd met restart, want in een spreadsheet worden toekenningen meegenomen. Zie verder de website bij dit boek over de werking van spreadsheets binnen Maple.
1.8 Helpfunctie Er bestaat een zeer uitvoerige helpfunctie bij Maple. Deze is werkelijk zo uitgebreid dat je eigenlijk geen handboek nodig hebt. Maar zoals altijd, alle begin is moeilijk en het is goed om even op weg geholpen te worden. Zoals je al gezien hebt aan het eind van paragraaf 1.3.5 en aan het eind van pararaaf 1.6.4, kom je eenvoudig in de helpfunctie met behulp van de vraagtekenmethode. Als je bijvoorbeeld iets meer wilt weten over het commando simplify, typ je ?simplify. Hetzelfde effect heeft het met de muis selecteren van een commando en vervolgens op Ctrl-F1 drukken (of bij Help in de menubalk kijken). Je moet dan natuurlijk wel enige kennis hebben van mogelijke commando’s. Bekijk eens welk rolmenu er ontstaat bij het aanklikken van Help in de menubalk. Om weer uit de helpfunctie te komen, klik je met de muis op Window en kies je voor het document waarin je aan het werk was. De betreffende help-file blijft dan wel toegankelijk. Een andere mogelijkheid om het helpvenster af te sluiten is Ctrl-F4 of op de bekende wijze met het kruisje rechtsboven.
1 · Snel aan de slag
21
• Om nu te zien welke commando’s er in Maple bestaan, kun je om te beginnen typen:?lib (je hoeft niet per se met een puntkomma af te sluiten, maar het mag wel). Je krijgt nu alle standaardcommando’s in link-vorm te zien op alfabet die actief zijn in Maple. • Als je vanuit je werkblad ?packages typt, krijg je hiermee te zien welke pakketten er zoal zijn. We hebben tot nu toe nog geen commando’s uit pakketten leren kennen, maar in het tweede hoofdstuk komt er een belangrijk pakket aan de orde: het plotpakket. Dit pakket bevat extra commando’s om wat geavanceerder met grafieken om te gaan. Elk pakket kan worden geactiveerd met het commando with, zoals het plotpakket met with(plots). Als je dat afsluit met een puntkomma, kun je daarmee alle commando’s zien die in zo’n pakket zitten en die niet in de standaardlijst van commando’s voorkomen. Over ieder commando is hulp te vragen met de bekende vraagtekenmethode of het selecteren van een commando en vervolgens in de Help van de menubalk gaan naar Help on ‘commando’ of met Ctrl+F1. Ook is er een belangrijk pakket dat geactiveerd wordt met with(Student). Dit pakket bevat subpakketten met veel visualisaties. Bij het doorwerken van dit boek wordt melding gemaakt wanneer commando’s in bepaalde pakketten voorkomen. Zie in de index van dit boek bij with voor mogelijke pakketten. • Als je hulp vraagt over een commando of een functie, ga dan met de cursor naar beneden in de helpfunctie om naar de voorbeelden te kijken. Je kunt zelfs een voorbeeld met behulp van Copy en Paste naar je sessie verhuizen en verder uitproberen.
1.9 Veelvoorkomende beginnersfouten 1. Het typen van hoofdletters en kleine letters door elkaar (per ongeluk op Caps Lock gedrukt). 2. Het typen van bijvoorbeeld sin*x of sinx als er sin(x) bedoeld wordt. 3. Het typen van bijvoorbeeld xy als er x*y bedoeld wordt. 4. Het typen van een komma, als er een decimale punt bedoeld wordt. 5. Het typen van een o als er een 0 bedoeld wordt. 6. Het typen van pi als er Pi bedoeld wordt (dus π ≈ 3.14). 7. Als het rekenen of plotten niet lukt, controleer dan of alle toekenningen goed overgekomen zijn. Kijk bijvoorbeeld of de functie f wel de juiste is door te typen f;. 8. Het vergeten van de dubbele punt bij toekenningen (f:=...). 9. Met een volgend werkblad werken zonder te beginnen met restart, zodat oude toekenningen blijven bestaan. 10. Iets tussenvoegen zodat de volgorde verstoord wordt. Dit gebeurt vaak als het %-teken veel gebruikt wordt. Terugverwijzingen kloppen dan vaak niet meer. Maak zo min mogelijk gebruik van het %-teken! 11. Het door elkaar gebruiken van de pijltjesnotatie en de toekenning met behulp van een uitdrukking. Dus liever niet f(x):=... 12. Een commando uit een pakket gebruiken zonder het betreffende pakket te activeren. Het commando wordt in dergelijke gevallen weer gewoon teruggegeven. (Zie in de index van het boek bij with voor mogelijke pakketten.) 13. Veel commando’s zijn met kleine letters maar soms ook met hoofdletter. Fout intikken van het commando geeft het commando weer terug. Maak gebruik van bestaande werkbladen en werk met Copy en Paste. De commandolijst op de cd-rom kan erbij gehouden worden, zodat je weet wat er bij een
22
Handleiding Maple 10
commando verlangd wordt en in welke volgorde. Zie verder in de helpfunctie. Meer informatie daarover is te vinden paragraaf 1.8.
2 Grafieken 2.1 Inleiding Allereerst moet vermeld worden dat het maken van grafieken meer geheugenruimte kost dan tekst en formules. Het is dus verstandig om tijdig het werkblad op te slaan. Dit kan automatisch met File, Preferences en dan op het tabblad General bij Auto Save (zie ook blz. 3). Ten tweede moet vermeld worden dat sommige plotcommando’s die wat geavanceerder zijn, in een zogenoemd plotpakket zitten. Eerst moet een dergelijk plotpakket geactiveerde worden met with(plots) en als je dit afsluit met puntkomma, kun je zien welke plotcommando’s er in dit pakket opgenomen zijn. Houd er rekening mee dat na restart deze commando’s niet meer toegankelijk zijn en zo nodig weer opnieuw het plotpakket geactiveerd moet worden. Bij de voorbeelden wordt er wel melding gemaakt of het plotpakket al of niet geactiveerd dient te worden. In principe wordt er gewerkt in de interface Classic Worksheet van Maple 10. Voor sommige geavanceerde opties zoals grid en transparency kunnen de grafieken uiteindelijk beter gemaakt worden in de standaardinterface van Maple 10. Ook is in deze standaardinterface gemakkelijk de Plot Builder te bereiken via Tools, Assistants, Plot Builder. Zie verder paragraaf 2.4. Het maken van grafieken wordt in dit hoofdstuk uiteengezet aan de hand van voorbeelden. Nog meer voorbeelden die betrekking hebben op specifieke situaties, zijn verspreid over het boek in de verschillende hoofdstukken. De bedoeling van dit hoofdstuk is om de betekenis van de commando’s te leren kennen, zodat deze eventueel ook in de menu’s herkend en begrepen kunnen worden. Aan extra opties, om de grafiek aan te passen, is in de voorbeelden ruimschoots aandacht besteed, zodat het gemakkelijk is een en ander na te zoeken in de helpfunctie met ?plot[options]. Het is handig om te weten dat grafieken gemakkelijk naar andere applicaties ge¨exporteerd en daar eventueel verder bewerkt kunnen worden. Ook is het handig om te weten dat als de grafieken gebruikt worden voor internet, dat ze dan het beste als gif-bestanden kunnen worden ge¨exporteerd. Neem dan als het mogelijk is bij gewone grafieken voor thickness de waarde 2. De plaatjes worden dan op het scherm prima weergegeven. Ook animaties (zie paragraaf 2.12) worden dan automatisch als animatie-gifjes opgeslagen. Alle grafieken die in dit boek voorkomen, kun je zelf maken! Voor het tekenen van grafieken is het nodig dat er eerst een functie wordt ingevoerd voordat de grafiek ervan getekend wordt. Op die manier kan de functie eerst gecontroleerd worden. Het invoeren van zo’n functie kan globaal op twee manieren, zoals we die in paragraaf 1.5.6 al hebben leren kennen. 1. Als variabele toekenning met een uitdrukking: f:=.... Bij plot wordt de functie dan aangeroepen met f waarna het domein nog opgegeven moet worden. Dus plot(f,x=a..b). 2. Als echte functie met de pijltjesnotatie: f:=x->.... Bij plot wordt de functie dan aangeroepen met f(x) en er moet een domein opgegeven worden: plot(f(x),x=a..b). Zie voorbeeld 5.2. Echter er kan in dit geval ook volstaan worden
24
Handleiding Maple 10
met plot(f) waarna een grafiek gepresenteerd wordt met het standaarddomein [−10, 10] of plot(f,a..b) zonder x=.... Nu is het niet onmogelijk om bij de eerste manier als naam voor de functie f (x) te gebruiken, maar dit suggereert dat je de tweede manier, de pijltjesnotatie, hebt gebruikt. Geef dus liever n´ıet de naam f (x). Zie paragraaf 1.5.6. Met de muis op een grafiek klikken, geeft in de contextbar informatie over de grafiek, zoals de co¨ordinaten van een punt van de grafiek en mogelijkheden om iets aan de instellingen te veranderen. Je kunt bijvoorbeeld ook met een van die knoppen zichtbaar maken welke punten er berekend zijn door voor ”pointplot” te kiezen. Wat er in feite gebeurt als er een grafiek door het programma wordt getekend, is dat er standaard 50 punten worden berekend en vervolgens worden deze punten onderling verbonden op een zo vloeiend mogelijke manier. Het kan zijn dat er meer informatie nodig is om een grafiek te maken, maar dan moet er een extra optie bij het plotcommando worden meegegeven. Dat kan met numpoints. In sommige situaties is dat wellicht nodig (zie voorbeelden 2.11 en 2.16).
2.2 Plotopties Als je met scripts werkt en niet met de menu’s, is het goed om wat mogelijkheden te kennen van het aanpassen van grafieken door extra opties te geven bij het plotcommando. Als je kennisgemaakt hebt met deze mogelijkheden, zijn de menu’s ook beter te begrijpen. Met ?plot,options en ?plot3d,options kunnen in de helpfunctie bij Maple veel handige dingen gevonden worden om grafieken aan te passen. In dit hoofdstuk kan door middel van een aantal voorbeelden veel duidelijk worden over de structuur van het maken van grafieken.
2.3 Smartplot Een snelle manier om een grafiek van een functie te tekenen is met smartplot, dat wil zeggen: met behulp van de rechtermuisknop. Daarbij wordt de uitvoer van een formule geselecteerd waarbij er geen pijltjesnotatie gebruikt moet worden (paragraaf 1.5.6). Vervolgens kan deze geselecteerde formule aangeklikt worden met de rechtermuisknop. Er opent zich dan een menu waar je bijvoorbeeld kunt kiezen voor 2-D Plot en de rechtermuisknop kan vervolgens dienst doen om de figuur verder te bewerken. Al deze manieren hebben zo hun eigen voordelen, terwijl de laatste manier met smartplot een duidelijk nadeel heeft. Acties met de rechtermuisknop worden namelijk niet bewaard bij het opslaan van het werkblad! Het resultaat wel, maar alleen als de uitvoer van het werkblad daarbij ook bewaard wordt. Er is namelijk een mogelijkheid om het werkblad te ontdoen van uitvoerregels (formules en grafieken) en het op die manier te bewaren wat veel minder geheugen kost. Zie ook paragraaf 1.4.2 voor meer informatie over smartplot.
2.4 De Plot Builder Er is nog een extra mogelijkheid om grafieken te maken met behulp van een Maplet: de Plot Builder. Deze kan bereikt worden door met de rechtermuisknop een uitdrukking (van een of twee variabelen) in de uitvoer aan te klikken en vervolgens te kiezen voor Plot Builder.
2 · Grafieken
25
Er kunnen daarin nog grafieken van functies toegevoegd worden. Alle instellingen met de Plot Builder gekozen, worden na het drukken op de knop ”Plot” in het Maplet vertaald naar een invoerregel in het werkblad, zodat de reproduceerbaarheid van het werkblad gegarandeerd is. Een nadeel is echter dat als de instellingen niet allemaal naar wens zijn, je weer alles overnieuw moet doen met de Plot Builder of in de invoerregel moet editen voor de verbetering. Voor het editen is dan wel enige kennis van de code vereist. Niet alle opties die de Plot Builder aanbiedt, zijn in het Classic Worksheet te verwezenlijken. Bijvoorbeeld de opties voor de Grid (Advanced Axes Settings) in de grafiek kan alleen in de standaardinterface verwezenlijkt worden. De Plot Builder is ook te bereiken via het commando Interactive uit het plotpakket (mag ook met een hoofdletter). Probeer eens: > with(plots): Interactive(); Na het invoeren van de functie kan op Options geklikt worden voor het doen van alle mogelijke instellingen waarna verder met de knoppen in de knoppenbalk of met het menu (klikken op de grafiek met de rechtermuisknop) nog meer instellingen mogelijk zijn. Het nadeel hiervan is dat in de uitvoer alleen de grafiek verkregen wordt zonder invoerregel. (Tenzij je op ”Command” klikt in de Plot Builder in plaats van op ”Plot” en het resultaat kopieert naar een invoerregel.) Eventueel veranderen van het resultaat als je niet geheel tevreden bent, heeft tot gevolg dat alles weer helemaal overnieuw moet. Het is nog niet ideaal, maar de verwachting is dat de faciliteiten van de Plot Builder steeds beter worden in nieuwe versies van Maple. Meer hierover is te vinden op de website bij dit boek.
´ variabele 2.5 Functies van e´ en Voor het tekenen van de grafiek van een functie is enig inzicht in het gedrag van een functie nodig om het juiste domein te kiezen. Maple maakt automatisch een beeldvullend plaatje. Het horizontale interval moet altijd opgegeven worden, het verticale interval mag weggelaten worden. Voorbeeld 2.1 Een enkele grafiek > restart; f:=sin(x)*exp(-x/4); plot(f,x=0..10); x
f := sin(x) e(− 4 )
0.6 0.4 0.2
0
2
4
x
6
8
10
–0.2
Figuur 2.1 x
In figuur 2.1 is de grafiek van de functie f (x) = sin(x) e− 4 weergegeven, die als uitdrukking f is ingevoerd. In ieder geval moet het interval van de onafhankelijke variabele worden opgegeven.
26
Handleiding Maple 10
Voorbeeld 2.2 Meer grafieken in e´ e´ n figuur Het is ook mogelijk om een verzameling of lijst grafieken in e´ e´ n figuur te tekenen. Zie voor verzamelingen en lijsten paragraaf 4.8 en 4.7. De grafieken van de volgende drie functies in e´ e´ n figuur 2.2. x x x f (x) = sin(x) e− 4 , g(x) = e− 4 en h(x) = −e− 4 . > restart; f:=sin(x)*exp(-x/4): g:=exp(-x/4); h:=-exp(-x/4); x
g := e(− 4 ) x
h := −e(− 4 ) > plot({f,g,h},x=0..10); #Beter is het om met een lijst te werken, zie volgende commando.
> plot([f,g,h],x=0..10,color=[yellow,green,red],thickness=[1,2,3]); Zie figuur 2.2. 1
0.5
0
2
4
x
6
8
10
–0.5
–1
Figuur 2.2
Toelichting: Meer grafieken in e´ e´ n figuur kan met het opgeven van een verzameling functies (tussen accolades): automatisch worden er verschillende kleuren aan de grafieken gegeven. Daarop is geen invloed uit te oefenen. Als echter de functies in het plotcommando met behulp van een lijst (vierkante haken) worden gegeven, kan er invloed uitgeoefend worden op de kleuren, de lijndikte, etcetera. De volgorde ligt dan namelijk vast! (Met smartplot zijn er mogelijkheden om de eigenschappen van de grafiek eventueel stuk voor stuk aan te passen met behulp van een menu, maar dat is veel meer werk. Zie daarvoor paragraaf 1.4.2.) Ten slotte is hier nog een voorbeeld van een tekst in de commandoregel. Met behulp van een #-teken wordt alles wat daarachter getypt wordt niet gezien als opdracht.
2.5.1 De eenheidsstapfunctie (Heaviside) Het is mogelijk om grafieken van functies te tekenen die bestaan uit verschillende stukken. Voordat we dat gaan doen, moet eerst de stapfunctie ge¨ıntroduceerd worden (meestal als functie van t). De functie van de eenheidsstap is bij Maple gedefinieerd met behulp van Heaviside. De functie Heaviside(t) betekent dat de functiewaarde gelijk is aan 1 rechts van t = 0 en gelijk is aan 0 links van t = 0. In het punt t = 0 is deze niet gedefinieerd. In feite is de waarde van deze functie gewoon 0 of 1.
2 · Grafieken
27
De Heaviside-eenheidsstap (Unit Step) kunnen we als volgt noteren:
Heaviside(t) =
0 ongede f inieerd
voor t < 0 voor t = 0
1
voor t > 0
TIP: zie bij de helpfunctie (?Heaviside) voor meer informatie om bijvoorbeeld te defini¨eren dat op t = 0 de functie Heaviside(0) = 1 of anders. Voorbeeld 2.3 Verschillende grafieken met de stapfunctie gemaakt De functie sin(t) Heaviside(t − 2) is bijvoorbeeld te schrijven als:
sin(t) Heaviside(t − 2) =
0 ongede f inieerd
t<2 t=2
sin(t)
t>2
Er wordt nu een verzameling (let op de accolades) van drie grafieken in e´ e´ n figuur gepresenteerd. > restart; plot({Heaviside(t),1.5*Heaviside(t-1),sin(t)*Heaviside(t-2)}, t=-1..6,discont=true);
Zie figuur 2.3. 1.5
1.5 Heaviside(t–1)
1
Heaviside(t)
0.5
–1
sin(t) Heaviside(t–2)
1
2
t
3
4
5
–0.5 –1
Figuur 2.3
Toelichting: In figuur 2.3 zie je dat de grafiek aangevuld is met tekst. De manier waarop dat is gedaan is met textplot. Dit wordt uitgelegd in paragraaf 2.13 en op de cd-rom staat de volledige invoer voor deze figuur met tekst en stippellijnen voor de discontinu¨ıteit. Verder kun je de discontinu¨ıteit in beeld brengen met de extra optie in het commando discont=true. Dat wil zeggen dat er ook echt een sprong gemaakt wordt. Zie voor deze optie ook voorbeeld 2.22 en voorbeeld 3.26.
28
Handleiding Maple 10
2.5.2 Functies in stukken Er kan in veel gevallen goed gerekend worden met functies in stukken, de zogenoemde piecewise-functies. Voorbeeld 2.4 Piecewise-functie (functie in stukken) Gegeven is een functie in stukken: de functie f (x). Deze wordt ingevoerd met behulp van het commando PIECEWISE waarbij je steeds pakketjes tussen [ ] opgeeft voor de verschillende functievoorschriften op de bijbehorende intervallen van links naar rechts op de horizontale as. > restart: f:=PIECEWISE([0,x<0],[x^2,x<=1],[1,1<x]); 0 f (x) = x2 1
> plot(f,x=-1..3);
x<0 x≤1
1<x
Zie figuur 2.4. piecewise-functie 1 0.8 0.6 0.4 0.2
–1
0
1
x
2
3
Figuur 2.4
> convert(f,Heaviside); x2 Heaviside(x) − x2 Heaviside(−1 + x) + Heaviside(−1 + x) Toelichting: Er wordt bij PIECEWISE van links naar rechts gelezen, zodat je voor het middelste stuk niet hoeft op te geven 0 ≤ x ≤ 1. Dus x ≤ 1 is voldoende. Je ziet dat je met convert dit soort functies om kunt zetten naar andere manieren van schrijven. De manier van splitsen in stukken met PIECEWISE is echter gemakkelijker te bekijken in de uitvoer dan de schrijfwijze met de stapfunctie (Heaviside) en er kan in de meeste gevallen uitstekend mee gerekend worden. Meer voorbeelden van functies in stukken zie je in de voorbeelden 9.14 en 11.7 en bij de splines in paragraaf 12.3. 2.5.3 Functies met absolute waarden Het commando bij Maple om functies met absolute waarden (of ook wel modulusfuncties genoemd) te maken is abs. Zie ook bij de standaardfuncties paragraaf 1.5.
2 · Grafieken
29
Voorbeeld 2.5 Grafiek van een functie met absolute waarden De grafiek van f (x) = x2 − 3 x − 5 (zie figuur 2.5) en de omzetting in een piecewise functie.
> restart; f:=abs(x^2-3*x-5); plot(f,x=-4..6); f := x2 − 3 x − 5 Zie figuur 2.5.
absolutewaardefunctie: | f(x) | 20 15 10 5
–4
–2
0
2
4
x
6
Figuur 2.5
> convert(f,piecewise); 2 x − 3x− 5 f (x) = −x2 + 3 x + 5 2 x − 3x− 5
√
x ≤ 23 − √229 x < 32√+ 229 3 2
+
29 2
≤x
Toelichting: Er zouden decimale getallen in de uitvoer gekomen zijn als er decimale getallen waren ingevoerd bij de functie! (Zie voor meer informatie over decimale getallen paragraaf 1.3.4.) Door middel van het omzetcommando convert is dit soort functies om te zetten naar een functie in stukken (of eventueel naar een functie met Heaviside). Zie voorbeeld 2.4.
2.6 Vectorfuncties (parameterkrommen) Grafieken van vectorfuncties (relaties in parametervorm) worden wel parameterkrommen genoemd. Hierbij moet echter wel bedacht worden wat dit soort relaties feitelijk betekent. Vaak wordt gebruikgemaakt van de parameter t, waarbij je kunt denken dat t de tijd voorstelt. Zie paragraaf 8.2.6 voor meer informatie over vectorfuncties. 2.6.1
Vlakke krommen
Krommen in de R2 kunnen getekend worden met behulp van het gewone commando plot. Op ieder tijdstip t is er in het x, y-vlak een punt aan te wijzen door af te spreken dat x en y beide functies zijn van t. Er is dus e´ e´ n parameter (´ee´ n vrijheidsgraad) en dat impliceert de beschrijving van een kromme. Dat kan ook in de ruimte. Zie daarvoor paragraaf 2.6.2.
30
Handleiding Maple 10
Voorbeeld 2.6 Parameterkromme in het platte vlak Gegeven is de vectorfunctie: x = t 3 − 3t en y = t 2 − 1. > restart; x:=t^3-3*t; y:=t^2-1; x := t 3 − 3t y := t 2 − 1 > plot([x,y,t=-3..3]); Eventueel kun je twee of meer parameterkrommen in e´ e´ n figuur tekenen (figuur 2.6). Kort gezegd komt het erop neer dat je in dat geval een verzameling of een lijst vectorfuncties opgeeft. > plot([[x,y,t=-3..3],[t,t,t=-3..8]],thickness=[1,2]); Zie figuur 2.6. parameterkromme met parameter t die loopt van t=–3 tot t=3 t=–3 8
t=3
6 4 2 –15
–10
–5 –2
t=sqrt(3) of t=-sqrt(3) t=–1 5 t=0
10
15
Figuur 2.6
Toelichting: Hier is de lijn y = x er dus nog bij gevoegd (in parametervoorstelling is dat: x = t en y = t). Voor een verzameling (met accolades) parameterkrommen in e´ e´ n figuur, maak je gebruik van het commando dat er in het algemeen ongeveer als volgt uitziet: > plot({[x1,y1,t=a..b],[x2,y2,t=c..d]});. Echter als lijst heeft het voordelen om bijvoorbeeld lijndiktes of kleuren in volgorde te kunnen defini¨eren. Je kunt zelf voor een paar waarden van t nagaan waar het punt zich zal bevinden in het platte vlak. Met behulp van textplot (paragraaf 2.13) kun je de grafiek met deze gegevens verduidelijken. In voorbeeld 5.9 wordt dezelfde parameterkromme uitgebreid behandeld. Het is belangrijk om in te zien dat de volgorde van de functies x en y (tussen de vierkante haken) goed wordt opgegeven, want het punt (−18, 8) is niet hetzelfde punt als (8, −18). Er wordt bij Maple automatisch voor handhaving van de volgorde gezorgd bij gebruik van vierkante haken. Gebruik dus vooral geen accolades om een vectorfunctie te beschrijven, want deze zijn gereserveerd voor verzamelingen waar de volgorde van de elementen niet belangrijk is. Zie ook hoofdstuk 4 bij de beschrijving van de verschillende soorten wiskundige objecten.
2 · Grafieken
31
Voorbeeld 2.7 Voorbeelden van vectorfuncties om te oefenen ( ( x(t) = 1t x(t) = ln(t) t ∈ [0, 10] y(t) = e2t y(t) = 1t (
x(t) =
(
x(t) =
(
y(t) =
y(t) =
1 − t2 2t
1 |t| 2t
x(t) = t − sin(t)
y(t) =
1 − cos(t)
t ∈ [−10, 10]
t ∈ [−3, 3]
(
x(t) =
sin(t)
y(t) =
cos(2t)
t ∈ [0, 2 π]
t ∈ [−10, 10]
(
x(t) = y(t) =
sin(πt) 2 cos(πt)
t ∈ [0, 4]
t ∈ [0, 4 π]
(
x(t) = y(t) =
|t| + 1 1 t−1
t ∈ [−10, 10]
Voorbeeld 2.8 Animatie van een vlakke kromme Een mooi voorbeeld van de manier waarop je kunt zien hoe de grafiek opgebouwd wordt als t het interval doorloopt, is met het commando animatecurve uit het plotpakket. Tik het volgende in als x en y eerst wel toegekend zijn als uitdrukkingen in t. > with(plots): animatecurve([x,y,t=-3..3]); Klik vervolgens op de grafiek zodat de bijbehorende contextbalk geactiveerd wordt en klik vervolgens op ‘play’. Zie paragraaf 2.12 voor meer informatie over dit commando en andere animaties. 2.6.2
Ruimtekrommen
Een ruimtekromme is eigenlijk een voortzetting van de parameterkromme in de R2 naar drie dimensies. Werden er bij de vlakke kromme steeds twee co o¨ rdinaten opgegeven die het eindpunt van een vector in het platte vlak aangaven, bij een ruimtekromme hoef je alleen nog maar een derde co¨ordinaat toe te voegen om het eindpunt van een vector in de ruimte te beschrijven die afhangt van de parameter t. Het blijft voor de beschrijving van een kromme dus bij e´ e´ n parameter (vrijheidsgraad). De vector kan dan voorgesteld worden door [x(t) , y(t) , z(t)]. Eigenlijk verschilt het niet zoveel van de manier van doen in het platte vlak, maar toch zijn er wel aparte commando’s voor die te vinden zijn in het plotpakket. Het zijn de commando’s spacecurve en tubeplot. Bij tubeplot is wat duidelijker te zien hoe de kromme loopt in de ruimte. De dikte van de ‘buis’ kun je instellen met radius. Vergeet niet eerst het plotpakket te activeren. Het commando spacecurve accepteert tegenwoordig ook vectoren, dus je kunt de vector eerst toekennen en vervolgens aanroepen bij het gebruik van spacecurve. (Zie ook voorbeeld 8.6.) Het commando tubeplot accepteert alleen een lijst met co¨ordinaten en geen vectoren, zoals in het voorbeeld. TIP: kies bij ruimtegrafieken altijd voor axis=boxed, dat is het duidelijkst. Met het klikken in de grafiek en het slepen met de muis kan de ori¨entatie veranderd worden. In de linkerbovenhoek van het scherm zijn steeds de waarden van de ori¨entatieparameters ϑ en ϕ te zien. Voorbeeld 2.9 Ruimtekromme Gegeven is de vectorfunctie [x(t), y(t), z(t)] = [t 3 − 3t,t 2 − 1,t]. Ga in de grafiek (figuur 2.7) na hoe het verloop van de kromme is als t het interval [−3, 3] doorloopt.
Toelichting: Er is gebruikgemaakt van meervoudige toekenning (van x, y en z) om ruimte te sparen. In de uitvoer komen deze toekenningen dan ook op e´ e´ n regel. Let verder op de extra opties bijvoorbeeld labels=... om de symbolen langs de assen te maken. Ook kun je zien dat er nog een font voor de labels ingesteld kan worden. Verder zijn er opties voor de lijndikte, de instelling van de assen, de kleur en de ori¨entatie. Naar keuze kun je tubeplot of spacecurve gebruiken, beide uit het plotpakket. In de linkerbovenhoek is t = 3 en in de rechteronderhoek is t = −3. Voor meer informatie van geavanceerder gebruik van ruimtekrommen zie de website behorende bij dit boek. TIP: meestal ontstaan er waarschuwingen op het scherm als er een pakket wordt geactiveerd. Omdat we daar niet op hoeven te letten is er met interface(warnlevel=0) voor gezorgd dat er g´ee´ n waarschuwingen op het scherm komen. Voor het beschrijven van een vlak in de ruimte zijn twee parameters (vrijheidsgraden) nodig bij het formuleren van de ruimtevector. Zie daarvan een mooie toepassing in hoofdstuk 8 voorbeeld 8.8.
¨ 2.7 Functies met poolcoordinaten Om grafieken van functies met poolco¨ordinaten goed te kunnen tekenen, is een aantal aanwijzingen noodzakelijk. Het gaat om functies waarbij de straal een functie is van de hoek ϕ die gemeten wordt vanaf de positieve x-as, linksom. Houd er rekening mee dat
2 · Grafieken
33
de straal altijd positief moet zijn. Het commando polarplot([r,phi,phi=a..b]) uit het plotpakket lijkt wat structuur betreft op het plotcommando van de parameterkromme (paragraaf 2.6). Let verder op de vierkante haken vanwege het belang van de volgorde. Meer toepassingen over integratie met poolco¨ordinaten vind je in paragraaf 9.4.3. Voorbeeld 2.10 Twee functies in poolco¨ordinaten Gegeven zijn twee functies in poolco¨ordinaten R1 (ϕ) en R2 (ϕ). De straal R (positief!) als functie van de hoek ϕ. > restart; interface(warnlevel=0):with(plots): R1 := cos(2*phi); R2:=2*exp(-phi/4);
Zie figuur 2.8. meer polarplot-grafieken in één figuur R2 1
0.5 R1 (deel 2)
–1
–0.5
R1 (deel 1) 0.5
1
1.5
2
–0.5
Figuur 2.8
Toelichting: In figuur 2.8 staan de grafieken van beide functies getekend. Kijk goed uit dat er bepaalde waarden van de hoek ϕ niet kunnen bij de functie R1 , omdat de waarde van de straal R1 beslist positief moet zijn. In dit geval is de straal R1 positief op de intervallen ϕ ∈ [− π4 , π4 ] ∪ [ 34π , 54π ]. In bovenstaande sessie worden eigenlijk drie grafieken in e´ e´ n figuur getekend. Omdat de functie R1 (ϕ) niet overal positief is, moeten we deze splitsen in twee delen waar deze w´el positief is. Als je dat niet zou doen en gewoon de functie R1 (ϕ) zou gaan plotten voor het interval [0, 2π], zou je figuur 2.9 krijgen waarbij het bovenste en onderste lusje in feite niet mee doen. Wat er gebeurt in het programma als de straal negatief wordt voor bepaalde waarden van ϕ, is dat dan de (negatieve) straal gespiegeld ten opzichte van de oorsprong wordt weergegeven, terwijl er voor die waarden van ϕ helemaal geen straal zou moeten zijn! Voorbeeld 2.11 Aantal punten waarmee een p grafiek wordt opgebouwd Gegeven is de functie in poolco¨ordinaten r = 2 2 cos(2 ϕ). In de volgende sessie zie je dat hier niet alle waarden van ϕ mogelijk zijn vanwege het
34
Handleiding Maple 10
1
0.5
–1
–0.5
0
0.5
1
–0.5
–1
Figuur 2.9
wortelteken, maar de straal wordt in ieder geval niet negatief, dus je kunt gewoon het interval [0, 2π] nemen voor ϕ. Maak zelf de grafiek met: > restart; interface(warnlevel=0): with(plots): r:=2*sqrt(2*cos(2*phi));
√ p r := 2 2 cos(2 φ)
> polarplot([r,phi,phi=0..2*Pi], numpoints=1000,scaling=constrained); De grafiek wordt hier niet afgedrukt. Toelichting: Er worden hier met de optie numpoints meer punten berekend dan normaal, omdat anders de grafiek bij de oorsprong niet mooi wordt. Het opgegeven interval van de onafhankelijke variabele wordt altijd opgedeeld in een aantal intervallen en er worden standaard 50 punten berekend waarmee de grafiek in de meeste gevallen vastgelegd wordt, waarna de punten verbonden worden. Echter er worden in sommige gevallen, als daar aanleiding toe is, ook vaak meer punten gegenereerd om de grafiek op te bouwen. In dit geval zullen er punten verloren gaan, omdat er bij bepaalde waarden van ϕ geen functiewaarden horen. Als je beslist 50 punten wilt laten berekenen, geef je de optie adaptive=false. Met de optie numpoints is het aantal te genereren punten nog extra te be¨ınvloeden. Door op de grafiek te klikken en een van de knoppen te gebruiken waarmee de punten zichtbaar worden, kun je zien hoeveel en welke punten er uiteindelijk gegenereerd worden. Ook met de optie style=point bij het plotcommando kan er aangegeven worden dat de punten niet verbonden moeten worden. Zie ook voorbeelden 2.16 en 2.38. Voorbeeld 2.12 Spiraal met poolco¨ordinaten In de mechanica komt het vaak voor dat de hoek ϕ die doorlopen wordt een functie is van de tijd t. De straal wordt daarmee ook automatisch een functie van de tijd. r(t) = e−
ϕ(t) 4
ϕ(t) = 0.5 + 2t
en
De invoer van een dergelijke functie lijkt op deze manier nog veel meer op die van een parameterkromme zoals besproken in paragraaf 2.6. > restart; interface(warnlevel=0): with(plots): r:=exp(-phi/4); phi:=0.5+2*t; φ
r := e(− 4 )
2 · Grafieken
35
φ := 0.5 + 2t > polarplot([r,phi,t=0..10],scaling=constrained); Zie figuur 2.10. polaire figuur van r(phi) waarbij de hoek een functie is van de tijd en t loopt van 0 tot 10 0.6 t=0
0.4 0.2 –0.4 –0.2 0
0.2
0.4
0.6
–0.2
Figuur 2.10
Toelichting: Zie op de cd-rom voor het script van de volledige figuur met de tekst erbij en voorbeeld 2.37 waar uitgelegd is hoe de grafiek van tekst kan worden voorzien. De spiraal loopt van buiten naar binnen. Naarmate de waarde van t groter wordt, wordt de straal r juist kleiner. Op tijdstip t = 0 begint de waarde van de hoek φ bij 0.5 radialen. Voorbeeld 2.13 Cirkel met poolco¨ordinaten Het tekenen van een cirkel met middelpunt O is vrij gemakkelijk met behulp van polarplot. Probeer dit zelf uit met het intikken van de volgende opdracht. > restart; with(plots): polarplot([3,phi,phi=0..2*Pi]); Voorbeeld 2.14 Meer functies met poolco¨ordinaten om te oefenen Let op welke waarden van ϕ geoorloofd zijn. De straal r is steeds positief! r(ϕ) = 1 − cos(ϕ)
ϕ
r(ϕ) = e− 2
1 cos(2 ϕ)
r(ϕ) =
2 sin(ϕ) 1+cos(2 ϕ) 1 1−cos(ϕ)
r(ϕ) = 1 − 2 cos(ϕ)
r(ϕ) = √
r(ϕ) =
r(ϕ) = 2 sin(ϕ)
r(ϕ) = ϕ
r(ϕ) = 2 cos(ϕ)
2.8 Impliciete functies Een bekend voorbeeld is de vergelijking van de cirkel x2 + y2 = 4. Deze vergelijking kan opgevat worden alsof y (impliciet) een functie is van x. De vergelijking kan dan ook als volgt genoteerd worden: x2 + y(x)2 = 4 waarmee nog duidelijker is dat y impliciet als functie van x wordt opgevat in deze vergelijking. Vaak is het lastig om uit zo’n vergelijking de functie y expliciet uit te drukken in x en soms is dat√zelfs onmogelijk. Als je uit de bovenstaande vergelijking de y uitdrukt in x, komt er y = ± 4 − x2. Er is in dit geval trouwens geen sprake
36
Handleiding Maple 10
van een echte functie, want dan zou moeten gelden dat er bij iedere x-waarde maar e´ e´ n y-waarde hoort. Vandaar dat zo’n relatie tussen y en x liever in de vorm van een vergelijking geschreven wordt. Een dergelijke relatie tussen twee variabelen kan in een grafiek zichtbaar gemaakt worden. Hiervoor is het commando implicitplot uit het plotpakket nodig. Als je meer grafieken in e´ e´ n figuur wilt tekenen, geef je een verzameling of een lijst vergelijkingen op. Bijvoorbeeld implicitplot({verg1,verg2},x=-4..4,y=-4..4); waarbij het beslist noodzakelijk is een interval voor de horizontale as e´ n een interval voor de verticale as op te geven. Het programma zoekt daarbinnen combinaties (x, y) die voldoen aan de vergelijking. Het is ook mogelijk om een impliciete functie met smartplot te plotten. Voer een vergelijking met twee variabelen in, klik in de uitvoer met de rechtermuisknop op deze vergelijking en er opent zich een menu waarbij gekozen kan worden voor 2-D Implicitplot. Nadat de figuur getekend is, kan met de rechtermuisknop van alles bijgesteld worden. Waarschijnlijk moeten met Axes en vervolgens Ranges de waarden van de intervallen langs de assen aangepast worden om een geschikte grafiek te krijgen. Standaard is namelijk steeds het interval [−10, 10] ingesteld voor beide variabelen en dat is lang niet in alle gevallen het meest geschikte interval. Genoemde muisklikacties worden niet bewaard bij het opslaan van het werkblad! Het resultaat wel, als je de output mee opslaat. Het heeft dus voordelen om eenvoudig het commando in te tikken en dan eventueel in het commando zelf dingen te veranderen om een goede grafiek te krijgen. Zie voor meer informatie over smartplot paragraaf 1.4.2. Voorbeeld 2.15 De grafiek van de impliciete functie y2 (x + 1) = x2 − y > restart; interface(warnlevel=0): with(plots): C:=y^2*(x+1)=x^2-y;
C := y2 (x + 1) = x2 − y
> implicitplot(C,x=-2..10,y=-4..4); Zie figuur 2.11.
Grafiek van de impliciete functie y² (x + 1) = x² - y 4 y
2
2
4
x
6
8
10
–2 –4
Figuur 2.11
Toelichting: Bij het commando implicitplot is het belangrijk dat je een geschikt interval voor x e´ n voor y neemt. Er worden namelijk in dit gebied punten (x, y) gezocht die aan de vergelijking y2 (x + 1) = x2 − y voldoen en daarna worden deze punten met elkaar verbonden. Het commando werkt ook vlekkeloos als de vergelijking opgegeven was als y(x)2 (x + 1) = x2 − y(x) waarmee in feite n´og duidelijker is aangegeven dat y als impliciete
2 · Grafieken
37
functie van x optreedt. Deze informatie zal van pas komen bij het grafisch weergeven van de oplossing van een differentiaalvergelijking (zie voorbeeld 11.3). Als de intervallen niet goed gekozen worden, kan het zijn dat er veel punten worden geprobeerd te berekenen buiten de eigenlijke grafiek en daardoor kan het programma mogelijk te weinig informatie krijgen om de grafiek goed te tekenen. Je hebt dan kans dat de grafiek er niet meer vloeiend uitziet of zelfs hoekig geplot wordt. Dit is in het volgende voorbeeld te zien.
Voorbeeld 2.16 Meer punten genereren bij een impliciete functie Een voorbeeld van een ellips die geplot wordt met een veel te groot interval voor de variabelen. > restart; interface(warnlevel=0):with(plots): C:=1/4*x^2+y^2=2; C :=
x2 + y2 = 2 4
> implicitplot(C,x=-10..10,y=-10..10,scaling=constrained); Zie figuur 2.12.
Ellips geplot in een te groot interval zodat deze hoekig wordt 1 y
–2
–1
0.5 0 –0.5
1
2 x
–1
Figuur 2.12
Toelichting: Hier was dus duidelijk het interval voor x en y te groot geweest en gaan er in feite punten ”verloren”, zodat er te weinig informatie overblijft om de grafiek vloeiend te tekenen. Mogelijke oplossingen zijn: de intervallen voor de variabelen bij te stellen of meer punten te laten berekenen door de optie numpoints=500 aan het plotcommando mee te geven. Zie ook voorbeeld 2.11 waar gebruikgemaakt wordt van deze optie om meer punten te laten berekenen. Voorbeeld 2.17 Voorbeelden van impliciete functies om te oefenen Besteed bijzondere aandacht aan het opgeven van de intervallen op horizontale en verticale as en stel eventueel het aantal te berekenen punten in met de optie numpoints, zoals ook in voorbeeld 2.11 gedaan is.
38
Handleiding Maple 10
x2 − 14 y2 = 10
x y (y − 1) (x − 1) = 20
y2 + x y = 10 x
ex y = x2 + 2 x y x3 + y3 = 6 x y
x2 − 2 x2 y + 3 y2 = 4
2.9 Functies van twee variabelen Functies van twee variabelen worden vaak verward met impliciete functies die in de vorm van een vergelijking gegeven zijn. Let dus goed op in welke vorm de functie gegeven is. Voor het tekenen van de grafiek van een functie van twee variabelen zijn er drie assen nodig! Voor een gewone functie van e´ e´ n variabele was er altijd e´ e´ n as nodig voor de variabele en e´ e´ n as voor de functiewaarden. Echter bij functies van twee variabelen hebben we om te beginnen al twee assen nodig voor de variabelen en verder nog een functie-as. Voor de functie-as wordt meestal de Z-as genomen. De variabelen zijn vaak x en y, dus deze variabelen worden dan uitgezet langs de X- en Y -as. Het commando voor het tekenen van driedimensionale grafieken die een oppervlak voorstellen, is bij Maple het commando plot3d. Dit commando behoort tot de standaardcommando’s en er hoeft niet een speciaal pakket geactiveerd te worden. Ook handig om te weten is dat een 3d-grafiek duidelijker wordt als je voor axes=boxed kiest. Met het klikken in de grafiek en slepen met de muis kan de ori¨entatie veranderd worden. In de linkerbovenhoek van het scherm zijn steeds de waarden van de ori¨entatieparameters ϑ en ϕ te zien. Voorbeeld 2.18 Ruimtefiguur van de functie f (x, y) = x2 y tesamen met het 0-niveau > restart; f:=x^2*y; f := x2 y > plot3d({f,0},x=-10..10,y=-10..10,axes=boxed, title="Ruimtefiguur met nul-niveau",orientation=[30,75]);
Zie figuur 2.13. Ruimtefiguur f = x²y met nul-niveau
1000 500 0 –500 –1000 –10
–5
0 y
5
10
5
0x
–5
–10
Figuur 2.13
Toelichting: Merk op dat er een verzameling van twee grafieken getekend is in figuur 2.13, namelijk de grafiek van f (x, y) = x2 y en de grafiek z = 0. Verder zijn hier een paar voorbeelden van opties gebruikt die met het plotcommando
2 · Grafieken
39
meegegeven kunnen worden. Deze manier van aanpassen van de presentatie kan ook met de muis via het menu aangebracht worden, behalve die van de titel. Nog een voorbeeld van een functie met twee variabelen vind je in voorbeeld 2.24 waar de optie view wordt besproken. TIP: oppervlakken in de ruimte kunnen ook geformuleerd worden door middel van een vectorvoorstelling (of parametervoorstelling) met twee vrijheidsgraden. In bovenstaand voorbeeld zou dat de parametervoorstelling [x, y, f (x, y)] kunnen zijn. Om te plotten hoef je dan alleen maar het volgende te doen: > plot3d([x,y,f],x=-10..10,y=-10..10); Dit plot-comando accepteert behalve lijsten ook vectoren. Een toepassing daarvan is voorbeeld 8.16 waar er sprake is van een raakvlak aan het functievlak in de ruimte. 2.9.1
Contourplot
Zoals gezegd worden functies van twee variabelen vaak verward met impliciete functies die in de vorm van een vergelijking gegeven zijn. Echter er is wel een verband tussen deze twee verschillende wiskundige objecten. Voorbeeld 2.19 Het verband tussen contourplot en implicitplot We vergelijken in dit voorbeeld de functie van twee variabelen f (x, y) = x2 − 2 x2 y + 3 y2 met de impliciete functie x2 − 2 x2 y + 3 y2 = 10. > restart; interface(warnlevel=0): with(plots):f:=x^2-2*x^2*y+3*y^2; f := x2 − 2 x2 y + 3 y2
Zie figuur 2.14. Contourplot functie van twee variabelen met ’hoogtelijnen’
150 100 50 –4
0 –50 –4
–2
2 0 y
2
4
–2 0 x
4
Figuur 2.14
> C:=seq(f=10*k,k=1..3); C := x2 − 2 x2 y + 3 y2 = 10, x2 − 2 x2 y + 3 y2 = 20, x2 − 2 x2 y + 3 y2 = 30
> implicitplot({C},x=-4..4,y=-4..4); Zie figuur 2.15.
40
Handleiding Maple 10
De contourlijnen (’hoogtelijnen’) geprojecteerd op het x,y-vlak 4 3 y
2 1
–4
–2 –1
2 x
4
–2 –3
Figuur 2.15
Toelichting: De functie van twee variabelen wordt met contourplot3d in een driedimensionale grafiek gevisualiseerd. Goed te zien zijn de contouren die punten met gelijke functiewaarden verbinden (hoogtelijnen). Dit had ook wel met plot3d gekund met daarna enkele acties met de knoppen van de contextbalk of met een paar opties, bijvoorbeeld met > plot3d(f,x=-4..4,y=-4..4,axes=boxed,style=patchcontour,contours=25, orientation=[21,60],labels=[X,Y,Z]); Echter op de manier met contourplot is de presentatie nog iets beter naar je hand te zetten. Je kunt met een paar opties zoals filled=true en coloring nog meer sturen (zonder deze opties zie je alleen de contouren). Het is ook mogelijk het aantal contourlijnen op te geven en de presentatie nog meer naar je hand zetten. Wat er verder nog gebeurt, is het defini¨eren van een aantal impliciete functies zoals x2 − 2 x2 y + 3 y2 = 10 , x2 − 2 x2 y + 3 y2 = 20 en x2 − 2 x2 y + 3 y2 = 30. Dit is gedaan met behulp van het commando seq waarmee je de rij C kunt maken (zie paragraaf 4.6). Een impliciete functie in de vorm van een vergelijking met twee variabelen x en y is een kromme in het x,y-vlak (zie paragraaf 2.8). Vervolgens wordt de verzameling van al deze impliciete functies {C} in e´ e´ n figuur bij elkaar gebracht met behulp van implicitplot. Vergelijk nu eens de vormen van de krommen in de beide figuren: figuur 2.14 en 2.15.
2.9.2 Doorsnijdingen met een vlak Op een gemakkelijke manier is het tegenwoordig mogelijk om de grafiek van een functie van twee variabelen (een 3d-grafiek) te doorsnijden met verschillende (platte) vlakken. Het kan met het commando Crossection uit het MultivariateCalculus-subpakket van het Student-pakket. Dit dient dan eerst geactiveerd te worden met with(Student[ MultivariateCalculus]):. Je kunt echter ook in e´ e´ n keer eerst de tutor in de vorm van een Maplet bestuderen > Student:-MultivariateCalculus:-CrossSectionTutor(); zie figuur 2.16. Onder in de tutor staat het commando voor de grafiek om deze door middel van selecteren met Ctrl-c en Ctrl-v op te kunnen nemen in het werkblad. De parabolo¨ıde f = x2 + y2 wordt doorsneden met 3 platte vlakken die opgegeven worden in de vorm van een lineaire vergelijking, dus bijvoorbeeld met x + y = 0. Alleen doorsnijdingen met platte vlakken zijn mogelijk.
2 · Grafieken
41
Figuur 2.16
´ figuur 2.10 Verschillende soorten grafieken in e´ en We hebben al gezien in de vorige paragrafen hoe je een verzameling grafieken in e´ e´ n figuur maakt. Zo’n verzameling kon meegegeven worden aan een plotcommando. Je was dan echter wel gebonden aan grafieken die met hetzelfde plotcommando gemaakt werden. Het is ook mogelijk om een verzameling totaal verschillende grafieken toch in e´ e´ n figuur te krijgen waarbij de assenstelsels samenvallen. Dit gaat met display({..,..,..}) uit het plotpakket. Het vereist dan wel enige voorbereiding. De grafieken die later samengevoegd worden in e´ e´ n assenstelsel moeten allemaal stuk voor stuk apart worden gedefinieerd en opgeslagen, elk onder een eigen naam. Voorbeeld 2.20 Impliciete functie en functie in poolco¨ordinaten De grafieken van de impliciete functie C : x3 − 3 x y2 = 1 en de functie in poolco¨ordinaten r(ϕ) = 6 − 5 cos(ϕ) samen in e´ e´ n figuur. > restart;interface(warnlevel=0): with(plots): C:=x^3-3*x*y^2=1; r:=6-5*cos(phi);
C := x3 − 3 x y2 = 1 r := 6 − 5 cos(φ)
> p1:=implicitplot(C,x=-5..5,y=-5..5,thickness=3,color=black, legend="impliciete functie"): p2:=polarplot([r,phi,phi=0..2*Pi],linestyle=4,color=black, legend="functie in poolco¨ ordinaten"): display({p1,p2},scaling=constrained, title="Twee verschillende soorten grafieken");
Zie figuur 2.17. Toelichting: Let op! De grafieken worden hier ingevoerd met een naam (hier p1 en p2 ) en afgesloten met een dubbele punt! De grafieken worden dus stuk voor stuk apart opgeslagen als een verzameling punten. Met display kan deze verzameling voorbereide plots in e´ e´ n figuur bij elkaar gebracht worden. Het heeft enorm veel voordelen om deze manier vaker te hanteren. Eigenschappen van grafieken met kleur en stijl kunnen dan geheel voorbereid worden! Ook de legenda kan al voorbereid worden.
42
Handleiding Maple 10
Twee verschillende soorten grafieken 6 4 y 2 –10
–6 –4 –2 x
–2 –4 –6
4
impliciete functie functie in poolcoördinaten
Figuur 2.17
Met dit commando display kunnen natuurlijk ook grafieken van dezelfde soort bij elkaar gevoegd worden en ook wel meer dan twee. Hier zien we meteen dat lijndikte en lijnstijl voor beide grafieken verschillend gemaakt kunnen worden, ter onderscheid. Zie in de index van dit boek bij display voor nog meer voorbeelden. Door met de rechtermuisknop op de grafiek te klikken heb je nog de mogelijkheid om dingen aan te passen, echter deze muisacties worden dan natuurlijk niet in het script van de figuur opgeslagen. TIP: sluit liever niet af met een puntkomma bij het vooraf defini¨eren van de afzonderlijke figuren, want dan krijg je de code van al deze punten te zien, wat je niet wilt! Voorbeeld 2.21 Vlakken en lijnen in de ruimte In voorbeeld 9.9 is een grafiek nodig van twee vlakken met een snijlijn om een dubbelintegraal te illustreren. Hoe de grafiek daarvan (figuur 2.18) gemaakt wordt, kunnen we hier alvast laten zien. > restart; interface(warnlevel=0): with(plots): f:=5*x-2*y; y1:=solve(f=0,y); p1:=plot3d(f,x=0..1,y=0..1): p2:=plot3d(0,x=0..1,y=0..1,color=gray,style=patchnogrid): p3:=spacecurve([x,y1,0],x=0..1,thickness=5,color=black, view=[0..1,0..1,-5..5],orientation=[-107,45]): display({p1,p2,p3},axes=boxed,labels=[X,Y,Z], title="Twee snijdende vlakken");
f := 5 x − 2 y 5x y1 := 2 Zie figuur 2.18. Toelichting: De snijlijn die in het vlak z = 0 ligt, moet eerst in een vectorvoorstelling (parametervoorstelling) in de R3 geformuleerd worden met e´ e´ n parameter! Dus [x(t), y(t), 0]. Overigens kunnen de vlakken f = 5 x − 2 y en z = 0 eventueel als alternatief ook wel met een parametervoorstelling geformuleerd worden. Daarvan is een toepassing te zien in voorbeeld 8.16.
2 · Grafieken
43
twee snijdende vlakken 4 2 Z 0 –2 –4 1 0.8 0.6 Y 0.4 0.2 0 0
0.2
0.4
0.6 X
0.8
1
Figuur 2.18
De opties voor de labels langs de assen en het assenstelsel boxed kunnen het beste bij het commando display opgegeven worden. Verder is hier ook nog een voorbeeld van de optie patchnogrid die aan het grondvlak z = 0 is meegegeven.
2.11 Asymptoten Bij het tekenen van grafieken van een functie van e´ e´ n variabele is het in principe voldoende om alleen het domein op te geven van die variabele. Zie paragraaf 2.5. Als er echter verticale asymptoten in de grafiek voorkomen, is het verstandig om tevens het interval op de verticale as op te geven, zodat het plaatje niet teveel in elkaar gedrukt wordt. De asymptoot wordt dan meestal w´el getekend door Maple, hoewel deze eigenlijk niet tot de grafiek behoort; de asymptoot zou eigenlijk gestippeld moeten worden of helemaal niet weergegeven moeten worden. Met de optie discont=true kan bewerkstelligd worden dat de asymptoot niet getekend wordt. Zie ook voorbeeld 2.3 bij de stapfunctie. De punten aan weerskanten van de discontinu¨ıteit worden dan door het programma niet met elkaar verbonden. Voorbeeld 2.22 Verticale asymptoot x Gegeven is de functie f (x) = 1−2 x+1 met een verticale asymptoot x = −1. > restart; interface(warnlevel=0): f:=(1-2*x)/(x+1); with(plots): 1 − 2x f := x+1 > plot(f,x=-3..4,view=[-3..4,-15..15]); Op deze manier is het beperkte interval op de verticale as gegarandeerd. (De figuur is niet afgedrukt.) In het volgende wordt meteen ook de mogelijkheid getoond om de asymptoot te stippelen met linestyle=2. > p1:=plot(f,x=-3..4,-15..15,linestyle=2): p2:=plot(f,x=-3..4,-15..15,color=black,thickness=2,discont=true): display({p1,p2},title="discontinue functie met verticale asymptoot");
Zie figuur 2.19.
44
Handleiding Maple 10
discontinue functie met verticale asymptoot 15 10 y 5 –3
–2
–1
1
2 x
3
4
–5 –10 –15
Figuur 2.19
Toelichting: Er kan gewerkt worden met de optie view, zoals in voorbeeld 2.22, maar er kan ook een interval opgegeven worden voor de verticale as. Dit is om te voorkomen dat het plaatje wordt platgedrukt. Als verder de optie discont=true wordt meegegeven, wordt de asymptoot niet getekend. De optie view wordt vaak gebruikt als er geen andere manier is om intervallen aan te passen, bijvoorbeeld bij functies van twee variabelen in voorbeeld 2.24. Door de twee grafieken met display over elkaar heen te leggen, wordt bewerkstelligd dat de asymptoot gestippeld wordt weergegeven. Zie voor meer informatie over display paragraaf 2.10. Voorbeeld 2.23 Snel commando voor rationale functies Er bestaat in het subpakket Precalculus binnen het Student-pakket nog een mooi commando om in e´ e´ n keer inzicht te geven in een rationale functie van e´ e´ n variabele waar meestal asymptoten bij voorkomen. De nodige pakketten moeten daarvoor wel eerst geactiveerd worden. Zie bij de helpfunctie paragraaf 1.8 van hoofdstuk 1 enige informatie over pakketten. > restart; interface(warnlevel=0):with(Student): with(Precalculus): f:=(3*x^2+2*x-1)/(x+2); RationalFunctionPlot(f );
f :=
3 x2 + 2 x − 1 x+2
Zie figuur 2.20. > with(Calculus1): Asymptotes(f, x); [y = 3 x − 4, x = −2] Toelichting: Geheel automatisch verschijnt er bij gebruik van RationalFunctionPlot in de grafiek een titel met informatie over de functie en het interval. Er hoeft ook geen interval opgegeven te worden voor de verticale as, maar er kan eventueel nog wel een optie view bij gegeven worden als dat wenselijk is, dus bijvoorbeeld RationalFunctionPlot (f,view=[-6..6,=20..20]). Verder verschijnen ook geheel automatisch de asymptoten in de grafiek gestippeld en wel en met verschillende kleuren, die later nog ingesteld kunnen worden. (Zie voor meer informatie daarover de website behorende bij het boek.) Als je dan ook nog het subpakket Calculus1 opent, kunnen de vergelijkingen van de asymptoten opgevraagd worden met Asymptotes. Ook een aanrader is in hetzelfde Precalculus-subpakket (te activeren met with(Student):
2 · Grafieken
45
Plot of f(x) = (3*x^2+2*x–1)/(x+2) on the Interval [–10, 10] 30 20 10 –10 –8
–6
–4
–2
2
4
x
6
8
10
–10 –20 –30
Figuur 2.20
with(Precalculus): ) ook eens RationalFunctionTutor( ); in te tikken. Je komt dan in een Maplet terecht (een soort applet) waarin je dingen kunt veranderen en waarin ook de vergelijkingen van de asymptoten gegeven worden. Onder in dit Maplet vind je het commando om hetzelfde in e´ e´ n keer te kunnen doen als je dit met copy en paste (Ctrl-c en Ctrl-v) overneemt en in je werkblad voegt. Meer informatie over dit Student-pakket is te vinden bij de animaties paragraaf 2.12 en op de website behorende bij dit boek. Voorbeeld 2.24 Oneindige discontinu¨ıteit bij functie van twee variabelen y De grafiek van de functie f (x, y) = x2 +y 3 is voor (x, y) = (0, 0) niet gedefinieerd. > restart; f:=y/(x^2+y^3); f :=
y x2 + y3
> plot3d(f,x=0..2,y=0..2,view=[0..2,0..2,0..5],axes=boxed); Zie figuur 2.21.
5 4 3 2 1 0
2
1.6
1.2 0.8 y 0.4
0
0.4
0.8
1.2 x
1.6
2
Figuur 2.21
Toelichting: De enige manier om in deze situatie ervoor te zorgen dat de figuur niet platgedrukt wordt, is het werken met view. Zie verder voor dit soort functies paragraaf 2.9.
46
Handleiding Maple 10
2.12 Animaties Met animaties is het mogelijk om presentaties te verlevendigen en visualisaties te maken van begrippen die anders te veel woorden kosten om iets duidelijk te maken. Daarom is het belangrijk dat er op deze plaats enige aandacht aan besteed wordt. Er zijn in feite drie soorten animaties. Ten eerste is het instructief om te zien hoe de grafiek van een functie opgebouwd wordt als de variabele het interval doorloopt. Als een functie behalve een variabele ook nog een parameter bevat, kan in een animatie gevisualiseerd worden hoe de grafiek verandert als de parameter een bepaald interval doorloopt. Ten derde kan er ook nog een aantal specifieke grafieken worden voorbereid, die dan achtereenvolgens als een filmpje kunnen worden ‘afgedraaid’. In feite komen deze drie manieren allemaal op dit laatste idee neer. Verder is er een groot aantal animaties beschikbaar in het Student-pakket en ten slotte zijn er op de website bij dit boek in het bestand Animaties veel voorbeelden te zien en vrij te kopi¨eren. Zodra een animatie op het scherm verschijnt, klik je met de muis in de grafiek en wordt de contextbalk aangepast. Er komt een aantal knoppen beschikbaar en de animatie kan geactiveerd worden met ‘play’ (zie figuur 2.22). Er zijn ook mogelijkheden om de animatie langzamer te laten verlopen, beeld voor beeld te bekijken (frames) of in omgekeerde richting af te draaien, enzovoort. Zorg dat je Balloon Help (blz. 3) aan hebt staan om te weten wat de betekenis is van de knoppen.
Figuur 2.22
Er volgt hier nu een aantal voorbeelden zonder grafiek. Op de cd-rom is een en ander na te ‘spelen’.
2.12.1
Het doorlopen van de grafiek
Bij animaties van het soort waarbij de grafiek in het platte vlak wordt doorlopen, worden er opvolgend standaard 16 grafieken (frames) getoond die bestaan uit standaard 50 punten. (Het aantal frames kan ook opgegeven worden; zie voorbeeld 2.28.) Als bijvoorbeeld een grafiek wordt gemaakt waarbij x loopt van 0 tot 10, worden de 50 punten eerst verdeeld over een klein interval van de variabele en naarmate je verder komt bij het doorlopen van de grafiek, worden de punten bij latere frames verdeeld over steeds grotere intervallen. Als de grafiek
2 · Grafieken
47
op het laatst wat hoekig wordt, kun je dit beter oplossen met het verhogen van numpoints (zie voorbeeld 2.11 en 2.16) dan met het verhogen van het aantal frames. Het effect is goed te zien als je bij willekeurig een van de animaties in de voorbeelden als extra optie bij het commando de optie style=point neemt. Voorbeeld 2.25 Het doorlopen van de grafiek alsof je de grafiek zelf tekent 2 +1 wordt de grafiek doorlopen waarbij met behulp van de optie view Van de functie f (x) = xx−1 het verticale interval beperkt wordt met het oog op de verticale asymptoot (zie voor view ook paragraaf 2.11). > with(plots):animatecurve((x^2+1)/(x-1),x=-10..10, view=[-10..10,-10..10],style=point); De enige manier om ervoor te zorgen dat de grafiek niet platgedrukt wordt, is met view. De andere manier, met het opgeven van het interval op de verticale as, zal niet werken bij dit commando. Ook werkt de optie discont=true hier niet. TIP: hier is de optie style=point meegegeven om te laten zien welke punten er achtereenvolgens worden gegenereerd bij de verschillende ”frames”. Als je de animatie langzaam afspeelt, zie je dat de 50 punten eerst over een klein interval verdeeld worden en vervolgens steeds over een groter interval. Voorbeeld 2.26 Twee of meer animaties in e´ e´ n Het is ook mogelijk om een verzameling (met accolades) van twee of meer grafieken tegelijk in een animatie op te nemen: > with(plots):animatecurve({x-x^3,sin(x)},x=0..Pi/2); De individuele eigenschappen van elke grafiek zijn dan wat moeilijker te verwezenlijken. De krommen die doorlopen worden, hebben dan bijvoorbeeld allemaal dezelfde kleur. Een lijst met functies opgeven bij animatecurve is namelijk niet mogelijk. In het volgende voorbeeld is daarvoor een oplossing. Voorbeeld 2.27 Meer animaties met verschillende stijlen in e´ e´ n In dit voorbeeld wordt met behulp van display een mogelijkheid gegeven om verschillende stijlen voor de grafieken te gebruiken in de situatie van meer grafieken in e´ e´ n animatie. Zie voor display ook paragraaf 2.10. > restart; with(plots): p1:=animatecurve( x-x^3, x=0..Pi/2,color=blue,thickness=3 ): p2:=animatecurve(sin(x),x=0..Pi/2,color=red, thickness=1,labels=["X","Y"]): display({p1,p2},title="twee grafieken die worden doorlopen als x toeneemt");
Voorbeeld 2.28 Het doorlopen van een parameterkromme (grafiek van een vectorfunctie) > with(plots):animatecurve([t-t^3,sin(t),t=0..Pi/2],color=black, thickness=2,frames=50); Met het opgeven van het aantal frames, (standaard 16) worden er meer beelden geproduceerd die achterelkaar verschijnen. Het duurt dan ook voor standaardsnelheid iets langer voordat de animatie doorlopen is. De animatie kan overigens wel sneller afgedraaid worden met een van de knoppen (zie figuur 2.22). De grafiek van een complexe functie (van een re¨ele variabele) kan op deze manier zelfs getekend worden in het complexe vlak, zoals in voorbeeld 10.10 te zien is.
48
Handleiding Maple 10
Voorbeeld 2.29 Het doorlopen van een grafiek met poolco¨ordinaten Bij poolco¨ordinaten is het mogelijk om bijvoorbeeld de kromme r = 1 − cos(ϕ) te laten doorlopen bij toenemende hoek ϕ. Er kan dan echter niet van polarplot gebruikgemaakt worden. Wel is het mogelijk door middel van een extra optie coords=polar bij het commando animatecurve toch het programma te laten weten dat het om poolco¨ordinaten gaat: > with(plots): r:=1-cos(phi); animatecurve([r,phi,phi=0..2*Pi],coords=polar); 2.12.2
Functies met parameters in een animatie
In feite is het commando animate, dat in de volgende voorbeelden aan de orde komt, h´et commando waar al dit soort animaties mee gedaan kunnen worden. Als je een grafiek kunt maken (impliciet, poolco¨ordinaten, ruimtekrommen, vlakken in de ruimte, enzovoort) met alle opties die maar mogelijk zijn (kleuren, lijnstijlen, assen, labels, titel, enzovoort), kun je deze ook animeren door er een parameter bij te betrekken en er animate voor te zetten. Ook alle vorige situaties van paragraaf 2.12.1, bij het doorlopen van de grafiek, kunnen in feite met het commando animate verwezenlijkt worden door de parameter in het interval te verwerken (voorbeeld 2.33). Voor de animatie zelf zijn ook weer bepaalde mogelijkheden om dingen aan te passen zoals een achtergrondgrafiek, de waarde van de frame-parameter waarvoor gekozen kan worden of deze wel of niet in beeld verschijnt en ten slotte het aantal frames dat ingesteld kan worden. Standaard is bij het commando animate het aantal frames 25 en dat is meestal ruim voldoende voor een goede animatie. Voorbeeld 2.30 Eenvoudig voorbeeld: de amplitude van de sinus Stel je hebt een functie van twee variabelen waarbij e´ e´ n van de variabelen als parameter aangemerkt kan worden, bijvoorbeeld de functie f (x) = A sin(x) waarbij de amplitude A de parameter is (we noemen dat dan de frame-parameter). De bedoeling is nu om achtereenvolgens grafieken te maken waarbij de waarde van A bijvoorbeeld loopt van 1 tot 3. In een ’filmpje’ worden dan achtereenvolgens 25 beelden van de grafiek met een steeds groeiende waarde van de frame-parameter A vertoond. De structuur van het commando is als volgt: > with(plots): f:=A*sin(x); animate(plot,[f,x=0..2*Pi],A=1..3); Toelichting: Je wilt een bepaalde grafiek van f animeren. (De functie f moet dan wel een parameter bevatten.) Alles wat het plotten van de functie betreft staat tussen de vierkante haken. Deze animatie is gebaseerd op plot(f,x=0..2*Pi). Daarbuiten staan de dingen die met het animeren te maken hebben, zoals het interval van de frame-parameter. Het resultaat is te zien in figuur 2.22 waar ook te zien is dat boven in de grafiek de waarde van de frame-parameter A op ieder moment tijdens de animatie wordt weergegeven. Voorbeeld 2.31 Animatie met achtergrond en plotopties Het vorige voorbeeld 2.30 wordt nu iets uitgebreid om te laten zien dat alles wat je wilt mogelijk is. Voor het overzicht van de structuur kun je het beste eerst de functie defini¨eren, daarna nog een paar opties voor de grafiek en apart nog wat opties voor de animatie. De structuur van het commando wordt dan wat duidelijker. > animate(plot,[f,x=0..2*Pi,OptiesGrafiek],A=1..3,OptiesAnimatie); Weer dezelfde sinus waarvan de amplitude A groeit van 1 tot 3. > restart; with(plots): f:=A*sin(x); f := A sin(x)
2 · Grafieken
49
> OptiesGrafiek:=color=black,thickness=2,labels=[X,Amplitude], labeldirections=[horizontal,vertical], title="Amplitude A van de sinus wordt groter": achtergrond:=plot(sin(x),x=0..2*Pi,linestyle=2,color=red): animate(plot,[A*sin(x),x=0..2*Pi,OptiesGrafiek],A=1..3, background=achtergrond,frames=30);
Zie figuur 2.23.
Amplitude
Amplitude A van de sinus wordt groter A = 1.833 1.5 1 0.5 0 –0.5
1
2
3 X
4
5
6
–1 –1.5
Figuur 2.23
Toelichting: Eerst wordt het plotpakket geactiveerd en de functie f (x) gedefinieerd met parameter A. Alle opties die we nodig hebben voor de grafiek, zoals labels, kleur en titel kunnen we vooraf in een rij defini¨eren (zie voor meer informatie over rijen paragraaf 4.6). Bij dit soort animaties is het ook mogelijk een achtergrondgrafiek voor te bereiden en bij de opties voor animatie kun je dan deze achtergrond als background opgeven. Het aantal frames kan opgegeven worden en als je dat niet doet, komen er standaard 25 frames. Verder wijst het zich vanzelf en kan de animatie in gang gezet worden (zie het begin van paragraaf 2.12). Boven in beeld komt de titel te staan die bij de plotopties afgesproken was en daaronder automatisch de waarde van de parameter A die steeds verandert tijdens de animatie. Deze laatste kan eventueel weggelaten worden met de optie paraminfo=false bij de animatieopties. Voorbeeld 2.32 Animatie in de ruimte In dit voorbeeld kun je zien dat het in het geheel niet uitmaakt wat voor soort grafiek het is, plot3d, implicitplot, polarplot of spacecurve of iets anders. Hier volgt een voorbeeld van een functie van twee variabelen met nog een parameter t erbij. Het basiscommando is dan plot3d. > restart;interface(warnlevel=0):with(plots):f:=1/((x-t)^2+(y-t)^2+1); 1 f := (x − t)2 + (y − t)2 + 1 > PlotOpties:=axes=boxed,orientation=[110,50],style=patchnogrid, title="Muis onder het kleed"; animate(plot3d,[f,x=-5..5,y=-5..5,PlotOpties],t=-5..5);
50
Handleiding Maple 10
Voorbeeld 2.33 De frame-parameter in het plotinterval 2 +1 Hetzelfde voorbeeld van de functie f (x) = xx−1 met de verticale asymptoot als voorbeeld 2.25, maar nu met meer mogelijkheden. De frame-parameter is nu in het interval opgenomen en niet in de functie zelf. Zo krijg je hetzelfde effect als met animatecurve: dat de grafiek achtereenvolgens doorlopen wordt. > restart; with(plots): f:=(x^2+1)/(x-1): achtergrond:=plot([1,t,t=-10..10],linestyle=2,color=red): animate(plot,[f,x=-10..A,-10..10,discont=true,thickness=2, color=blue],A=-10..10,background=achtergrond);
Toelichting: De functie wordt gedefinieerd. Vervolgens wordt de achtergrond (de verticale aymptoot) voorbereid met lijnstijl 2 (gestippeld). In dit geval wordt gebruikgemaakt van een parametervorm die het meest geschikt is voor het modelleren van een rechte lijn. Verder kun je zien dat de frame-parameter A in het plotinterval voorkomt. Ook zijn de bekende plotopties weer te gebruiken zoals discont=true voor het n´ıet-plotten van de verticale asymptoot (zie ook voorbeeld 2.22). 2.12.3
Gebruik van display
Met het gebruik van display kunnen er verschillende grafieken in e´ e´ n figuur worden samengebracht. Er kunnen ook meerdere geanimeerde grafieken op deze manier samengebracht worden in e´ e´ n figuur. In voorbeeld 2.26 is dat bijvoorbeeld gedaan met twee animatiecurves. Je kunt ook zelf animaties maken met vooraf gemaakte grafieken die dan achter elkaar worden afgespeeld (in een bepaalde volgorde!). Als bij het commando display namelijk de optie insequence=true opgegeven wordt, dan wordt de lijst met alle grafieken die voorbereid zijn niet over elkaar heen gelegd, maar achter elkaar afgespeeld. Er kunnen zelfs vooraf aangemaakte animaties op deze manier achter elkaar afgespeeld worden! Het is wel belangrijk dat het nadrukkelijk een lijst is met grafieken of animaties, omdat de volgorde van het afspelen belangrijk is. Voorbeeld 2.34 De ruimtekromme v wordt doorlopen > restart; interface(warnlevel=0): with(plots): v:=[2*cos(t),3*sin(2*t),2*t]; N:=20;
v := [2 cos(t), 3 sin(2t), 2t] N := 20 > P:=seq(spacecurve(v,t=0..2*Pi/N*k,thickness=2,title=cat("Het punt is ", convert(evalf[4](subs(t=2*Pi/N*k,v)),string))),k=1..N): display([P], insequence=true,orientation=[-55,75],axes=boxed, labels=[X,Y,Z]);
Toelichting: Bereid eerst een ruimte-vector v = [2 cos(t), 3 sin(2t), 2t] voor (als lijst of als vector) en spreek het aantal frames N af. De bedoeling is nu dat de ruimtekromme doorlopen wordt naarmate (de tijd) t vordert. Verdeel het interval voor t ([0, 2π]) in N deelintervallen en maak op die manier N grafieken van ruimtekrommen die elk een stukje verder doorlopen, inclusief opties die bij elke kromme moeten horen. Deze rij (P) van N grafieken (ruimtekrommen) kan snel gemaakt worden met het commando seq (zie paragraaf 4.6). Deze rij moet netjes achter elkaar afgespeeld worden. Met de vierkante haken [P] wordt de juiste volgorde gegarandeerd. Als nu bij het commando display de optie insequence=true opgegeven wordt, dan worden alle grafieken die voorbereid zijn niet over elkaar heen gelegd, maar achter elkaar afgespeeld. Het beste kan de optie axes=boxed
2 · Grafieken
51
opgegeven worden bij het display-commando evenals de orientation-instellingen en die van de labels. De titel moet wel al bij de rij grafieken worden aangemaakt, omdat deze titel steeds bij ieder frame anders is. Dat is dan ook bij gebruik van display het grote voordeel, terwijl het aanpassen van de titel voor elk frame afzonderlijk niet kan bij de animatie-commando’s animate en animatecurve. De titel geeft namelijk steeds de co¨ordinaten van het punt aan waar je op elk moment bent. Omdat de titel een string is, wordt voor uitleg hierover naar paragraaf 4.12 verwezen. 2.12.4
Animaties met Maplets
Veel animaties zijn direct beschikbaar in de vorm van Maplets. Een Maplet is een soort applet waarin dingen veranderd kunnen worden, gebaseerd op Java. In de subpakketten van het Student-pakket (te activeren met with(Student)) zijn nogal wat zogenoemde tutors opgenomen in de vorm van Maplets. Als je met with(Student[Calculus1]) een van deze subpakketten activeert en afsluit met een puntkomma, dan vind je bijvoorbeeld de TangentTutor. Met een ander subpakket with(Student[VectorCalculus]) vind je bijvoorbeeld de SpaceCurveTutor en de VectorFieldTutor. In voorbeeld 3.27 vind je een Maplet over limieten. In paragraaf 2.9.2 staat een figuur van de CrossSectionTutor waarbij het ook mogelijk is een animatie in werking te stellen van de doorsnijding van een ruimtefiguur met een plat vlak. Zie ook de website behorende bij dit boek voor veel voorbeelden met het Student-pakket. Voorbeeld 2.35 Animatie van de raaklijn aan een grafiek > restart;with(Student); with(Calculus1): [Calculus1, LinearAlgebra, MultivariateCalculus, Precalculus, SetColors, VectorCalculus] > TangentTutor(); Zie figuur 3.7. Toelichting: In dit voorbeeld is te zien dat als je eerst het Student-pakket activeert en afsluit met een puntkomma, dat je dan de subpakketten te zien krijgt. Vervolgens kun je een van de subpakketten activeren, hier is dat Calculus1. Het is ook mogelijk om in e´ e´ n keer het Maplet te openen zonder eerst de pakketten te activeren. Dat gaat dan als volgt: > Student:-Calculus1:-TangentTutor(); In het Maplet kun je vervolgens de functie zelf invullen en allerlei andere instellingen doen wat betreft de raaklijn in een punt van de grafiek en het differentiequoti¨ent (Newton-quoti¨ent), waarna je met de Animate-knop de animatie in werking kunt zetten. Al deze instellingen worden direct vertaald naar een commando dat onderaan in het Maplet komt te staan. Dit commando kan met Ctrl-c en Ctrl-v naar je werkblad verplaatst worden en je kunt dus op die manier een dergelijke animatie ook, gespecificeerd met je eigen instellingen, in je werkblad opnemen. Voorbeeld 2.36 Een animatie met een ruimtekromme > restart; with(Student[VectorCalculus]): SpaceCurveTutor(); Zie figuur 2.24.
52
Handleiding Maple 10
Figuur 2.24
Toelichting: Hier is te zien dat je ook direct het subpakket kunt activeren. Nog sneller gaat het met: > Student:-VectorCalculus:-SpaceCurveTutor(); Het gaat hier over een ruimtekromme (die je zelf kunt invoeren) waar met behulp van Display Options steeds de snelheidsvector (Tangent Vector) in ieder punt van de kromme gevisualiseerd wordt. De snelheid van animeren kan hier ingesteld worden en er zijn allerlei andere instellingen mogelijk die direct vertaald worden naar een commandoregel onderaan die je dan weer eventueel met copy en paste (Ctrl-c en Ctrl-v) in je werkblad kunt binnenhalen. Voor meer informatie over ruimtekrommen zie paragraaf 2.6.2.
2.13 Grafiek met punten, pijlen en tekst In het volgende voorbeeld kun je zien hoe in e´ e´ n figuur een aantal mogelijkheden gecombineerd wordt. Je hebt hier het commando display uit het plotpakket voor nodig (zie paragraaf 2.10) om de verschillende grafieken die gemaakt worden te combineren tot e´ e´ n figuur. Verder het commando textplot uit het plotpakket om de tekst in de figuur te plaatsen en ten slotte het commando arrow uit het plotpakket om de pijlen te tekenen. Om een lijst of een verzameling punten te tekenen is geen speciaal commando nodig, dat kan gewoon met plot maar dan moet wel voor een stijl met punten gekozen worden door middel van de optie style=point. In voorbeeld 12.5 en voorbeeld 12.3 worden nog andere manieren aangeboden om punten te tekenen. TIP: het is soms handig om bij de punten ook de oorsprong op te geven. Je krijgt dan vaak een betere figuur. Een manier om een aantal punten in het complexe vlak te tekenen, zie je in voorbeeld 10.7. Voor figuren met pijlen in de R3 zie voorbeeld 4.14. Met textplot3d kan er ook in ruimtefiguren gewerkt worden!
2 · Grafieken
53
Voorbeeld 2.37 Punten, pijlen en letters in de figuur > restart; interface(warnlevel=0): with(plots): a,b,c:=<-2, 1>,<5, 2>,<3, 3>;
a, b, c :=
"
−2 1
# " ,
5 2
# " ,
3 3
#
> plaat1:=arrow({a,b,c},shape=arrow,thickness=2,color=green): plaat2:=textplot({[-2,1,A]},align={ABOVE,LEFT },font=[TIMES,BOLDITALIC,14]): plaat3:=textplot({[5,2,B],[3,3,C]},align={ABOVE,RIGHT}, font=[TIMES,BOLDITALIC,14]): plaat4:=arrow(a,b,shape=double_arrow,color=blue): display({plaat1,plaat2,plaat3,plaat4},scaling=constrained,title="pijlen met tekst");
Zie figuur 2.25. Pijlen met tekst
A –2
C
3 2.5 2 1.5 1 0.5 –1
0
B
1
2
3
4
5
Figuur 2.25
Toelichting: Er is hier gebruikgemaakt van de meervoudige toekenning. In e´ e´ n keer zijn er drie vectoren tegelijk ingevoerd. Voor het invoeren van vectoren zijn verschillende mogelijkheden, zie daarvoor paragraaf 4.9. Je kunt trouwens ook lijsten invoeren in plaats van vectoren om hetzelfde effect te krijgen bij het commando arrow (dus a:=[-2,1] in plaats van a:=<-2,1> ). Voor informatie over lijsten zie paragraaf 4.7. In figuur 2.25 is ervoor gezorgd dat met scaling=constrained de eenheden op de assen gelijk zijn (1:1). De plaatjes van de pijlen die in O beginnen en die de vectoren vertegenwoordigen, zijn in e´ e´ n keer in plaat1 ondergebracht met behulp van een verzameling. De dubbele pijl is de enige die niet in de oorsprong begint en is dus apart aangemaakt in plaat4 . Om deze te maken heb je dan een iets andere invoer nodig. In feite is het de pijl die in het eindpunt van vector a begint en de richting heeft van vector b, dus arrow(a,b). Toevallig eindigt deze pijl in punt C. Er zijn extra opties meegegeven om de pijl verschillende gedaanten te geven met bijvoorbeeld shape=arrow. In de R2 is trouwens de dubbele pijl standaard. Er zijn verder allerlei manieren om tekst in de figuur te maken. Bij e´ e´ n van de plotopdrachten kan bijvoorbeeld een titel meegegeven worden. Bij textplot moeten de twee co¨ordinaten opgegeven worden van de plaats waar de tekst moet komen te staan met als derde ‘co¨ordinaat’
54
Handleiding Maple 10
de tekst tussen dubbele quotes (string). Zie meer informatie over strings in 6.3.3. Er kan natuurlijk meer tekst opgegeven worden dan alleen e´ e´ n letter. Bovendien kan zelfs het font van de text be¨ınvloed worden met een extra optie font=.... Om ervoor te zorgen dat de letters niet precies o´ p de gedefinieerde punten komen te staan, zijn de co¨ordinaten van de punten bij textplot iets rechtsboven het punt gesitueerd door middel van align={ABOVE,RIGHT}. Zie voor een ander voorbeeld met textplot ook voorbeeld 10.10 om automatisch de co¨ordinaten te genereren waar de tekst moet komen te staan. Voorbeeld 2.38 Grafiek met punten > restart; Digits:=4; interface(warnlevel=0):with(plots): Digits := 4 > punten:=[seq([i/5,evalf(sin(2*Pi*i/5))],i=0..5)]; punten := 2 3 4 1 [[0, 0.], [ , 0.9512], [ , 0.5879], [ , −0.5879], [ , −0.9512], [1, 0.]] 5 5 5 5
> p1:=plot(sin(2*Pi*t),t=0..1,thickness=2):
p2:=plot(punten,style=point,symbol=circle,color=black,symbolsize=12): p3:=plot(punten,color=black,linestyle=2): display({p1,p2,p3},title="Grafiek met punten");
Zie figuur 2.26. Grafiek met punten
1
0.5
0
0.2
0.4
t
0.6
0.8
1
–0.5
–1
Figuur 2.26
Toelichting: Voor de overzichtelijkheid stellen we het aantal significante cijfers op 4 met Digits. Dit kan ook bereikt worden op een andere manier met displayprecision (zie blz. 7 aan het eind van paragraaf 1.3.4). Met behulp van het maken van een rij en daarvan weer een lijst, kun je een lijst met punten genereren en die plotten. Als je daarbij niet opgeeft dat de stijl in punten moet zijn, worden de punten automatisch verbonden in de volgorde van de lijst. In figuur 2.26 zien we dus drie grafieken die met behulp van display in e´ e´ n figuur worden samengebracht: de grafiek met vijf punten (p2), de grafiek met de verbonden punten (p3) en de grafiek van de sinus (p1) die in feite bestaat uit 50 punten. Als er punten getekend worden, kan de stijl daarvan ook nog aangepast worden bijvoorbeeld met symbol=circle en de grootte met sybolsize. In figuur 11.3 staat een voorbeeld van punten in een grafiek in de vorm van een cirkel of een kruisje.
3 Basisvaardigheden 3.1 Inleiding In dit hoofdstuk worden voorbeelden gegeven van een aantal eenvoudige basisberekeningen. Daarvoor is het nodig dat de basis van de algebra met pen en papier aanwezig is. Rekenregels voor breuken, machten, vergelijkingen en differenti¨eren worden bekend verondersteld. In de praktijk is gebleken dat een goed gebruik van een computeralgebrasysteem bevorderd wordt als men inzicht en vaardigheid bezit op het gebied van de algebra met pen en papier. De onderwerpen differenti¨eren en integreren worden hier alleen op laag niveau behandeld. In hoofdstuk 5 wordt er dieper op het differenti¨eren ingegaan, in hoofdstuk 7 komt de formulemanipulatie nog wat geavanceerder terug en in hoofdstuk 9 wordt het integreren verder uitgediept met voorbeelden. De vectoren en matrices worden ge¨ıntroduceerd als wiskundige objecten in hoofdstuk 4 en het rekenen daarmee gebeurt binnen de lineraire algebra die in hoofdstuk 8 samengebracht is. Voor dit hoofdstuk is nodig dat van het eerste hoofdstuk in ieder geval kennis genomen is van het verschil in het invoeren van een functie en van een uitdrukking en hoe het gaat met decimale getallen en standaardfuncties. De paragrafen 1.5.6 en 1.3.4 worden aanbevolen om nog eens te bekijken. Ook is het belangrijk te weten dat Maple rekent in de complexe getallen. Enige bekendheid met de imaginaire eenheid, die bij het programma bekend is onder de naam I, is aan te bevelen. Verder zullen de menu’s die aangeboden worden, als de uitvoer aangeklikt wordt met de rechtermuisknop, pas echt betekenis krijgen na het doorwerken van dit hoofdstuk.
3.2 Formulemanipulatie Bij het invoeren van een uitdrukking is het handig om deze een naam te geven. Maak onderscheid tussen een toekenning met := en een vergelijking met het =-teken. Een toekenning ongedaan maken wordt uitgelegd in paragraaf 1.3.2. Geef namen aan de entiteiten die ingevoerd worden en maak onderscheid tussen hoofdletters en kleine letters. Let op de sterren in de invoer als er een vermenigvuldiging bedoeld wordt. Dit teken is beslist noodzakelijk; 3x wordt niet opgevat als een vermenigvuldiging als er geen ster tussen getikt wordt in de invoer. 3.2.1
Substitutie
Met behulp van het commando subs (substitutie) kun je getalwaarden voor variabelen of parameters invullen (substitueren = invullen). De structuur van het commando is subs({waarden},formule). Dus eigenlijk substitueer de waarden in de formule. Er zijn echter meer mogelijkheden. In de volgende voorbeelden komen de verschillende mogelijkheden aan de orde.
56
Handleiding Maple 10
Voorbeeld 3.1 Een waarde invullen in een vergelijking We willen bijvoorbeeld in de vergelijking x2 − 8 x + 7 = 0 voor x de waarde 7 invullen. Dat gaat als volgt: > restart; verg:=x^2-8*x+7=0; verg := x2 − 8 x + 7 = 0 > subs(x=7,verg); 0=0 Op deze manier krijgen we een identieke vergelijking. Dat wil zeggen dat de waarde x = 7 voldoet aan de gegeven vergelijking. Voorbeeld 3.2 Meervoudige substitutie Neem nu de uitdrukking f = a x2 − 1 waarin twee variabelen zijn aan te wijzen, namelijk x en a. Het is mogelijk om een aantal substituties tegelijk te doen; eigenlijk een verzameling waarden te substitueren. Deze verzameling moet dan ook aangegeven worden met behulp van accolades. Echter de waarden opgeven in een lijst is evengoed mogelijk. Laten we bijvoorbeeld x = 2 en a = 3 invullen in de uitdrukking f . > f:=a*x^2-1; > subs({x=2,a=3},f);
f := a x2 − 1
11 TIP: ga hiermee nu zelf experimenteren en vul bijvoorbeeld decimale getallen in voor een variabele in een uitdrukking. Automatisch geeft Maple de uitkomst van de berekening in decimale getallen! Voorbeeld 3.3 Functiewaarden opvragen Als de functie opgegeven was als echte functie van bijvoorbeeld x en a met de pijltjesnotatie, dan is het sneller om over de functiewaarden te beschikken voor zekere waarden van x en a. > restart; f:=(x,a)->a*x^2-1; > f(2,3);
f := (x, a) → a x2 − 1
11 De betekenis is dat voor x = 2 en a = 3 de functiewaarde berekend wordt. Soms is het erg handig om op deze manier te werken, zie voorbeeld 10.10. Voorbeeld 3.4 Evaluatie van een formule Ook een mogelijkheid is het subsitutiecommando eval met een voorbeeld. De structuur van dit commando is eval(formule,{waarden}). Dus eigenlijk evalueer de formule voor de volgende waarden. Met een verzameling kunnen ook meer waarden ingevuld worden (met een lijst is het trouwens ook mogelijk). Het aardige hiervan is dat met behulp van het inerte commando met hoofdletter een mooie uitvoer op het scherm ontstaat. Het inerte commando geeft dus geen berekening. Hetzelfde commando met kleine letter geeft wel het resultaat van de berekening. > restart; f:=a*x^2-1: eval(f,{x=2,a=3}); 11 > Eval(f,x=2):%=value(%);
3 · Basisvaardigheden
57
(a x2 − 1) x = 2 = 4 a − 1 Toelichting: Met het inerte commando Eval (met hoofdletter) komt er dus een mooie schrijfwijze en met het commando value krijgt men vervolgens de berekende waarde ervan te zien. Deze mooie uitvoer kan alleen bij enkelvoudige substituties. Zie ook op de website bij dit boek in het bestand Aanvullingen op de handleiding. 3.2.2
Haakjes wegwerken (expand)
Voor het wegwerken van haakjes in allerlei vormen is het commando expand geschikt. Het werkt op breuken, polynomen, vergelijkingen en nog vele andere vormen. Voorbeeld 3.5 De werking van het commando expand > restart; f:=(x-1)*(x^2-x+1)*(x^2+x+1); f := (x − 1) (x2 − x + 1) (x2 + x + 1) > expand(f); x5 − x4 + x3 − x2 + x − 1 > (p+q)/r=expand((p+q)/r); p q p+q = + r r r > sin(x+y)=expand(sin(x+y)); sin(x + y) = sin(x) cos(y) + cos(x) sin(y) Toelichting: Voer eerst een uitdrukking in met de naam f met haakjes en vergeet niet de ster te tikken als er een vermenigvuldiging bedoeld wordt. Met expand worden keurig de haakjes weggewerkt ook al is het een ingewikkelde opdracht. Let ook eens op het uit elkaar trekken van een breuk met behulp van ditzelfde commando. Het 3 8 komt neer op ongeveer het volgende: 3+8 5 = 5 + 5 . Elke term van de teller wordt afzonderlijk gedeeld door de gehele noemer. Er is hier trouwens geen sprake van een toekenning, maar puur het intikken van een gelijkheid. In het laatste voorbeeld met de sinus (ook ingetikt als een gelijkheid), herken je misschien een van de goniometrische formules. 3.2.3
Ontbinden in factoren (factoriseren)
We beginnen met de omgekeerde bewerking van het haakjes wegwerken. In bepaalde gevallen kan het omgekeerde van expand (haakjes wegwerken) beschouwd worden als het effect van het commando factor (ontbinden in factoren of factoriseren). Het zal trouwens niet altijd lukken een veelterm (polynoom) te factoriseren waarvan de co¨effici¨enten uit gehele getallen bestaan. Alleen als het mooi uitkomt, kan er gefactoriseerd worden. Er is echter wel een mogelijkheid om te factoriseren als ook decimale getallen worden toegestaan. In het volgende voorbeeld zien we het effect van het invoeren van een uitdrukking waarin ook decimale getallen voorkomen. Voorbeeld 3.6 De werking van het commando factor > restart; interface(displayprecision=3): f:=x^5-x^4+x^3-x^2+x-1; f := x5 − x4 + x3 − x2 + x − 1 > factor(f); (x − 1) (x2 + x + 1) (x2 − x + 1)
58
Handleiding Maple 10
> factor(f+3*x); > factor(f+3.0*x); > expand(%);
x5 − x4 + x3 − x2 + 4 x − 1
(x − 0.264) (x2 + 1.432 x + 1.775) (x2 − 2.169 x + 2.137) x5 − 1.000 x4 + 1.000 x3 − 1.000 − 1.000 x2 + 4.000 x
Toelichting: De polynoom f wordt in factoren ontbonden, zoals ook te verwachten was als je voorbeeld 3.5 bekijkt. Van tevoren kun je niet weten of het mooi zal uitkomen bij het factoriseren van een polynoom. Als er bij de polynoom f bijvoorbeeld 3 x opgeteld wordt en er wordt vervolgens de opdracht gegeven deze te factoriseren, zal de polynoom weer onverrichter zake teruggegeven worden. Echter bij optellen van 3.0 x krijg je een nieuwe situatie: namelijk een polynoom waar in ieder geval ergens een decimaal getal in voorkomt. Het programma gaat nu onmiddellijk over op numerieke rekenwijze en de factorisering is nu w´el mogelijk, maar het is wel een benadering. De displayprecision is voor dit doel omlaag gezet (zie blz. 7 aan het eind van paragraaf 1.3.4). LET OP: als de displayprecision niet omlaag was gezet, dan werd er op meer decimalen afgerond en het kan zijn dat, na het wegwerken van de haakjes, je niet meer terugkrijgt wat je verwacht. Met het commando fnormal(%,6) met een extra optie voor het aantal significante cijfers of met evalf[6](%) kan de afronding wat be¨ınvloed worden en krijg je toch weer terug wat je verwacht, maar dan wel in de gedaante van de numerieke notatie met decimale punt en het opgegeven aantal significante cijfers. Na het uit elkaar trekken van breuken en het uit elkaar trekken van sin(x + y) door middel van expand, krijgt men met factor niet dezelfde vorm weer terug. Verder is in hoofdstuk 7 (zie voorbeeld 7.2) nog een uitbreiding van factor mogelijk als ook complexe getallen worden toegestaan in de ontbinding. Het commando factor werkt ook op vergelijkingen en breuken! Zie paragraaf 7.2.2. 3.2.3.1
Ontbinden van getallen (ifactor)
Getallen (gehele getallen) kun je ontbinden in priemfactoren. Bij breuken (geen decimale getallen) kun je teller en noemer ontbinden in priemgetallen. De breuk wordt eerst wel automatisch vereenvoudigd voordat het resultaat in priemfactoren gepresenteerd wordt. 3 Zo is bijvoorbeeld het getal 15 te ontbinden in 3 × 5 en de breuk 98 = 232 . Voor dit soort ontbindingen is er het commando ifactor. Voorbeeld 3.7 Ontbinden in priemfactoren > restart; ifactor(68); (2)2 (17) > expand(%); 68 > ifactor(85/16); (5) (17) (2)4 > expand(%); 85 16
3 · Basisvaardigheden
59
Toelichting: De ontbinding in factoren van getallen kan niet met factor gedaan worden. De omgekeerde bewerking kan wel weer met expand bewerkstelligd worden. 3.2.4
Wortelvormen
Ga na of de volgende bewerkingen je bekend voorkomen en anders moet er nog iets gedaan √ worden aan het begrip van de wortels en de rekenregels met machten. Verder wordt x ingevoerd als sqrt(x). Zie paragraaf 1.5.1. Voorbeeld 3.8 Wortelvormen vereenvoudigen > f:=(x-1)*sqrt(x);
√ f := (x − 1) x
> expand(%);
√ x(3/2) − x
> factor(%);
√ √ √ x ( x − 1) ( x + 1)
Toelichting: Als er in de vorm reeds een wortelteken staat, is de kans groot dat factor ook de ontbinding doet met wortels. Normaal gesproken wordt de vorm x − 1 niet verder ontbonden. In paragraaf 7.2.3 wordt er verder ingegaan op het manipuleren en vereenvoudigen van wortelvormen. 3.2.5
Breuken
Breuken invoeren in een computeralgebrasysteem is lastig! Controleer de uitvoer of je de bedoelde breuk hebt ingetikt en verbeter zo nodig. Voorbeeld 3.9 Het invoeren van een ingewikkelde breuk > restart; 2*(x^2+2)/((x-1)*(x^2+x+1)*(x^2-x+1)); 2 (x2 + 2) (x − 1) (x2 + x + 1) (x2 − x + 1) Wellicht is het beter om teller en noemer apart in te voeren. > teller:=2*(x^2+2); teller := 2 x2 + 4 > noemer:=(x-1)*(x^2+x+1)*(x^2-x+1); noemer := (x − 1) (x2 + x + 1) (x2 − x + 1)
> breuk:=teller/noemer;
breuk :=
2 x2 + 4 (x − 1) (x2 + x + 1) (x2 − x + 1)
Toelichting: Voor ingewikkelde breuken kun je misschien het beste eerst teller en noemer apart intikken en controleren om vervolgens de breuk te defini¨eren. TIP: je kunt nu als je wilt over de teller en de noemer onafhankelijk van elkaar beschikken met behulp van de commando’s numer en denom (Engelse afkortingen voor respectievelijk teller en noemer).
60
Handleiding Maple 10
Voorbeeld 3.10 Teller en noemer van een breuk > restart; breuk[1]:=(2*x^2+4)/(x^5-x^4+x^3-x^2+x-1); 2 x2 + 4 breuk1 := 5 x − x4 + x3 − x2 + x − 1 > teller:=numer(breuk[1]); teller := 2 x2 + 4 > noemer:=denom(breuk[1]); noemer := x5 − x4 + x3 − x2 + x − 1 Toelichting: Eventueel kun je met de teller of de noemer verder werken. Merk ook op dat met vierkante haakjes een index (paragraaf 6.2) gemaakt kan worden bij de naam van de breuk (breuk1). 3.2.5.1
Breuken optellen en vereenvoudigen
Het herschrijven van een breuk kan op verschillende manieren. Van meer breuken e´ e´ n maken met gemeenschappelijke noemer kan in het algemeen met simplify of normal. Deze commando’s werken niet helemaal hetzelfde, maar zorgen er in ieder geval voor dat het resultaat e´ e´ n breuk wordt. Voorbeeld 3.11 Verschillende schrijfwijzen van een breuk Let in het volgende voorbeeld ook eens op het effect van expand en factor op een breuk. (Zie ook voorbeeld 3.5 en 3.6.) We werken met dezelfde breuk1 als in voorbeeld 3.10. > restart; breuk[1]:=(2*x^2+4)/(x^5-x^4+x^3-x^2+x-1): breuk[2]:=factor(breuk[1]);
4 2 x2 + (x − 1) (x2 + x + 1) (x2 − x + 1) (x − 1) (x2 + x + 1) (x2 − x + 1) Toelichting: Let in dit voorbeeld eens op het effect van de optie expanded bij normal en bij simplify.
3 · Basisvaardigheden
3.2.5.2
61
Breuksplitsen
Het is bekend dat je verschillende breuken samen kunt nemen door ze gelijknamig te maken en daarna op te tellen. Dat kan Maple vrij vlot zoals we gezien hebben in paragraaf 3.2.5.1 met behulp van simplify of normal. Het omgekeerde is ook mogelijk: van een grote breuk allemaal kleine breuken maken. In beperkte mate kan dit met expand, maar dat is dan nog niet in de gewenste vorm wellicht. Het splitsen van een breuk in zo klein mogelijke breuken gaat met behulp van het commando convert(f,parfrac,x). Het betekent breuksplitsen (partial fraction) waarbij de variabele aangewezen moet worden. Dit laatste gaan we uitproberen op twee manieren. De eerste manier is zonder floating point en de tweede met floating point, dus numeriek. Let hierbij dus op het verschil in de commando’s expand en convert(..,parfrac,..). Voorbeeld 3.12 Breuksplitsen met gehele getallen De eerste manier zonder floating point levert probleemloos de breuksplitsing waarbij de omgekeerde bewerking weer de oude breuk oplevert. > restart; H:=(1+s)/(s*(s+3)*(s+2)); H :=
1+s s (s + 3) (s + 2)
> expand(H); 1 1 + s (s + 3) (s + 2) (s + 3) (s + 2) > convert(H,parfrac,s); 2 1 1 − + 2 (s + 2) 3 (s + 3) 6 s > simplify(%); 1+s s (s + 3) (s + 2) Toelichting: Merk op dat de factoren van de noemer van de oorspronkelijke breuk terug te vinden zijn in de noemers van de gesplitste vorm. Bekijk de volgorde van de opties van het commando convert (= omzetten). Het programma moet namelijk eerst weten w´at er omgezet moet worden, in dit geval de vooraf gegeven formule H. Tevens moet het programma weten h´oe er omgezet moet worden (parfrac is een afkorting van partial fraction; stukjes breuk). Ten slotte moet er opgegeven worden welke de variabele is. In dit geval was het wel duidelijk dat s de variabele was, maar je had nog meer letters in de breuk kunnen hebben en dan was de opdracht niet meer duidelijk zonder deze optie van de variabele. In paragraaf 7.2.2 is nog een voorbeeld van een uitbreiding van het breuksplitsen als ook complexe getallen worden toegelaten. In de helpfunctie kun je zien welke omzettingen nog meer mogelijk zijn. Typ daarvoor ?convert of kijk in de index van dit boek. Voorbeeld 3.13 Breuksplitsen met decimale getallen > restart; interface(displayprecision=3): H:=(3+s)/(s^3+5.0*s^2+4*s); 3+s H := 3 s + 5.000 s2 + 4 s > factor(H)=convert(H,parfrac,s); 0.667 0.083 0.750 3.000 + s =− − + s (s + 1.000) (s + 4.000) s + 1.000 s + 4.000 s
62
Handleiding Maple 10
Vervolgens weer terug samenvoegen tot e´ e´ n breuk. In dit voorbeeld werken we numeriek door ten minste e´ e´ n getal met decimale punt in te voeren. Zet dan ook de displayprecision wat lager ten behoeve van de overzichtelijkheid. In paragraaf 7.2.2 is nog een voorbeeld van een uitbreiding van het breuksplitsen als ook complexe getallen worden toegelaten. > normal(rhs(%)); −
0.100 10−10 s2 − 1.000 s − 3.000 s (s + 1.000) (s + 4.000)
> fnormal(%); 3.000 + 1.000 s s (s + 1.000) (s + 4.000) Toelichting: De breuk H kan op verschillende manieren geschreven worden. De noemer kan ontbonden worden in drie factoren en de verwachting is dat de breuk dan ook gesplitst kan worden in drie kleinere breuken. De breuksplitsing levert inderdaad drie kleine breuken op maar er worden numerieke benaderingen gedaan. Bij de omgekeerde bewerking k´an er een zogenoemd fuzzy zero ontstaan, een heel klein getal dat het gevolg is van afrondingen onderweg. Deze fuzzy zero kan weer weggehaald worden met het commando fnormal waarbij eventueel het aantal significante cijfers opgegeven kan worden. Eventueel kan de decimale punt weer weggehaald worden met convert(%,fraction) nadat de fuzzy zero’s weggehaald zijn. Voor meer omzetcommando’s wordt verwezen naar de index van dit boek. 3.2.6 Kwadraat afsplitsen Voor het manipuleren met kwadratische vormen, zoals het omzetten van x2 − 6 x − 5 in de vorm (x − 3)2 − 14, is een speciaal commando. Het commando CompleteSquare is echter niet direct te gebruiken. Niet alle commando’s zijn namelijk direct beschikbaar, omdat dit te veel geheugenruimte kost. Voor een aantal commando’s moet er een speciaal pakket geactiveerd worden. Voor het commando CompleteSquare (volledig kwadraat) is dat het subpakket Precalculus van het Student-pakket. Zo’n subpakket wordt geactiveerd met behulp van with(Student[Precalculus]). Echter als je dat pakket niet eerst op wilt starten, kun je ook direct over het commando beschikken met het intikken van: > Student:-Precalculus:-CompleteSquare( x^2-6*x-5 ); TIP: met het aanklikken van de uitvoer met de rechtermuisknop (na het intikken van de kwadratische vorm) krijg je een menu te zien waar vanaf versie 10 ook CompleteSquare bij staat. (In oudere versies van Maple moet het commando completesquare uit het Student-pakket gehaald worden (with(student)), alles met kleine letters.) Voorbeeld 3.14 Andere schrijfwijze van een kwadratische vorm We bekijken nu een kwadratische vorm. Je kunt eventueel proberen de vorm in factoren te ontbinden. Dat is trouwens niet altijd mogelijk, tenzij je floating point-notatie toepast. Zoals bekend is de grafiek van f (x) = x2 − 6 x − 5 een parabool. > restart; f:=x^2-6.0*x-5; > factor(f);
f := x2 − 6.0 x − 5 (x + 0.7416573868) (x − 6.741657387)
> Student:-Precalculus:-CompleteSquare(f);
(x − 3.000000000)2 − 14.00000000
3 · Basisvaardigheden
63
> convert(%,fraction); (x − 3)2 − 14
> plot(f,x=-3..8,title="top van de parabool is [3,-14] nulpunten zijn x = -0.742 en x = 6.742");
Toelichting: Aan de kwadraatafgesplitste vorm is snel te zien waar de top van de parabool ligt en aan de gefactoriseerde vorm is snel te zien waar de snijpunten met de X-as liggen. Eigenlijk weet je dan al bijna alles van deze dalparabool en kun je de grafiek schetsen. (De grafiek van de parabool is hier overigens niet afgedrukt.) Zie voor meer informatie hoe grafieken gemaakt moeten worden hoofdstuk 2. Je kunt je voorstellen dat er behalve de variabele x nog andere variabelen in een formule voorkomen. Het maakt verder niet uit wat voor formule het is: CompleteSquare werkt bijna op alle formules. Echter met de rechtermuisknop wordt in het menu dit commando alleen bereikt bij polynomen en bijvoorbeeld niet bij vergelijkingen. Voorbeeld 3.15 De impliciete functie gegeven door een vergelijking Het gaat om de volgende vergelijking: verg := 4 x2 + 9 y2 − 4 x + 24 y = 127. > restart; verg:=4*x^2+9*y^2-4*x+24*y=127; verg := 4 x2 + 9 y2 − 4 x + 24 y = 127
Toelichting: De vergelijking willen we herschrijven in kwadraatafgesplitste vorm. Als er verder geen opties bij het commando CompleteSquare gegeven worden, zullen alle variabelen die kwadratisch in de formule staan worden aangepakt. Geef je echter een optie erbij van een of meer variabelen, dan worden alleen de genoemde variabelen aangepakt en de rest blijft ongemoeid. We willen misschien nog links en rechts van het gelijkteken het getal 17 erbij optellen om dan de vergelijking te herkennen als een ellips met middelpunt [ 12 , − 34 ]. Dat kan door gewoon 17 bij de vergelijking op te tellen. (In oudere versies moet (17=17) bij de vergelijking worden opgeteld.) TIP: het manipuleren met vergelijkingen kan ook met een Maplet gedaan worden dat geactiveerd wordt door met de rechtermuisknop op de uitvoer te klikken en te kiezen voor Manipulate Equation. Afgezien van het kwadraatafsplitsen, kunnen verder allerlei manipulaties gedaan worden. Zie verder paragraaf 2.8 hoe van dit soort impliciete functies een grafiek kan worden gemaakt.
64
Handleiding Maple 10
3.3 Vergelijkingen Vergelijkingen zijn formules met een isgelijkteken erin. Verwar het niet met een toekenning waar het teken := gebruikt wordt. Tik eens een vergelijking in en klik in de uitvoer met de rechtermuisknop. Je krijgt dan een menu dat specifiek slaat op het object vergelijking. Vanaf versie 10 is in dat pop-upmenu ”Manipulate Equation” erbij gekomen, een Maplet waarin dingen gedaan kunnen worden met vergelijkingen en die vertaald worden naar commando-regels. Het kwadraatafsplitsen (CompleteSquare, zie voorbeeld 3.15) staat niet in dit pop-upmenu, maar voor de rest zullen de andere menuopties terugkomen in de voorbeelden hieronder, zodat de betekenis en achtergrond daarvan duidelijk worden. Het gaat in het volgende over het oplossen van een vergelijking. Als je dan per ongeluk over het oplossen van een functie f spreekt, wordt automatisch opgevat dat je dan de vergelijking f = 0 bedoelt. Dus solve(f,x) wordt opgevat als solve(f=0,x). Houd er rekening mee dat Maple in de complexe getallen rekent en dat er ook eventueel complexe getallen als oplossing kunnen komen, te herkennen aan de I (zie voorbeeld 3.17). 3.3.1 Exact oplossen (solve) Het oplossen van een vergelijking gaat in het algemeen met solve waarbij de vergelijking opgegeven moet worden en de variabele waarnaar opgelost moet worden (de onbekende). Let in de voorbeelden op het verschil in uitvoer als de onbekende wel of niet met accolades wordt ingevoerd bij solve! Het zal duidelijk zijn dat niet alle vergelijkingen even gemakkelijk zijn op te lossen. Soms moeten we onze toevlucht nemen tot numerieke methoden, waarbij de hulp van grafieken een steun kan zijn. Voorbeeld 3.16 Het oplossen komt mooi uit Laten we uitgaan van de vergelijking x3 + x2 − 17x + 15 = 0. Dit is een vergelijking in x van de derde graad en we verwachten dan ook drie oplossingen. > restart; verg:=x^3+x^2-17*x+15=0; > solve(verg,{x}); > solve(verg,x); > factor(verg);
Toelichting: In de uitvoer komt er een rij met verzamelingen met de oplossing als de onbekende met accolades wordt opgegeven. Geef je echter in de opdracht bij solve g´ee´ n accolades mee, dan krijg je een rij getallen die verder voor ons voldoende informatie bevat om de oplossingsverzameling te kunnen opschrijven. (Er kan eventueel ook nog met vierkante haken gewerkt worden. In de uitvoer komt dan een lijst met oplossingen te staan.) De oplossingsverzameling S van de vergelijking is dus S = {1, 3, −5}. Het oplossen van deze vergelijking komt trouwens erg mooi uit! In de laatste opdrachtregel wordt de vergelijking gefactoriseerd, zodat je nu ook uit het hoofd de oplossingsverzameling kunt achterhalen. Het commando factor werkt dus ook op vergelijkingen.
3 · Basisvaardigheden
65
Voorbeeld 3.17 Het oplossen komt slecht uit Probeer eens de vergelijking x4 + 2 x3 − 9 x2 + 11 x − 4 = 0. Deze is van de vierde graad en theoretisch verwachten we dan vier oplossingen. > restart; interface(displayprecision=3): verg:=x^4+2*x^3-9*x^2+11*x-4=0; verg := x4 + 2 x3 − 9 x2 + 11 x − 4 = 0 > oplossing:= solve(verg,{x}) ; oplossing := {x = RootOf(%1, index = 1)}, {x = RootOf(%1, index = 2)}, {x = RootOf(%1, index = 3)}, {x = RootOf(%1, index = 4)} %1 := Z 4 + 2 Z 3 − 9 Z 2 + 11 Z − 4
> allvalues({oplossing}); evalf(oplossing); {x = 0.625}, {x = 0.963 + 0.692 I}, {x = −4.551}, {x = 0.963 − 0.692 I} Uitgaande van de vergelijking met decimale getallen: > solve(evalf(verg),{x}); {x = 0.625}, {x = 0.963 + 0.692 I}, {x = −4.551}, {x = 0.963 − 0.692 I} Als je alleen ge¨ınteresseerd bent in de re¨ele oplossing: > use RealDomain in solve(evalf(verg),{x}) end; {x = 0.625}, {x = −4.551} Toelichting: Met solve probeert het programma exact te rekenen. Van het antwoord met de code RootOf word je in dit stadium nog niets wijzer. Het is een teken dat er analytisch gerekend wordt en dat is met solve altijd het geval. Als je wilt zien wat de betekenis is van deze code, kan de oplossing van de vergelijking zichtbaar gemaakt worden door middel van het commando allvalues({oplossing}). Wat er dan op het scherm komt, is hier niet afgedrukt, maar aan zo’n ingewikkeld analytisch antwoord heb je niet veel. Het wordt dan tijd dat de (exact berekende) oplossing benaderd wordt. Zoals je weet gaat het programma over op floating point-berekeningen als in de invoer ook floating point gebruikt is. Dit effect bereiken we als we evalf gebruiken om de vergelijking naar floating point-notatie te schrijven. Voor dit doel is bij het begin van de sessie displayprecision omlaag gezet (zie blz. 7). Met solve komt er nu keurig een oplossingsverzameling van vier stuks te staan die weliswaar numeriek benaderd zijn, maar op een exacte rekenwijze verkregen zijn. We zien hier dat een paar van de getallen een I bevat. De I staat bij Maple voor de imaginaire eenheid (zie paragraaf 1.3.5). Er zijn twee re¨ele oplossingen en twee complexe oplossingen. Voor complexe rekenwijze wordt verder naar hoofdstuk 10 verwezen. Wil je toch alleen beschikken over de re¨ele oplossingen, dan is een mogelijkheid te werken in de re¨ele getallen (RealDomain), zie paragraaf 6.6. 3.3.2
Numeriek oplossen (fsolve)
We gaan nu kijken hoe de numerieke rekenwijze (met fsolve waarbij de f staat voor floating point) in zijn werk gaat met twee voorbeelden. Voorbeeld 3.17 leende zich in feite meer voor een numerieke oplossingsmethode. Als we daar met de rechtermuisknop gewerkt hadden, had het ook in de lijn gelegen om op Solve Numerically te klikken. Voor hogeregraads vergelijkingen geeft fsolve alleen de benaderde re¨ele oplossingen en als de vergelijking wat ingewikkelder wordt, dan geeft fsolve hooguit e´ e´ n re¨ele numerieke waarde. Het heeft te maken met de manier waarop er inwendig bij dit commando gerekend wordt. Het zal duidelijk worden in de voorbeelden.
66
Handleiding Maple 10
Voorbeeld 3.18 Vergelijking van de vierde graad numeriek oplossen > restart; interface(displayprecision=3): verg:=x^4+2.0*x^3-9*x^2+11*x-4=0; verg := x4 + 2.000 x3 − 9 x2 + 11 x − 4 = 0 > fsolve(verg,{x}); {x = −4.551}, {x = 0.625} > plot(lhs(verg),x=-5..3); Zie figuur 3.1. vierdegraads functie met twee nulpunten 80 60 40 20
Toelichting: De vergelijking is ingevoerd en omdat er numeriek gerekend wordt met fsolve, is voor dit doel bij het begin van de sessie displayprecision omlaag gezet (zie blz. 7). Met fsolve wordt vervolgens all´ee´ n de re¨ele benaderde oplossing gevonden. Waar je hier eigenlijk naar zoekt, zijn de nulpunten van het linkerlid van de vergelijking. (De betekenis van lhs is left hand side.) Dat wil zeggen dat je zoekt naar de waarden x waarvoor de grafiek van het linkerlid de X-as snijdt. Laten we de grafiek hiervan bekijken (zie figuur 3.1) en kijken waar deze de X-as snijdt. Duidelijk is te zien dat er een snijpunt met de X-as is in het interval [−5 , −4] en een in het interval [0 , 1]. Door met de muis zo goed mogelijk op zo’n nulpunt in de grafiek te gaan staan, kun je schatten wat het nulpunt is. Er komt namelijk linksboven in de contextbar te staan wat de co¨ordinaten zijn van het punt waar je met de muis op klikt in de grafiek. In dit geval komen de berekeningen niet mooi uit, wat bij het oplossen van hogere graads vergelijkingen meestal het geval is. Om de snijpunten te vinden en deze meteen een naam te geven, moeten we numeriek te werk gaan. Het commando fsolve heeft, behalve de vergelijking en de onbekende, nog bij voorkeur een interval nodig waarin gezocht moet worden naar de oplossing. Het programma komt dan met een startwaarde in d´ıt interval terecht en zoekt met numerieke methoden vervolgens naar de benadering van de re¨ele waarde die het beste aan de vergelijking voldoet. Er komen dus geen analytische rekenmethoden aan te pas bij deze manier van oplossen.
3 · Basisvaardigheden
67
Voorbeeld 3.19 Een vergelijking die niet analytisch opgelost kan worden > restart; verg:=ln(x)=3*sin(x); verg := ln(x) = 3 sin(x) > fsolve(verg,x); 2.792247796 > plot([lhs(verg),rhs(verg)],x=0..30); Zie figuur 3.2 (met op de cd-rom het uitgebreide script voor de figuur met tekst erin). snijpunt a van de logaritme en de sinusfunctie in het interval [7,10] 3 2 1 0 –1 –2 –3 –4
5
10
a
x 15
20
25
30
logaritme sinus
Figuur 3.2
> a:=fsolve(verg,x=7..10); a := 8.623611902 Toelichting: In dit voorbeeld is er een vergelijking waarvoor g´ee´ n analytische methoden beschikbaar zijn om deze op te lossen. We zijn nu wel genoodzaakt voor numerieke methoden te kiezen. Alleen fsolve zal dan nog werken. Echter met fsolve krijgen we hier maar e´ e´ n oplossing terwijl er wel meer zijn (zie figuur 3.2). Door de grafiek van het linkerlid (lhs) en het rechterlid (rhs) beide in e´ e´ n figuur weer te geven kunnen we mogelijke oplossingen visualiseren. Als we nu bijvoorbeeld per se de oplossing a willen hebben die tussen 7 en 10 in ligt, kunnen we het interval meegeven aan het commando. Het programma gaat dan vanuit een startpunt in dit interval zoeken naar een numerieke re¨e le waarde die aan de vergelijking voldoet. 3.3.3
Variabele vrijmaken uit een vergelijking
Bij het oplossen van vergelijkingen is het belangrijk om bij solve op te geven wat de onbekende is (tenzij er maar e´ e´ n is). Als je deze onbekende opgeeft in de vorm van een verzameling, dus tussen accolades, krijg je een antwoord naar welke variabele de vergelijking is opgelost. Dat is bovendien handig als je in een vergelijking misschien meer variabelen hebt. Het is dan tenminste duidelijk welke variabele de onbekende is. Houd er rekening mee dat fsolve niet werkt als er parameters in de vergelijking zitten! Voorbeeld 3.20 De onbekende in de vergelijking Een vergelijking die we verg noemen: y2 − 5 a y = −6. Je ziet dat er nu twee variabelen zijn en het wordt bij het oplossen extra belangrijk dat goed opgegeven wordt welke variabele als onbekende gezien moet worden.
68
Handleiding Maple 10
> restart; verg:=y^2-5*a*y=-6; verg := y2 − 5 a y = −6 > solve(verg,{y}); √ √ 5a 5a 25 a2 − 24 25 a2 − 24 + }, {y = − } {y = 2 2 2 2 > solve(verg,{a}); y2 + 6 {a = } 5y Toelichting: In feite maken we eerst y vrij uit de vergelijking die kwadratisch is in y dus we verwachten twee oplossingen. Waarschijnlijk herken je hierin de abc-formule. Vervolgens stellen we a als onbekende. Dit komt dus neer op het vrijmaken van a uit de vergelijking. De vergelijking is een lineaire vergelijking in a. Er komt nu slechts e´ e´ n antwoord voor a in de oplossingsverzameling (de variabele a komt in de vergelijking immers lineair voor). Je ziet dat het handig was om de onbekende in de vorm van een verzameling op te geven (met accolades), zodat de uitvoer duidelijker is. Echter de oplossing wordt dan wel gegeven in de vorm van een vergelijking, maar dat kan soms wel zijn voordeel hebben zoals we in de volgende paragraaf (3.3.4) zullen zien. 3.3.4 Het toekennen van de oplossing Het is niet zo dat na het gebruik van solve of fsolve de variabelen voortaan deze waarden behouden. Als je dat w´el wilt, kan dat met behulp van het commando assign. Dit commando maakt van een vergelijking een variabele toekenning. Je moet dus wel eerst een vergelijking hebben. Het is daarom handig om het commando solve te gebruiken met de onbekende tussen accolades zoals in voorbeeld 3.20 hierboven. Voorbeeld 3.21 Toekennen van de oplossing met assign > restart; verg:=y^2-5*a*y=-6: solve(verg,{a}); y2 + 6 {a = } 5y > assign(%); a; y2 + 6 5y > unassign(’a’); a; a Toelichting: Met de vergelijking van voorbeeld 3.20 en het vrijmaken van a wordt de berekende waarde van a toegekend met assign. Dat kan dus alleen als de oplossing in vergelijkingsvorm gegeven wordt. Werk dus met accolades bij de onbekende in het solvecommando. Vervolgens wordt even de waarde van a gecontroleerd door a op te vragen. Daarna wordt deze toekenning weer ongedaan gemaakt met unassign. Inderdaad is de a nu weer ‘waardeloos’ geworden als we a opvragen. Het ongedaan maken van een toekenning had ook gekund met a:= ’a’;. Zie paragraaf 1.3.2. Het commando assign werkt dus alleen als het op een vergelijking slaat! 3.3.5 Stelsels vergelijkingen Het is mogelijk om een verzameling (met accolades) van twee vergelijkingen met twee onbekenden op te lossen met behulp van het commando solve. Het beste is het om altijd
3 · Basisvaardigheden
69
met een verzameling te werken en niet met een lijst (met vierkante haken), hoewel dat in het geval van solve wel zal werken maar bij fsolve weer niet. De werkwijze is dezelfde als bij e´ e´ n vergelijking met e´ e´ n onbekende. Ook is het mogelijk om een verzameling van n vergelijkingen met n onbekenden op te lossen. In paragraaf 7.4 en paragraaf 8.5 wordt op een meer geavanceerde manier structuur gebracht in het oplossen van meer vergelijkingen met meer onbekenden. Als je met de rechtermuisknop een en ander wilt berekenen, moet eerst de verzameling van vergelijkingen voorbereid worden. Dus tik de vergelijkingen in en maak er een verzameling van door er accolades omheen te zetten, waarna je deze verzameling met de rechtermuisknop kunt behandelen. Op deze manier werken met een lijst van vergelijkingen is niet mogelijk. Voorbeeld 3.22 Twee vergelijkingen met twee onbekenden > restart; v[1]:=x+y=7; v[2]:=2*x-3*y=8;
> solve({v[1],v[2]},{x,y});
v1 := x + y = 7 v2 := 2 x − 3 y = 8 29 6 {y = , x = } 5 5
> assign(%); S:={[x,y]}; S := {[
29 6 , ]} 5 5
Toelichting: Noem de vergelijkingen v1 en v2 . (Als je met de rechtermuisknop wilt werken, tik je vervolgens in {v[1],v[2]}; en klik dan op de uitvoer hiervan en er opent zich een pop-upmenu.) De verzameling vergelijkingen wordt opgelost met solve met als verzameling onbekenden {x, y}. Wil je nu dat x en y voortaan deze waarden blijven behouden, dan kun je het commando assign gebruiken. Dit commando werkt ook op een verzameling vergelijkingen, zoals hier {y = 56 , x = 29 5 }, en werkt dus eigenlijk als meervoudige toekenning. De oplossingsverzameling S, de verzameling bestaande uit het getallenpaar (x, y) dat aan 6 , ) deze twee vergelijkingen voldoet, is S = ( 29 5 5 . Een getallenpaar wordt bij Maple ook wel gepresenteerd met rechte haken, net als bij een vector. Voorbeeld 3.23 Twee vergelijkingen (niet beide lineair) De oplossing hiervan komt niet zo erg mooi uit en het ligt in de lijn om numeriek te werk te gaan. Begin een nieuwe situatie altijd met restart om eventuele toekenningen ongedaan te maken. > restart; interface(displayprecision=3):v[1]:=x+y=7.0;v[2]:=2*x*y-3*y=8;
v1 := x + y = 7.000 v2 := 2 x y − 3 y = 8 {y = 0.863, x = 6.137}
{y = 0.863, x = 6.137}, {y = 4.637, x = 2.363} Toelichting: Met displayprecision is ervoor gezorgd dat in de uitvoer er niet al te veel decimalen verschijnen. (Zie voor meer informatie op blz. 7.) Als je even wat uitprobeert, zul je zien dat deze oplossing niet mooi uitkomt. Numeriek
70
Handleiding Maple 10
rekenen kan op twee manieren en deze twee manieren zijn zeer verschillend wat betreft de rekenwijze van Maple. We proberen nu eerst het commando fsolve en dwingen Maple op deze manier numeriek te gaan rekenen. Er wordt dan een willekeurige startwaarde genomen, waarop we eventueel invloed uit kunnen oefenen als we intervallen voor x en y zouden meegeven, bijvoorbeeld als we het vermoeden hebben dat y in het interval [4, 5] ligt. > fsolve({v[1],v[2]},{x,y},{y=4..5}); Omdat we geen enkel idee hebben van de oplossing, geven we geen interval op en laten het programma dus zelf zoeken. Er komt dan een antwoord, dat wil zeggen e´ e´ n getallenpaar (x, y), dat aan de twee vergelijkingen voldoet. We zouden kunnen denken dat dit de volledige oplossingsverzameling is, maar dat is hier niet zo! Het is e´ e´ n van de oplossingen en wel een willekeurige. Vervolgens passen we een andere strategie toe: we gebruiken w´el het commando solve waarmee Maple analytisch rekent (volgens de bekende rekenregels voor het oplossen van vergelijkingen), maar we zorgen dat de vergelijkingen met hier en daar een decimale punt (floating point) zijn ingevoerd. De oplossing wordt dan ook in decimale getallen gegeven, maar inwendig worden de vergelijkingen wel exact opgelost en dat is precies onze bedoeling. De oplossing bestaat nu uit een rij met twee onderdelen. TIP: het commando fsolve werkt niet als er in de vergelijking behalve de variabele nog een of meer parameters voorkomen.
3.4 Ongelijkheden Het commando solve kan ook ongelijkheden aan. Echter het commando fsolve werkt besl´ıst n´ıet op ongelijkheden! Bij het oplossen van ongelijkheden wordt aangeraden met grafieken te werken. Meestal is het toch verstandig om bij het oplossen van zowel vergelijkingen als ongelijkheden een onderzoekje te doen, eventueel met behulp van het schetsen van grafieken. Voor stelsels lineaire ongelijkheden wordt verwezen naar paragraaf 7.5.1 waar het gaat over optimaliseren onder bepaalde voorwaarden in de vorm van ongelijkheden. Voorbeeld 3.24 Eenvoudige ongelijkheid Let ook eens op het verschil tussen wel of geen accolades bij de onbekende bij het commando solve. > restart; ong[1]:=x^2+2.0*x<3; ong1 := x2 + 2.0 x < 3 Het kleinerdanteken kan gewoon met de toetsen getypt worden. Vervolgens los je deze ongelijkheid op: > solve(ong[1],x); RealRange(Open(−3.), Open(1.)) De oplossingsverzameling, een open interval op de re¨ele as (RealRange), is uit het antwoord van Maple af te leiden: de oplossing is het interval h−3 , 1i. Als je met accolades had gewerkt, wordt de oplossing in een andere notatie weergegeven: > solve(ong[1],{x}); {−3. < x, x < 1.} Ga na dat de eindpunten van het interval van de oplossing dus niet meedoen! Naar keuze is een van beide methoden te hanteren. Je kunt het antwoord eventueel met pen
3 · Basisvaardigheden
71
en papier controleren. Voorbeeld 3.25 Ongelijkheid met een breuk Let bij de volgende ongelijkheid weer op de twee verschillende manieren van het gebruik van solve (met en zonder accolades bij de onbekende). Hier zie je tevens hoe het kleinergelijkteken ingevoerd moet worden. > restart; ong[2]:=(4-x^2)/(x^2-9)<=0; 4 − x2 ≤0 ong2 := 2 x −9 > solve(ong[2],x); RealRange(−∞, Open(−3)), RealRange(−2, 2), RealRange(Open(3), ∞) > solve(ong[2],{x}); {x < −3}, {−2 ≤ x, x ≤ 2}, {3 < x} De oplossingsverzameling in de offici¨ele notatie als interval is h←, −3i ∪ [−2, 2] ∪ h3, →i. Hier valt op dat inderdaad de getallen −3 en 3 niet meedoen vanwege de noemer die in de ongelijkheid staat. Voorbeeld 3.26 Ongelijkheid met grafiek Als de ongelijkheid wat ingewikkelder wordt, kun je het linkerlid en het rechterlid van de ongelijkheid eventueel een naam geven en apart intikken. Dit heeft voordelen met het oog op het tekenen van de grafieken. We zullen hier echter werken met het linker- en rechterlid van de ongelijkheid. De commando’s lhs en rhs werken namelijk ook op ongelijkheden. > restart; ong := (x+1/2)^2 <= (2.0*x^2+x-1)/(x-1); 2.0 x2 + x − 1 1 ong := (x + )2 ≤ 2 x−1 > plot([lhs(ong),rhs(ong)],x=-4..4,y=-20..20,discont=true, thickness=[3,1]);
Zie figuur 3.3. ongelijkheid oplossen met grafieken en berekenen van de snijpunten 20
In figuur 3.3 kun je de oplossing verifi¨eren. > a:=fsolve(lhs(ong)=rhs(ong),x=-1..0); a := −0.8943576046 > b:=fsolve(lhs(ong)=rhs(ong),x=0..1); b := 0.3265826432 > c:=fsolve(lhs(ong)=rhs(ong),x=2..3); c := 2.567774961 Toelichting: In hoofdstuk 2 staat uitgebreid informatie hoe je de figuur van tekst en een titel voorziet. Door met de muis op de snijpunten in de grafiek te klikken, vind je in de contextbar links bovenaan de co¨ordinaten van deze snijpunten. Zo kun je alvast een schatting maken van de oplossing van de ongelijkheid. Je zult zien dat het niet mooi uitkomt en zoals gezegd: het commando fsolve werkt niet bij ongelijkheden! Daarom is de ongelijkheid alvast ingevoerd met ergens een decimale punt, zodat het programma de benaderde oplossing geeft! Een onderzoek is echter in dit soort gevallen steeds aan te raden. Ga na dat in figuur 3.3 de vet getekende kromme (parabool) de grafiek van het linkerlid is. De dun getekende grafiek stelt het rechterlid voor waarbij de asymptoot niet getekend is om niet in de war te komen met de snijpunten van de beide grafieken en daardoor verkeerde conclusies te trekken over de oplossing van de ongelijkheid. (Zie ook paragraaf 2.11 voor de optie discont=true.) In het plaatje kun je de oplossingsverzameling al bijna aflezen. Als we er nu achter zouden kunnen komen waar de snijpunten liggen van de twee grafieken, kunnen we aan de hand van de figuur zien wat de oplossingsverzameling van de ongelijkheid zou moeten zijn. We benaderen met behulp van het reeds besproken commando fsolve de snijpunten van de grafieken De bijbehorende x-waarden noemen we a, b en c. (Het commando fsolve werkt niet op ongelijkheden, daarom lossen we de vergelijking op met fsolve.) Nu kan de oplossingsverzameling S van de ongelijkheid gegeven worden: 1 2 2 x2 + x − 1 ≤ ⇒ S = [a, b] ∪ h1, c] = [−0.9 , 0.3] ∪ h1 , 2.6] x+ 2 x−1 TIP: voor bijvoorbeeld de ongelijkheid ln(x) ≤ 3 cos(x) ben je aangewezen op het berekenen van de snijpunten van de grafieken van linker- en rechterlid van deze ongelijkheid. Op grond daarvan en de grafiek (zie figuur 3.2) kun je de oplossingsverzameling vinden. De ongelijkheid is immers niet analytisch oplosbaar en fsolve werkt niet op ongelijkheden!
3.5 Limieten Het bepalen van limieten zal vaak een onderdeel zijn van het bestuderen van het verloop van een functie. Het kan zijn dat het moeilijk is om functiewaarden te berekenen in sommige punten van de grafiek. Denk aan noemers die nul worden, of uitdrukkingen waarbij je nul gedeeld door nul krijgt (kans op een ophefbare discontinu¨ıteit). Het is soms gewenst om het verloop van een functie te bestuderen in het geval dat een variabele naar oneindig gaat. Andere situaties zijn denkbaar wanneer een functie niet continu is, maar sprongen vertoont. Aan je eigen inzicht wordt overgelaten in welke punten het nodig is om de limiet te bepalen en in welke punten je gewoon waarden in kunt vullen (met behulp van subs of value of op een andere manier, behandeld in paragraaf 3.2.1). Het invoeren van limieten kan, behalve commandogestuurd zoals in de voorbeelden, ook met behulp van een menu. Open het expression-palet met behulp van View en kies voor
3 · Basisvaardigheden
73
Palettes. Een overzicht van het symbol-palet en het expression-palet zie je in figuur 1.2. Er is tegenwoordig zelfs in een van de subpakketten van het Student-pakket een speciaal Maplet gemaakt om limieten te bekijken en dingen te animeren zoals in het volgende voorbeeld. Voorbeeld 3.27 Limieten met een Maplet Beschouw nu de functie f (x) = sinx3 x . In het vorige hoofdstuk heb je kunnen zien hoe functies van e´ e´ n variabele eenvoudig geplot kunnen worden. Een aantal functiewaarden wordt berekend en het programma verbindt de punten met elkaar. Op die manier is niet altijd te zien welke punten er berekend zijn en welke punten niet. In het subpakket Precalculus van het pakket Student zit een limiet-tutor die je op de volgende manier bereikt. Vul daarin zowel de functie als ook het punt x = 0 in en klik in het Maplet op de knop Display. > Student:-Precalculus:-LimitTutor(); (Zie figuur 3.4.)
Figuur 3.4
In de animatie zie je dat voor x = 0 de functiewaarde ongeveer gelijk is aan 3. Verder is in het Maplet het nodige aan te passen. Je kunt de functie veranderen, het punt waar de discontinu¨ıteit plaats heeft, moet ingevuld worden en je kunt kiezen of je van de linkerkant of de rechterkant het punt benaderen wilt. Bij de berekende waarden beweegt er gelijktijdig een punt over de grafiek heen naar het betreffende punt waar de functie discontinu is. Verder verschijnt onder in beeld het commando dat je met Ctrl-c en Ctrl-v naar een invoerregel in je werkblad kunt verplaatsen. Bedenk dan wel dat je eerst Student:-Precalculus:- ervoor moet plaatsen o´ f het benodigde pakket activeren met with(Student[Precalculus]). Als je de grafiek tekent, is dit gewoon een vloeiende kromme, maar let erop dat er een open rondje getekend zou moeten worden in het punt (0, 3), want volgens de berekening is de limiet van de functie voor x nadert tot 0 precies gelijk aan 3, terwijl x = 0 dus beslist niet ingevuld kan worden. Voorbeeld 3.28 Limiet met het commando limit > restart; f:=sin(3*x)/x; f :=
sin(3 x) x
> plot(f,x=-5..5,discont=true,color=black); Zie voor de grafiek ook in figuur 3.4. > Limit(f,x=0):%=value(%);
74
Handleiding Maple 10
lim
x→0
sin(3 x) =3 x
Toelichting: Het commando voor het bepalen van de limiet is limit, het Engelse woord voor limiet. Let hier eens op de invoer met het commando value. Bij het inerte commando Limit (met een hoofdletter) wordt er nog niets uitgerekend. Pas na value wordt de feitelijke berekening gedaan. Je krijgt op deze manier een goede presentatie in je werkblad. Voorbeeld 3.29 Rechterlimiet x Gegeven de functie g(x) = √x−1 waarvan de grafiek hier niet is afgedrukt. Deze functie heeft een verticale asymptoot x = 1 want de limiet voor x ↓ 1 van de functie is oneindig met de volgende offici¨ele notatie: x ⇒ lim g(x) = ∞ g(x) = √ x↓1 x−1 > restart; g:=x/sqrt(x-1);
> Limit(g,x=1,right):%=value(%);
x g := √ x−1
x =∞ lim √ x−1
x→1+
Toelichting: De grafiek kan eventueel met plot(g,x=0..5,0..10); afgedrukt worden. Het symbool voor oneindig wordt gemaakt met infinity, terwijl in de tekst en in de uitvoer het teken ∞ gebruikt wordt. Merk op hoe het programma de rechterlimiet noteert. 3.5.1 Limieten met parameters Soms komt het voor dat een limiet bepaald moet worden van een functie waarin een parameter voorkomt. Dit soort functies kan niet getekend worden, tenzij er tijdelijk even een waarde voor de parameter aangenomen wordt. Neem bijvoorbeeld de functie f (x) = ea x . Deze kan opgevat worden als een functie van x met a als parameter. Met je kennis van standaardfuncties is het belangrijk om te weten of de waarde van a positief danwel negatief is als je gaat kijken naar de functie voor x nadert naar oneindig. Oneindig moet ingevoerd worden als infinity. In de tekst gebruiken we het symbool ∞. (Eventueel met behulp van het symbol-palet (figuur 1.2) met View en Palettes.) Voorbeeld 3.30 Neem van de functie f (x) = ea x de limiet voor x → ∞ en x → −∞ met als aanname dat a positief is. > restart; assume(a>0); f:=exp(a*x); f := e(a x) > Limit(f,x=infinity): %=value(%); lim e(a x) = ∞ x→∞
Toelichting: Met behulp van het commando assume (Engels voor: neem aan dat...) kun je bijvoorbeeld laten weten dat a positief is. Voor meer informatie over dit commando zie paragraaf 6.4.2.
3 · Basisvaardigheden
75
¨ 3.6 Differentieren Er zijn verschillende mogelijkheden om functies te differenti¨eren met Maple. Voer de functie f (x) in als een uitdrukking met de naam f (beter n´ıet met de naam f (x)). Meestal gebruik je voor differenti¨eren het commando diff. Hierbij moet opgegeven worden welke functie er gedifferentieerd zal worden. Tevens moet de variabele opgegeven worden waarnaar gedifferentieerd wordt. De structuur van het commando is dus: diff(uitdrukking,variabele). Voor snelle berekeningen om even een paar afgeleiden te bepalen is het handig om met de rechtermuisknop te werken. Selecteer een uitdrukking in de uitvoer van Maple en klik deze aan met de rechtermuisknop. Kies vervolgens voor Differentiate en de rest wijst zich vanzelf. Het commando voor het differenti¨eren kent, net als het commando voor de berekening van limieten, verschillende mogelijkheden: diff en Diff. De werking is hetzelfde als bij de limietbepaling: het commando met de hoofdletter, het inerte commando, berekent nog niets, maar zorgt alleen voor een mooie schrijfwijze. Na value wordt de berekening gedaan. Om met pen en papier te oefenen met de rekenregels voor het differenti¨eren is er een handige tutor, zie paragraaf 3.8.1. Zie voor meer informatie over differenti¨eren hoofdstuk 5. Voorbeeld 3.31 Verschillende manieren van differenti¨eren Ga uit van de functie f (x) die je nog wel handmatig kunt differenti¨eren. f (x) = x6 − 5 x3 + 3
> Diff(f,a):%=value(%); ∂ 6 (x − 5 x3 + 3) = 0 ∂a Toelichting: De functie is als uitdrukking ingevoerd. Merk verder op dat Maple op het scherm een uitvoer geeft met de ene keer een rechte letter d en de andere keer een ∂ (een kromme letter d). Deze ∂ wordt gebruikt voor het partieel differenti¨eren van een functie: het differenti¨eren naar a in dit geval, waarbij de andere letters (x) constant gehouden worden. Bij het differenti¨eren naar x hoeft er geen kromme ∂ geschreven te worden want er zijn geen andere letters dan de x in het spel. De functie f is niet afhankelijk van a en de afgeleide naar a is dan ook gelijk aan 0. Wij schrijven in de tekst meestal gewoon een rechte d, tenzij we werkelijk de parti¨ele afgeleide bedoelen. TIP: merk de truc op met het inerte commando (Diff met hoofdletter) gevolgd door value met gebruikmaking van het procentteken. Deze manier werd ook gebruikt bij de limieten om een mooie uitvoer op het scherm te krijgen (zie de voorbeelden van paragraaf 3.5). Voorbeeld 3.32 Herleiden van de afgeleide Vaak is het nodig om de afgeleide nog te herleiden (vereenvoudigen). > restart; f:=ln(x+sqrt(1+x^2));
76
Handleiding Maple 10
f := ln(x + > ‘f’‘:=simplify(diff(f,x)); f ′ := √
p 1 + x2 ) 1
1 + x2
Toelichting: Als je van tevoren weet dat je de vorm na het differenti¨eren nog verder moet herleiden, kan dat ook in e´ e´ n moeite met het ervoor zetten van het commando simplify (nesten van commando´a) dat meestal het gewenste resultaat oplevert. Merk hier het gebruik van backquotes op voor de notatie van f ′ . Zie voor informatie over backquotes paragraaf 6.3.2. Voorbeeld 3.33 Differenti¨eren van echte functies Mocht het zo zijn dat de functie gegeven is in pijltjesnotatie, dan moet de te differenti¨eren functie op een andere manier aangeroepen worden, namelijk met f(x). Dat geldt ook voor bijvoorbeeld limieten en bij het plotcommando. > restart; f:=x->sin(x)*exp(-2*x); > diff(f(x),x);
f := x → sin(x) e(−2 x) cos(x) e(−2 x) − 2 sin(x) e(−2 x)
Overigens is n´og mooier en met hetzelfde resultaat: D(f)(x). Je kunt, als je wilt, zelfs met´ee´ n ook de waarde van de afgeleide berekenen in een bepaald punt: > D(f)(5); cos(5) e(−10) − 2 sin(5) e(−10)
Hierna kan eventueel met evalf gewerkt worden. TIP: wellicht kan beter D(f)(5.0) met floating point ingevoerd worden om met´ee´ n de benaderde waarde te krijgen.
3.7 Integreren Het commando voor integreren is int en er moet, net als bij differenti¨eren, eerst opgegeven worden wat de integrand is en vervolgens naar welke variabele er ge¨ıntegreerd moet worden. De structuur van het commando is dus: int(uitdrukking,variabele). Er zijn weer verschillende mogelijkheden. Voor een mooie uitvoer is Int, het inerte commando met hoofdletter, gevolgd door value zeer geschikt. De werking is hetzelfde als bij het differenti¨eren en bij het bepalen van limieten, en het gebruik ervan is uitermate geschikt voor het controleren van de invoer van een integraal. Het invoeren van integratie kan, behalve commandogestuurd zoals in de voorbeelden, ook met behulp van een menu. Open het expression-palet met behulp van View en kies voor Palettes (figuur 1.2). Voor snelle berekeningen om even een paar integralen te berekenen is het ten slotte ook handig om met de rechtermuisknop te werken. Selecteer een uitdrukking in de uitvoer en klik deze aan met de rechtermuisknop. Kies vervolgens voor Integrate en de rest wijst zich vanzelf. Er kan ook met Maplets gewerkt worden voor wat meer instructie bij het primitiveren. Zie daarvoor paragraaf 3.8.2.
3 · Basisvaardigheden
3.7.1
77
Onbepaald integreren (primitiveren)
Wees erop bedacht dat niet alle functies geprimitiveerd kunnen worden! Soms wordt de invoer weer teruggegeven en dat is een teken dat de primitieve waarschijnlijk niet bestaat. Wees er ook op bedacht dat de algemene (integratie)constante bij het primitiveren door Maple op 0 gesteld wordt. Voorbeeld 3.34 Een paar eenvoudige voorbeelden ‘Eenvoudig’ wil zeggen dat je deze functies nog met de hand zou kunnen primitiveren met wat basiskennis. Doe dit eens en controleer het resultaat met Maple. Gegeven zijn de volgende functies: f (x) = sin(3 x)
g(x) = ea x
h(x) =
x5 1 + x2
> restart; f:=sin(3*x); f := sin(3 x) > F:=int(f,x); diff(F,x); 1 F := − cos(3 x) 3 sin(3 x) > g:=x->exp(-a*x); Int(g(x),x):%=value(%); g := x → e(−a x) Z e(−a x) e(−a x) dx = − a > h:=x^5/(1+x^2); H:=int(h,x); x5 h := 1 + x2 x4 x2 1 H := − + ln(1 + x2) 4 2 2 > Int(convert(h,parfrac,x),x): %=value(%); Z x4 x2 1 x dx = − + ln(1 + x2 ) x3 − x + 2 1+x 4 2 2 Toelichting: Er wordt gebruikgemaakt van Int en value voor een mooie presentatie op het scherm. Je kunt het resultaat weer differenti¨eren en vergelijken met de oorspronkelijke uitdrukking. Merk op dat de functie g ingevoerd is met de pijltjes-notatie en dat dan de functie voor integratie aangeroepen moet worden met g(x). Verder is op de uitdrukking h breuksplitsing toegepast, zodat de integratie begrijpelijker wordt. Zie voor breuksplitsing paragraaf 3.2.5.2. 3.7.2
De bepaalde integraal
In paragraaf 3.7.1 heb je gezien hoe een onbepaalde integraal ingevoerd moet worden. Bepaalde integralen voer je op dezelfde manier in, het commando is iets uitgebreider: je moet namelijk een interval (range) opgeven voor de variabele, dus: int(uitdrukking,variabele =a..b). Dit interval kan zelfs oneindig groot zijn bij de integratie. Het teken voor oneindig is net als bij de limieten: infinity. Het opgeven van een interval gaat op dezelfde manier als bij het tekenen van grafieken met plot. Verder kun je weer gebruikmaken van de mogelijkheden om de invoer van de integraal te controleren met het inerte commando
78
Handleiding Maple 10
Int. Als Maple de integraal met value niet kan berekenen, stap dan over op numerieke benadering, met evalf of met invoer van decimale getallen. Het spreekt vanzelf dat alleen het integreren met grenzen voor numerieke integratie in aanmerking komt. Voor meer informatie over integratie zie ook hoofdstuk 9. TIP: probeer ook eens de bepaalde integraal in te voeren met behulp van View Palettes met het expression-palet, zie figuur 1.2. Met de Tab-toets kun je dan steeds naar het volgende invulveld. Voorbeeld 3.35 Oppervlakte tussen grafiek en horizontale as Gegeven is een derdegraadsfunctie f (x) = x3 − 9 x2 + 12 x waarvan de grafiek de X-as een aantal malen snijdt, namelijk in de punten a, b en c. De opdracht is nu om de oppervlakte te berekenen van het gedeelte van het vlak dat ingesloten wordt door de grafiek van de functie en de X-as. Zie figuur 3.5. > restart; f:=x^3-9*x^2+12*x; > nulp:=solve(f=0,x);
> a:=nulp[1]; b:=nulp[3]; c:=nulp[2]; a := 0√ 9 33 b := − 2 √2 33 9 c := + 2 2 > with(plots): p1:=plot(f,x=-2..8,color=black): p2:=plot(f,x=a..c,filled=true,color=gray): p3:=textplot({[a,0,"a"],[b,0,"b"],[c,0,"c"]}, font=[TIMES,ITALIC,14], align={BELOW,RIGHT}): display({p1,p2,p3},title=Oppervlaktebepaling);
Zie figuur 3.5. Oppervlaktebepaling 20 –2
2
a –20 –40 –60
Figuur 3.5
b
x 4
6
8
c
3 · Basisvaardigheden
79
> Int(f,x=’’a’’..’’b’’)-Int(f,x=’’b’’..’’c’’):% :%%=simplify(value(%)); √ Z c Z b 531 297 33 3 2 3 2 x − 9 x + 12 x dx − x − 9 x + 12 x dx = − + 8 8 b a > Opp_totaal:=evalf(int(abs(f),x=a..c)); Opp totaal := 146.8918883 Toelichting: Eerst is de functie ingevoerd en gecontroleerd. De waarden van x voor de snijpunten met de X-as zijn berekend door de vergelijking f (x) = 0 op te lossen. Er zijn drie waarden gevonden. Deze waarden voor x zijn exact berekend met behulp van het commando solve. Je moet zelf bekijken welke waarde bij welk snijpunt hoort, want de volgorde van de oplossingsverzameling ligt niet vast. Dan kun je de namen a, b en c aan deze waarden toekennen. De integraal van f op het interval [b, c] moet negatief genomen worden, omdat namelijk de oppervlakte bepaald moet worden en het gebied ligt juist onder de X-as. Voor de gearceerde vlakken kan bij het plotcommando als optie filled=true gegeven worden, wat ervoor zorgt dat het gebied tussen de grafiek van de functie en de horizontale as wordt gekleurd. Voor de oppervlaktebepaling kan natuurlijk ook in e´ e´ n keer de absolute waarde van f ge¨ıntegreerd worden over het gehele interval. Er kan gebruikgemaakt worden van evalf in plaats van value om de integraal te benaderen. Zie paragraaf 6.3 voor het gebruik van quotes en zie verder hoofdstuk 9 voor meer voorbeelden met integratie. Voorbeeld 3.36 Oppervlaktebepaling tussen twee grafieken 1 x. Gegeven de functie f = sin(x) e−2 x en de lijn g = 10 Bereken de oppervlakte ingesloten door de grafiek van f , de lijn g en de X-as. > restart; Digits:=4: f:=sin(x)*exp(-2*x); g:=x/10; f := sin(x) e(−2 x) 1 x g := 10 > plot({f,g},x=0..3); Zie figuur 3.6.
0.3
Oppervlakte tussen de grafieken
0.25 0.2 Y 0.15
g
f A
0.1 0.05 0
0.5
1
1.5 X
2
2.5
3
Figuur 3.6
Zie bij de toelichting het script voor het maken van deze grafiek inclusief aanvullingen van letters en titel en arcering.
80
Handleiding Maple 10
> a:=fsolve(f=g,x,0.8..1.2); a := 1.055 > Int(g,x=0..a)+Int(f,x=a..infinity):%=value(%); Z ∞ Z 1.055 x sin(x) e(−2 x) dx = 0.1098 dx + 10 1.055 0 Toelichting: Er is nu gekozen voor een numerieke methode (met fsolve) om het snijpunt van de twee grafieken (a) te bepalen. Verder komt hierin een oneigenlijke integraal voor met een oneindig interval. Met value wordt toch numeriek gerekend omdat er decimale getallen zijn ingevoerd. Evengoed had de integraal ook berekend kunnen worden met evalf. Zie voorbeeld 3.35 voor een nog elegantere uitvoer met behulp van quotes. Hieronder staat het script voor figuur 3.6. Voor het gearceerde gebied zijn apart de plots p1 en p2 gemaakt met filled=true, zodat de gearceerde gebieden mooi aansluiten. > p1:=plot(f,x=a..3,filled=true,color=gray): p2:=plot({g},x=0..a,filled=true,color=gray): > p3:=plot({f,g},x=0..3,color=black): > p4:=textplot({[a,a/10,A],[2,2/10,"g"],[0.5,0.18,"f"]}, font=[TIMES,ITALIC,16],align={ABOVE,LEFT}): > with(plots): display({p1,p2,p3,p4},labels=[X,Y], title="Oppervlakte tussen de grafieken"); 3.7.3 Integratie met parameters Net als bij limieten, kan Maple soms de integraal niet doen omdat er te weinig informatie is over een parameter, zie voorbeeld 3.30. Met behulp van assume kan deze informatie gegeven worden zodat er w´el gerekend kan worden. Zie paragraaf 6.4.2 voor informatie over het commando assume. Voorbeeld 3.37 Aanname voor de parameter Voor het bepalen van de oppervlakte van de halve cirkel met middelpunt O en straal R stellen we de volgende integraal op. Met een aanname dat R > 0 kan de computer probleemloos de integraal berekenen. > restart; assume(R>0); Int(sqrt(R^2-x^2),x=-R..R): %=value(%); Z Rp 1 R2 − x2 dx = R2 π 2 −R
3.8 Maplets met animaties en tutors Er bestaat een aantal interessante animaties en zogenoemde tutors in de vorm van Maplets over differenti¨eren en integreren in de subpakketten van het Student-pakket. De meest aantrekkelijke voor beginniveau worden hier toegelicht. Deze kunnen eventueel zonder het activeren van betreffende subpakket gedraaid worden als de commando’s worden overgenomen, zoals ze hieronder gegeven zijn. Vaak staat onder in het Maplet het commando dat nodig is voor bijvoorbeeld een animatie. Dit commando, waarmee buiten het Maplet betreffende animatie in het werkblad kan draaien, kan door selecteren en met Ctrl-c en Ctrl-v naar het werkblad verplaatst worden. Echter dan moet er wel de code voor het activeren van de nodige pakketten voor geplaatst worden, anders werkt het commando niet, tenzij de pakketten reeds geactiveerd zijn met bijvoorbeeld with(Student[Calculus1]); of with(Student[Precalculus]);.
3 · Basisvaardigheden
3.8.1
81
¨ Differentieren met Maplets
> Student:-Precalculus:-FunctionSlopeTutor(); De FunctionSlopeTutor geeft een animatie hoe je tot de helling van de grafiek in een bepaald punt komt met behulp van het Newton-quoti¨ent (het differentiquoti¨ent). Opgegeven moet worden de functie e´ n het punt waar de helling bepaald moet worden. Een tabel met x-waarden en bijbehorende waarden van het Newton-quoti¨ent worden in het Maplet gepresenteerd. Je krijgt dan ook de vergelijking van de raaklijn erbij en onder in het Maplet het commando om de animatie in het werkblad op te nemen. > Student:-Calculus1:-TangentTutor(); Zie figuur 3.7. Dit Maplet werkt ongeveer hetzelfde als de FunctionsSlopeTutor maar er is nog een extra mogelijkheid om het aantal iteraties en de toename van de variabele in te stellen.
Figuur 3.7
> Student:-Calculus1:-DerivativeTutor(); Met deze DerivativeTutor kun je een functie opgeven en dan krijg je de functies van de afgeleide en van de tweede afgeleide gepresenteerd. In de bijbehorende grafiek krijg je de grafiek van de afgeleide erbij en optioneel ook die van de tweede afgeleide. > Student:-Calculus1:-DiffTutor(); Met de Differentieer Tutor kun je stap voor stap elke functie differenti¨eren die je wilt met de rekenregels, zoals somregel, productregel, quoti¨entregel, kettingregel en combinaties daarvan. Voer een functie in en je krijgt hints voor de regels die toegepast moeten worden. 3.8.2
Integreren met Maplets
> Student:-Calculus1:-ApproximateIntTutor(); Met deze tutor kan een functie ingevoerd worden en kunnen de verschillende methoden bestudeerd worden om de oppervlakte onder de grafiek te benaderen. > Student:-Calculus1:-IntTutor(); Met deze tutor kun je stap voor stap oefenen met de rekenregels voor het primitiveren met pen en papier. Voer een functie in en je krijgt hints voor de regels die toegepast moeten worden. > Student:-Calculus1:-AntiderivativeTutor(); Met deze tutor kun je een functie invoeren, een interval en een beginwaarde om de grafiek e´ n de formule van een of meer primitieven te weten te komen.
4 Overzicht van wiskundige objecten In de techniek wordt bij het beschrijven van situaties en verschijnselen gebruikgemaakt van formules. Het woord formule is eigenlijk een verzamelnaam voor allerlei wiskundige objecten. Voorbeelden van wiskundige objecten zijn: vergelijkingen, functies, grafieken, vectoren en matrices. In dit hoofdstuk wordt geprobeerd om een overzicht te geven van de meest voorkomende wiskundige objecten waarmee je te maken krijgt als je een computeralgebrasysteem hanteert. Als je een goed inzicht hebt in de verschillende wiskundige objecten, kun je ook beter omgaan met een computeralgebrasysteem. Maple is in staat om de verschillende objecten te herkennen en handelt daar ook naar. Dat is te merken bij het gebruik van de rechtermuisknop. Zie voor het gebruik van de rechtermuisknop paragraaf 1.4. Het is belangrijk te weten wanneer er bijvoorbeeld een vergelijking, een verzameling of een lijst moet worden opgegeven bij bepaalde commando’s. Als je de structuren daarin kunt herkennen, is het gebruik van het systeem een stuk doorzichtiger.
4.1 Formules uitdrukkingen en functies Onder formules kan men van alles verstaan wat met wiskundige uitdrukkingen te maken heeft. Er zijn verder nog specifieke wiskundige objecten die men kan onderverdelen in soorten. Als niet duidelijk is om wat voor wiskundig object het gaat, kun je het beste in teksten het woord formule gebruiken. Elke formule kan bij Maple ingevoerd worden. Zorg er dan voor dat de namen van de formules corresponderen met de bijbehorende tekst. Geef de formule die je invoert een logische naam, zodat je de formule later nog eens kunt aanroepen. In de vorige hoofdstukken zijn functies wel vaak als uitdrukkingen (expressies) ingevoerd. Er zijn eigenlijk twee manieren om een functie in te voeren: met de pijltjesnotatie en als uitdrukking. Beide hebben hun voordelen, zie paragraaf 1.5.6. Een functie van e´ e´ n of meer variabelen wordt gedefinieerd door middel van een formule waarin duidelijk wordt gemaakt wat de naam van de functie is, wat de variabelen zijn en wat het functievoorschrift is. Er zijn twee manieren om een functie van x schriftelijk te defini¨eren: f : x → x4 + a x3 + x2
of
f (x) = x4 + a x3 + x2
Een functie van twee variabelen definieer je schriftelijk als: g : (x, a) → x4 + a x3 + x2
of g(x, a) = x4 + a x3 + x2
Deze functies kunnen worden ingevoerd met de pijltjesnotatie op de volgende manier: > restart; f:=x->x^4+a*x^3+x^2; f := x → x4 + a x3 + x2
> restart; f:=(x,a)->x^4+a*x^3+x^2; f := (x, a) → x4 + a x3 + x2 Zie voor verdere instructie de paragrafen 1.5.6 en 3.6 om te weten wat de voordelen zijn van het hanteren van een echte functie zoals in voorbeeld 5.2.
84
Handleiding Maple 10
4.2 Vergelijkingen en ongelijkheden Vergelijkingen zijn formules met een isgelijkteken. Je kunt ze invoeren en voor het gemak een naam geven. Geef altijd wel logische namen, bijvoorbeeld verg:=x^3-2*x^2=0;. Zie voor voorbeelden paragraaf 3.3. Als je met de rechtermuisknop de ingevoerde vergelijking aanklikt (zie instructie aan het begin van paragraaf 3.3), wordt dit object door het programma herkend en er opent zich een menu dat specifiek op een vergelijking betrekking heeft. Klik eens op Manipulate Equation: er opent zich dan een Maplet waarin je met knoppen de vergelijking kunt manipuleren. Alle rekenregels die je over vergelijkingen kent, zie je daarin terug! Ongelijkheden zijn formules met een kleinerdan-, groterdan-, kleinergelijk- of grotergelijkteken. Deze tekens kun je intikken met het toetsenbord: >=, enzovoort. Zie voor voorbeelden paragraaf 3.4. Met de commando’s lhs ( = left hand side) en rhs kun je over het linker- en het rechterlid van de vergelijking/ongelijkheid beschikken.
4.3 Intervallen (ranges) Een interval (range) wordt aangeduid met behulp van een begin- en een eindpunt met twee stipjes ertussen. Er wordt bedoeld het gesloten interval, dus begin- en eindpunt meegerekend. Soms wordt bedoeld een interval op de re¨ele as en soms wordt bedoeld een interval van gehele getallen. Het programma herkent een range en weet wat er in iedere situatie met een range gedaan moet worden. Voorbeelden heb je al gezien bij het commando plot. Neem bijvoorbeeld de opdracht voor het tekenen van een parabool, waarbij x ∈ [−3, 3] (interval op de re¨ele as), in het plotcommando aangegeven door plot(x^2,x=-3..3);. Bij het maken van een rij wordt de range bedoeld als interval, waarbij stapjes van precies 1 genomen worden vanaf beginpunt waarbij het eindpunt niet overschreden mag worden. Een en ander wordt getoond in voorbeeld 4.3 met seq(tk,k=0..10). De waarden van k zijn in dit geval dan geheel van 0 tot en m´et 10. Echter bij seq(i,i=0.3..10) is het beginpunt precies 0.3 en daarna neemt i achtereenvolgens steeds grotere waarden aan met stapjes van 1 tot 9.3. De waarde van 10 mag namelijk niet overschreden worden. Ook kan er gewerkt worden met breuken in een range. Zie verder bij de rijen paragraaf 4.6.
4.4 Operanden Het is mogelijk om de operanden van een wiskundig object te zien te krijgen of er iets mee te doen: de termen van een som, de factoren van een product of de elementen van een matrix. Hiervoor kan het commando op gebruikt worden. Voorbeeld 4.1 De operanden van een uitdrukking Ga eens na uit welke onderdelen een zelfbedachte functie bestaat. > restart; f:=x^4+a*x^3+x^2; f := x4 + a x3 + x2 > op(f); x4 , a x3 , x2 > ‘de tweede operand van f‘=op(2,f); de tweede operand van f = a x3
4 · Overzicht van wiskundige objecten
85
> map(cos,f); cos(x4 ) + cos(a x3 ) + cos(x2 ) Toelichting: Eerst wordt er gevraagd naar de operanden van de uitdrukking f. Vervolgens wordt er gevraagd naar de tweede operand van f . (Elke operand kan natuurlijk op zijn beurt ook weer uit operanden bestaan.) Zie voor uitleg van het gebruik van de quotes paragraaf 6.3. Je kunt heel gemakkelijk iets gaan doen met de operanden van een object. Je wilt bijvoorbeeld van alle termen van f de cosinus nemen. Een handig commando voor zulke acties is het commando map. Dit zorgt ervoor dat met alle operanden van een object hetzelfde gedaan wordt. In dit geval de cosinus nemen. Zie de index van dit boek bij map voor meer voorbeelden.
Alle kentallen (operanden) van een vector differenti¨eren gaat ook met het commando map (voorbeeld 4.11), maar als je binnen het VectorCalculus-pakket werkt, kan een vector rechtstreeks gedifferenti¨eerd worden met diff (voorbeeld 4.12). Het gebruik van het commando op kan veel tikwerk en fouten besparen. Wil je bijvoorbeeld met een gedeelte van een uitvoer die Maple geeft verder werken, dan kun je een rij met operanden maken en het goede object eruit kiezen met behulp van een index (met vierkante haakjes). Zie voor meer informatie over het gebruik van indices paragraaf 6.2. Als je wilt weten hoeveel operanden een lijst of een vector bijvoorbeeld heeft, vraag je daarnaar met nops(..). Zie een toepassing in voorbeeld 10.14.
4.5 Randomgetallen Maple bezit een commando om randomgetallen (willekeurige gehele getallen) te genereren met het commando rand. De voorbeelden die hier gegeven worden, geven op je eigen scherm natuurlijk andere getallen, omdat het om een willekeurig getal gaat. Met rand() krijg je een willekeurig geheel getal met maximaal twaalf significante cijfers te zien. Met rand(10..30)() krijg je een willekeurig geheel getal tussen de 10 en de 30 te zien. Met rand(1000) een willekeurig geheel getal tussen 0 en 1000. Het is tevens mogelijk om een willekeurig decimaal getal te genereren in een bepaald interval: bijvoorbeeld met evalf(rand(1000)/250) krijg je een willekeurig (niet geheel) getal tussen 0 en 4. Een toepassing hiervan is te vinden op de cd-rom met een voorbeeld over ruis in een sinusvormig signaal. Voorbeeld 4.2 Genereren van randomgetallen > rand(); 88430571674 > rand(3..30)(); 13 > rand(1000)(); 697 > evalf(rand(1000)()/250); 2.19200
86
Handleiding Maple 10
4.6 Rijen (sequenties) Een rij of sequentie is niets anders dan een aantal elementen gescheiden door komma’s. Als je bijvoorbeeld naar de operanden van een object vraagt (zie paragraaf 4.4), krijg je een rij te zien. De elementen van een rij, ook wel termen genoemd, kunnen getallen, variabelen, constanten en dergelijke zijn. Rijen hebben we al gezien bij het oplossen van vergelijkingen. Het komt voor dat er meer oplossingen zijn van een vergelijking en het programma geeft deze oplossingen dan in de vorm van een rij (zie voorbeeld 3.16). Zelf kun je er eventueel nog een oplossingsverzameling van maken door er accolades omheen te zetten. Ook kun je van een rij snel een lijst maken door er vierkante haken omheen te zetten. Er kunnen nog meer dingen met rijen gedaan worden. Je kunt op een handige manier een rij maken als je een bepaald systeem in een bestaande rij elementen kunt vinden. Meetkundige rijen, rekenkundige rijen en nog andere rijen zijn gemakkelijk te maken met het commando seq (als er tenminste systeem in de rij zit). Voorbeeld 4.3 Meetkundige rij De meetkundige rij 1, 21 , 14 , 81 ... is gemakkelijk te genereren als je de algemene term kent. Noem de algemene term van deze rij tk = 21k . > restart; tk:=1/2^k; tk :=
1 2k
> meetkundige_rij:=seq(tk,k=0..10); 1 1 1 1 1 1 1 1 1 1 meetkundige rij := 1, , , , , , , , , , 2 4 8 16 32 64 128 256 512 1024 Toelichting: Automatisch doorloopt k hier de verzameling van gehele getallen van beginpunt tot en met eindpunt van de opgegeven range. (Zie voor het begrip range paragraaf 4.3.) Voor de letter k kun je eventueel een andere letter nemen en je hoeft niet speciaal altijd bij k = 0 te beginnen. Bij het opvragen van de operanden (zie paragraaf 4.4 voor het begrip operand) van een wiskundig object geeft Maple een rij. Het is duidelijk dat een rij het enige object is waarvan je de operanden niet kunt nemen met behulp van op, behalve als de rij bestaat uit e´ e´ n element. Let op dat bij Maple 2,3 een rij is, dat 2.3 een decimaal getal is en dat 2..3 een interval (range) is! TIP: er is ook nog een dot-operator waarbij het handig is om te weten dat deze als vermenigvuldiging gebruikt kan worden (eigenlijk dotproduct). Aan weerszijden van de punt kun je het beste een spatie typen bij getallen, maar het gebruik van de dot-operator is bij getallen niet aan te raden! Kijk eens wat er gebeurt als je invoert: 2 . .33; met de nodige spaties. Een toepassing van het dotproduct met de dot-operator is te vinden in voorbeeld 4.10 en verder in paragraaf 8.2.2 bij het dotproduct van vectoren. 4.6.1 Het dollarteken voor een rij Het voorbeeld 4.3 van het maken van de meetkundige rij kan ook met behulp van het dollarteken, maar is niet zo gebruikelijk: > tk $ k=0..10; geeft dezelfde rij als in dat voorbeeld. Het betekent: alle termen tk waarbij k loopt van 0 tot en met 10 met stappen van 1. Voor korte dingen is het dollarteken vaak wel te prefereren. Zie ook bij het herhaald
4 · Overzicht van wiskundige objecten
87
differenti¨eren, bijvoorbeeld bij het invoeren van een differentiaalvergelijking van hogere orde (paragraaf 11.4.2). De betekenis en de mogelijkheden van het dollarteken wordt duidelijk in het volgende voorbeeld. Voorbeeld 4.4 Gebruik van het dollarteken > i $ i = 2/3 .. 5; 2 5 8 11 14 , , , , 3 3 3 3 3 > $ 2/3 .. 5; 2 5 8 11 14 , , , , 3 3 3 3 3 > 2/3 $ 5; 2 2 2 2 2 , , , , 3 3 3 3 3 > x$4; x, x, x, x Toelichting: Met k $ k=0..10; maak je alle waarden van k zichtbaar en je krijgt als uitvoer 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. De betekenis is namelijk: een rij met alle k waarvoor geldt dat k loopt van 0 tot en met 10. Er kunnen ook breuken in de range voorkomen om een rij te maken: alle waarden van i waarbij i loopt van 32 tot 5 met stappen van 1, waarbij 5 niet overschreden mag worden. Decimale getallen zijn ook mogelijk! Met een dollarteken v´oo´ r de range krijg je dezelfde rij. Met het dollarteken ertussen (a$b) krijg je een rij van allemaal dezelfde a’s waarbij het aantal gelijk is aan het grootste gehele getal kleiner of gelijk aan b. Zo kun je ook een rij van een aantal x-en krijgen. 4.6.2
De som van een rij
De som van een rij kan met Maple gemakkelijk geschreven worden met het inerte commando Sum en berekend worden met het commando sum. Decimale getallen zijn hierbij ook mogelijk. Na Sum kun je weer gebruikmaken van het commando value net als bij limieten (paragraaf 3.5), differenti¨eren (paragraaf 3.6) en integralen (paragraaf 3.7). Als k de lopende variabele is, moet met een range opgegeven worden wat de beginwaarde en de eindwaarde van k is, waarbij de waarde ‘oneindig’ (infinity) ook toegestaan is, dus: Sum(algemene term,k=a..b). De getallen van de range bestaan uit gehele getallen als je begint met een geheel getal. Je had echter ook een andere letter in plaats van k kunnen nemen. Voorbeeld 4.5 De som van de meetkundige rij De meetkundige rij 1, 21 , 41 , 18 ... waarbij er oneindig veel termen worden meegenomen: > restart; tk:=1/2^k: Sum(tk,k=0..infinity):%=value(%); ∞ 1 ∑ 2k = 2 k=0 Toelichting: Bij het berekenen van de som is het goed om een aantal termen van de rij even zichtbaar te maken met behulp van seq zoals in voorbeeld 4.3. In het geval van oneindig veel
88
Handleiding Maple 10
termen natuurlijk niet. Wel is het mogelijk om in alle gevallen de som eerst met het inerte commando Sum te presenteren in de offici¨ele notatie. Voorbeeld 4.6 De binomiaalontwikkeling van (a + b)n Er geldt voor n = 5: k=5 5 ∑ k a5 − k bk = (a + b)5 k=0 > restart; Sum(binomial(5,k)*a^(5-k)*b^k,k=0..5): %=value(%); 5
∑ binomial(5, k) a(5−k) bk = a5 + 5 a4 b + 10 a3 b2 + 10 a2 b3 + 5 a b4 + b5
k=0
> factor(rhs(%)); (a + b)5 > sum(binomial(5,k)*a^(5-k)*b^k,k=0..5): %=factor(%); a5 + 5 a4 b + 10 a3 b2 + 10 a2 b3 + 5 a b4 + b5 = (a + b)5 Toelichting: Let ook op het gebruik van het inerte commando Sum m´et en het commando sum z´onder hoofdletter. Voor het commando binomial wordt verwezen naar paragraaf 1.5.4.
4.7 Lijsten (lists) Een lijst (list) is een rij, bestaande uit getallen of andere objecten, die een vaste volgorde vertegenwoordigt. Je hoeft dus alleen maar om een rij een paar vierkante haakjes te zetten en je hebt een lijst waarmee de volgorde vastligt. Om er weer een rij van te maken, vraag je naar de operanden van de lijst zoals voorgedaan in paragraaf 4.4. Je bent al eens een lijst tegengekomen bij het plotcommando om meer grafieken te maken in e´ e´ n figuur (wat ook met verzamelingen kan). Het voordeel van het gebruik van een lijst in dit soort gevallen is dat er kleuren, lijndiktes of andere eigenschappen van de presentatie van de grafiek van de functies gedefinieerd kunnen worden. Kijk voor een toepassing in voorbeeld 2.2. Bij parameterkrommen (vectorfuncties) is het gebruik van een lijst juist noodzakelijk voor het garanderen van de volgorde. In paragraaf 2.6 is in de voorbeelden te zien dat er een lijst opgegeven wordt bij het plotcommando van zo’n functie: plot([x,y,t=-3..3]);. Het is belangrijk dat hier de x en de y niet verwisseld worden, dus vierkante haken! Voorbeeld 4.7 Het maken van een lijst met punten Gegeven de functie sin(2 πt). Verdeel het interval t ∈ [0, 1] in vijf gelijke stukken en maak dus zes punten die op de grafiek van de sinusfunctie liggen. Je maakt dan een rij punten waaromheen je vierkante haken zet, zodat je een lijst krijgt. Zie voorbeeld 2.38 in hoofdstuk 2. > restart;Digits:=3;punten:=[seq([i/5,evalf(sin(2*Pi*i/5))],i=0..5)]; Digits := 3 2 3 4 1 punten := [[0, 0.], [ , 0.952], [ , 0.588], [ , −0.588], [ , −0.952], [1, 0.]] 5 5 5 5
4 · Overzicht van wiskundige objecten
89
Voorbeeld 4.8 Lijst met dollarteken Een handige manier om een lijst met veel dezelfde getallen te maken is met het dollarteken $. (Zie ook paragraaf 4.6.1 voor dit teken.) Bijvoorbeeld een lijst met drie enen en vijf nullen. Je kunt dit gebruiken bij het voorbeeld in hoofdstuk 9 op de cd-rom voor het maken van filters: > [1$3,0$5]; [1, 1, 1, 0, 0, 0, 0, 0] Voorbeeld 4.9 De operanden van een lijst Om een element uit een lijst te halen met de bedoeling er eventueel mee verder te werken, kun je gebruikmaken van de operanden (zie paragraaf 4.4) maar ook van de index-notatie. Gegeven een lijst L met elementen in een bepaalde volgorde: L = [t 2 , 3t, 5t ]. Het tweede element van deze lijst wordt aangeduid met L2 en er moet L[2] ingevoerd worden om deze te krijgen. Deze methode met de index kan ook bij vectoren, rijen en verzamelingen worden toegepast! Het is daarom niet handig om lijsten, vectoren en dergelijke van een naam met index te voorzien. Het is ook mogelijk om een lijst te differenti¨eren, dat wil zeggen dat alle elementen van de lijst gedifferentieerd worden. Dat kan direct met diff(L,t). Echter om bijvoorbeeld vectoren (buiten het VectorCalculus-pakket) te differenti¨eren moet gebruikgemaakt worden van map, evenals bijvoorbeeld voor het nemen van de cosinus van elk van de elementen van de lijst L. Je werkt dan met map(cos,L). Het heeft te maken met de operanden van de lijst. Zie ook voorbeeld 4.1.
4.8 Verzamelingen (sets) Een verzameling (set) is niets anders dan een rij elementen met accolades er omheen. De volgorde van de elementen in de verzameling is niet belangrijk, bijvoorbeeld: {a, b, 4, 5} is dezelfde verzameling als {b, a, 5, 4}. Dubbele elementen worden weggelaten, bijvoorbeeld {a, a, b, 4, 4, 5} is dezelfde verzameling als {a, b, 4, 5}. De elementen van een verzameling kunnen bestaan uit allerlei wiskundige objecten. Het begrip verzameling is aan de orde gekomen bij het oplossen van stelsels vergelijkingen, zie paragraaf 3.3.5. Bij het tekenen van meer dan e´ e´ n grafiek in een figuur maakte je reeds gebruik van verzamelingen, zie voorbeeld 2.2. Met verzamelingen kan enigzins gerekend worden. Er zijn daarvoor dan ook een paar commando’s nodig. Het is mogelijk om twee verzamelingen te verenigen (union) of van elkaar af te trekken (minus). Een voorbeeld van het verenigen van twee verzamelingen vind je in voorbeeld 7.12. De doorsnede kan bepaald worden met intersect.
4.9 Vectoren Vectoren zijn objecten met specifieke rekenregels en eigenschappen, die bij Maple ingevoerd kunnen worden door middel van het commando Vector en het opgeven van een lijst waarvan de elementen getallen, variabelen of constanten zijn. Belangrijk is in ieder geval dat de volgorde vastligt. Er hoeft voor het invoeren van een vector geen pakket geactiveerd te worden en voor de meest elementaire berekeningen met vectoren, zoals lineaire bewerkingen en het inwendig product of acties met het rechtermuisknopmenu, is het activeren van het lineaire algebra pakket eerst nog niet nodig. Zie voor meer geavanceerde bewerkingen met vectoren in hoofdstuk 8. Het invoeren gaat als volgt met Vector([a,b,c]); of ;.