] >
We gaan uit van de axioma’s van Peano. Verder hebben alle natuurlijke getallen een naam. Dat maakt dat we er makkelijk over kunnen communiceren. Wat we nog niet hebben zijn de bekende bewerkingen met natuurlijke getallen: optellen, vermenigvuldigen en machtsverheffen. We hebben alleen het nemen van de opvolger. Nu is optellen in feite herhaald de opvolger nemen, vermenigvuldigen is herhaald optellen en machtsverheffen is herhaald vermenigvuldigen. In deze paragraaf gaan we dit expliciet maken. Zo expliciet dat deze bewerkingen ook met een computer kunnen worden uitgevoerd. Deze paragraaf betreft alleen de definities van optellen, vermenigvuldigen en machtsverheffen; de eigenschappen van deze bewerkingen komen in de paragrafen 2.5, 2.6 en 2.7 aan de orde.
Met ‘’ geef je het getal aan dat je krijgt door bij beginnend verder te tellen: , dus . We leggen vast wat voor willekeurige natuurlijke getallen en betekent. Daartoe nemen we een vaste, maar overigens willekeurige, en beschrijven het verband tussen de opeenvolgende getallen , , , … Daarmee is dan de betekenis van voor iedere vastgelegd. Omdat we het voor een willekeurige gedaan hebben, hebben we de betekenis van vastgelegd voor iedere en .
In de eerste regel staat wat is. De tweede regel vertelt je wat is, uitgedrukt in . Dus bijvoorbeeld:
We hebben nu bijvoorbeeld: . In plaats van kunnen we dus ook schrijven. De tweede regel bijvoorbeeld wordt dan . Deze notatie zullen we steeds vaker gebruiken.
De gegeven definitie is een voorbeeld van een inductieve of recursieve definitie. De betekenis van wordt vastgelegd met die van . De betekenis van wordt direct gegeven.
Om de som van twee getallen te bepalen kun je als volgt te werk gaan. Begin met de getallen en en neem van beide simultaan de opvolger. Herhaal dit met het resultaat, etc. Ga daarmee door totdat het eerste getal is. Het tweede getal is dan . Dit is dus een recept waarbij in iedere stap de definitie van optellen wordt gebruikt. Een schema voor :
0 | 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
De tabel wordt gemaakt van links naar rechts: de eerste kolom is de beginstand en de laatste de eindstand. Iedere kolom bepaalt eenduidig de volgende kolom. Het proces stopt als het eerste getal in de laatst gevormde kolom is (hier: ). Dit is een voorbeeld van een algoritme: het is een aaneenschakeling van opdrachten waarmee een bepaald doel wordt bereikt. Het algoritme loopt af omdat ieder getal bereikt wordt door uitgaande van herhaald de opvolger te nemen. Zo’n algoritme is geschikt om door een computer te worden uitgevoerd.
We definiëren de som van natuurlijke getallen als herhaald de opvolger nemen. Deze functie isum berust alleen op de functie succ.
Hierbij is geen gebruik gemaakt van onze krachtige tientallige notatie van getallen. Er is domweg keer een opvolger genomen.
Vermenigvuldigen is herhaald optellen:
Beginnend bij tel je er keer bij op. De betekenis van is vastgelegd in de volgende inductieve definitie.
Schrijven we in plaats van , dan wordt de tweede regel:
Begin met de getallen en . Tel bij het tweede getal op en vervang het eerste door z’n opvolger. Herhaal dit voor het resultaat, etc. Ga daarmee door totdat het eerste getal is. Het tweede getal is dan . We berekenen volgens dit algoritme.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
0 | 12 | 24 | 36 | 48 | 60 | 72 | 84 | 96 | 108 | 120 |
We voegen aan de module integer.py de code toe voor het vermenigvuldigen.
Om het product te berekenen wordt, beginnend bij er keer bijgeteld:
Machtsverheffen is herhaald vermenigvuldigen:
2.4 Definitie. Laat een natuurlijk getal zijn. Voor alle natuurlijke getallen is de betekenis van , de -de macht van , bepaald door:
De laatste regel kun je ook schrijven als: . We hebben nu bijvoorbeeld:
Merk op dat voor alle , dus ook . Verder is voor alle , behalve voor .
Begin met de getallen en . Vervang het tweede door z’n product met en het eerste door z’n opvolger, herhaal dit met het resultaat, etc. Totdat het eerste getal is. Het tweede is dan . Voor het berekenen van krijgen we:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
1 | 5 | 25 | 125 | 625 | 3125 | 15625 | 78125 |
We vullen integer.py aan met de code voor machtsverheffen.
Bijvoorbeeld: