Algebra voor
Informaticastudenten Getallen
Jean Delville: de school van Plato
Ernic Kamerich januari 2007
Inhoud 1 De gehele getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Delen met rest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Veelvouden en delers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 Eigenschappen van de relatie ‘deler’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4 Redeneren met getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5 Priemgetallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6 De grootste gemene deler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.7 Het algoritme van Euclides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.8 Een belangrijke eigenschap van de grootste gemene deler . . . . . . . . . . . . . . . . . . . . . . . 20 1.9 Gehele combinaties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.10 * Het uitgebreide algoritme van Euclides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.11 Relatief priem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.12 Delers van een product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.13 Gehele lineaire vergelijkingen in twee variabelen: voorbeeld . . . . . . . . . . . . . . . . . . . . 26 1.14 Gehele lineaire vergelijkingen in twee variabelen: theorie . . . . . . . . . . . . . . . . . . . . . . . 28 1.15 Het kleinste gemene veelvoud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1.16 Ontbinding in priemfactoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.17 * Priemdelers van een product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1.18 * De graad van een priemgetal in een getal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1.19 * Een bewijs van de hoofdstelling van de rekenkunde: de unieke priemfactorontbinding in Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2 Gehele getallen modulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Rekenen met restklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 De fundamentele eigenschap van de functie rest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Restklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 De rekenoperaties en restklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Rekenen in Z mod m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 Vergelijkingen van type ?x: ax=b in Z modulo m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7 Nuldelers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8 Delen in Z modulo m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.9 In welke gevallen kun je delen in Z mod m? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.10 Een lichaam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.11 Congruentie modulo m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.12 Een toepassing van modulo rekenen: random generators . . . . . . . . . . . . . . . . . . . . . . .
39 39 41 43 44 45 47 50 52 54 57 58 59
3 Codering van gehele, rationale en floating point getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Binaire notatie van gehele getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Machtsverheffen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Hexadecimale notatie van gehele getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Binaire codering van gehele getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 * De rationale getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62 62 64 65 65 67
ii 4 Machtsverheffen in Z modulo m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Een rekenvoorbeeld van machtsverheffen in Z modulo m . . . . . . . . . . . . . . . . . . . . . . . 4.2 Het oplossen van meervoudige congruenties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 De Chinese reststelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Reductie van rekenoperaties in Z mod mn naar Z mod m . . . . . . . . . . . . . . . . . . . . . . 4.5 * De Chinese reststelling en wiskundige structuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6 Machtsverheffen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7 Periodieke en semiperiodieke rijen van machten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.8 Het periodieke geval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.9 De stelling van Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10 De kleine stelling van Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.11 Een generalisatie van de kleine stelling van Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.12 Machten van eenheden in Zm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.13 Machten berekenen in Z modulo m via reductie naar factoren van m . . . . . . . . . . . 4.14 RSA codering 1: worteltrekken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.15 RSA codering 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69 69 71 73 74 75 76 76 77 78 79 80 81 85 87 88
5 Veeltermen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 5.1 Veeltermen als abstracte objecten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 5.2 Vermenigvuldigen van veeltermen over een lichaam . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.3 Delen met rest van veeltermen over een lichaam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.4 Delers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 5.5 De grootste gemene deler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 5.6 * Een bewijs voor de hoofdstelling over de grootste gemene deler van twee veeltermen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.7 * Een hulpmiddel voor berekeningen met de ggd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.8 * Quotienten van veeltermen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.9 * Veeltermen modulo een veelterm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 6 Complexe getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Notatie van complexe getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Het complexe vlak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Het berekenen van het argument van een complex getal . . . . . . . . . . . . . . . . . . . . . . . 6.4 De complex geconjugeerde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5 Optellen meetkundig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6 Vermenigvuldigen meetkundig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7 Machtsverheffen met natuurlijke exponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8 De e-macht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9 Eenheidswortels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10 Machten van complexe getallen met re¨ele exponenten . . . . . . . . . . . . . . . . . . . . . . . . . 6.11 Wortels van complexe getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.12 Complexe getallen en wortels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.13 De gevaren van machten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.14 De verschillende manieren om complexe getallen te representeren . . . . . . . . . . . . . 6.15 Kwadratische vergelijkingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
109 109 111 112 113 113 114 115 116 118 120 121 122 122 124 125
iii 6.16 * Logaritme en machten van complexe getallen met complexe exponenten . . . . . . . 128 7 Veeltermen ontbinden, nulpunten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 Veeltermfuncties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Nulpunten en ontbinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Delers van veeltermen over de complexe getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4 * Delers van veeltermen over de re¨ele getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5 * Delers van veeltermen over de rationale getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6 Het ontbinden van veeltermen in Z[X] en F p [X] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
129 129 130 131 132 133 134
Antwoorden en aanwijzingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Trefwoorden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Getallen, januari 2007 november 2007
Het team: Annemieke Ingelaat, Louk Gilissen, Ernic Kamerich
hoofdstuk 1
De gehele getallen
Op rekenmachines en computers is rekenen met gehele getallen een prettige taak, zolang er geen “overflow” optreedt, prettiger dan met “floats”: afrondfouten kunnen niet optreden. In veel toepassingen van computers wordt intensief gebruik gemaakt van dit rekenen met gehele getallen: digitale coderingen van geluid en beeld, codering van signalen i.h.a., maar ook versleuteling van berichten bijvoorbeeld. Dit en het volgende hoofdstuk gaan over rekentechnieken die daar een rol bij spelen. Tevens komen hier allerlei idee e¨ n te voorschijn die in latere hoofdstukken opnieuw een rol spelen.
1.1 Delen met rest Zoals je weet, zijn de natuurlijke getallen: 0, 1, 2, 3, 4, 5, . . . . De verzameling van de natuurlijke getallen duiden we aan met het symbool N. Met N ∗ bedoelen we dan de verzameling van de natuurlijke getallen ongelijk aan 0. De verzameling van de gehele getallen . . . , −4, −3, −2, −1, 0, 1, 2, 3, . . . . wordt aangeduid met Z. In het algemeen kun je wiskundig een natuurlijk getal niet door een ander natuurlijk getal delen binnen de natuurlijke getallen: jij kunt natuurlijk wel delen, maar dat zal i.h.a. geen natuurlijk getal opleveren, dus een object van een ander type. In de context van natuurlijke getallen en gehele getallen past wel delen met rest, bijvoorbeeld 30 : 7 = 4, rest 2. In computerprocessors zijn normaal basisvoorzieningen aanwezig om gehele getallen te representeren (zie paragraaf 3.1 op bldz. 62) en daarmee op te tellen, af te trekken en te vermenigvuldigen. En natuurlijk is er een test op positief, negatief of 0 zijn. Daarmee is dan ook weer delen met rest te maken, zoals je dadelijk zult zien. In C++ is delen beschikbaar door de operator /, maar een elementaire rekenprocessor hoeft niet over delen met rest te beschikken. We gaan nu er van uit dat de bewerkingen optellen, aftrekken en vermenigvuldigen in de gehele getallen beschikbaar zijn. Verder is er een test of een getal positief, negatief of 0 is. Samen met aftrekken levert dat natuurlijk een test of een getal groter is dan een ander getal. Hoe kun je delen met alleen optellen, aftrekken en vermenigvuldigen en een test op groter-dan ter beschikking? 30 door 7 delen-met rest kan worden uitgevoerd door zo veel keren 7 van de 30 af ‘als kan’, d.w.z. het maximum aantal keren om geen negatief resultaat te krijgen. Dat aantal keren noem je het quoti¨ent; wat je overhoudt noem je de rest. We gaan dat algoritme even wat preciezer opschrijven:
2
1. De gehele getallen
(1.1) algoritme voor delen: paar natuurlijke getallen DeelMetRest (natuurlijk getal a, pos nat getal b) \* specificatie invoer: natuurlijke getallen a en b met b6=0*\
\* specificatie uitvoer: natuurlijke getallen q en r zodat a = qb + r en r < b *\ { integer r = a; integer q = 0 while (r≥b) { r=r-b; q=q+1
} return ( q, r ) } Natuurlijk is bovenstaande niet syntactisch correct in C ++ ; een complete uitwerking in C++ staat iets verderop. —–? vraag: a. Als het algoritme termineert, voldoet het resultaat van dit algoritme dan aan de specificatie van de uitvoer? b. Termineert het algoritme? antwoord: a. We moeten eerst nagaan of a = qb + r aan het eind van het proces. Dat doen we door te beredeneren dat dat telkens na elke herhalingsstap geldt. Voor het gemak schrijven we de formule om naar: r =a−q·b Dat zie je met inductie: - Het klopt in het begin: r = a − 0 · b.
- Als r = a − q · b en er worden nieuwe waarden voor r en q gemaakt, die we hier maar even aanduiden met r 0 en q 0 , dan r0 = r − b q0 = q + 1 dus r 0 = a − q · b − b = a − (q + 1) · b = a − q 0 · b
Dus aan het eind geldt ook dat r = a − q · b oftewel a = r + q · b.
1.1
3
Delen met rest
Nu moeten we nog nagaan dat 0 ≤ r < b. Daartoe moeten we kijken naar de conditie van het termineren. Het algoritme stopt precies wanneer r een waarde kleiner dan b krijgt, dus r < b. We moeten alleen nog zien dat 0 ≤ r. Maar als r < 0, dan zou in de vorige stap r een waarde hebben gehad gelijk aan de huidige waarde van r plus b, dus een negatief getal plus b, dus zou toen al r een waarde kleiner dan b hebben gehad en zou het algoritme toe al gestopt zijn. Dat kan dus niet. b. In iedere stap daalt de waarde van r met een vaste waarde (b > 0). Dus r komt vanzelf ooit onder de gegeven stopwaarde. Het algoritme berekent dus uit natuurlijke getallen a en b met b 6= 0 inderdaad twee natuurlijke getallen q en r volgens de specificatie: •a=q·b+r •0≤r
—–¿ We zien dat het algoritme in bovenstaande correct is, maar een ‘goed’ algoritme? Nou, het schiet niet echt op. Zie opgave 3.2 op bldz. 64! het bewijzen van correctheid van een wiskundig algoritme Een wiskundig algoritme beschrijven en de correctheid ervan bewijzen kan als volgt worden uitgevoerd: a. Na wat intu¨ıtief nadenken over hoe je in de praktijk iets uitrekent, beschrijf je het algoritme, bijvoorbeeld als C++ programma. Let daarbij vooral op een goede leesbaarheid: kies duidelijke namen en gebruik zo nodig abstractie d.m.v. datastructuren en procedures voor complexe berekeningen. b. Het is altijd verstandig even een paar concrete voorbeelden te testen; dat kan door het programma echt in te voeren en te testen, maar vaak is het handiger in zo’n eenvoudig geval ’handmatig’ de stappen van het algoritme door te rekenen. Mocht er iets mis zijn, dan zie je de fout doorgaans sneller als je zelf rekent. c. Van iedere procedure moeten duidelijk vastgelegd zijn:
• de invoercondities (zo nodig m.b.v. test op condities in het begin van de procedure)
• de specificatie van de uitvoer. Je moet nu precies beredeneren, dat de procedure bij invoer volgens de gegeven condities iets oplevert dat aan de uitvoerspecificatie voldoet. d. Bij een redenering over het resultaat van een herhalingsstructuur is het doorgaans handig een inductieredenering te gebruiken, wellicht over iets dat constant blijft. e. Bij een herhalingsstructuur moet altijd beredeneerd worden dat deze termineert.
4
1. De gehele getallen
We hebben nu een algoritme dat getallen berekent volgens de specificatie. Het algoritme doet altijd precies hetzelfde; het zal op een andere computer op een ander tijdstip hetzelfde resultaat leveren indien de invoer gelijk blijft. Het resultaat ligt vast. Maar zou je misschien wel een ander algoritme kunnen bedenken dat ook getallen berekent volgens de bovenstaande specificatie, maar met andere resultaten? Of maakt die specificatie het onmogelijk een ander stel getallen te vinden? —–? vraag: Liggen die getallen q en r door de specificatie van de uitvoer vast? antwoord: We gaan dat als volgt aanpakken: • Stel maar eens dat q, r en q 0 , r 0 voldoen aan de specificatie.
• We gaan kijken naar de verschillen q − q 0 , r − r 0 en willen bewijzen dat die 0 zijn. Stel dus maar eens dat er naast q en r ook nog (andere?) getallen q 0 en r 0 zijn zodat a = q0 · b + r0
en
0 ≤ r0 < b
Dan dus q0 · b + r0 = q · b + r
We willen laten zien dat q = q 0 en r = r 0 . Het is daarom handig naar de verschillen te gaan kijken, in de hoop dat we kunnen zien dat die nul zijn. Daarom zetten we bovenstaande formule om in: (q 0 − q) · b = r − r 0
Conclusie: r − r 0 is een b-voud. Daarnaast volgt uit de specificatie dat r − r 0 niet ver van 0 afzit: zowel r als r 0 hebben een afstand tot 0 minder dan b en beide zitten rechts van 0 (d.w.a. ze zijn minstens 0). Zie je het voor je? Dan zie je ook dat het absolute verschil minder dan b is, preciezer: − b < r − r0 < b We kunnen dat ook formeel beredeneren:
0≤r
Trek er r 0 van af om r
− r 0 te krijgen:
− r0 ≤ r − r0 < b − r0 Nu gebruiken we dat 0 - Uit 0 - Uit r
0
(1)
≤ r 0 < b, dus
≤ r 0 volgt −r 0 ≤ 0 en dus b − r 0 ≤ b < b volgt −b < −r
0
We combineren de formules (1), (2) en (3):
− b < −r 0 ≤ r − r 0 < b − r 0 ≤ b Nu is er maar e´ e´ n b-voud tussen −b en b, namelijk 0. Dus r − r 0 = 0 en daarmee ook q 0 − q = 0. —–¿
(2) (3)
1.1
5
Delen met rest
Zo vinden we: Als a en b natuurlijke getallen zijn en b 6= 0, dan is er precies e´ e´ n geheel getal q en e´ e´ n natuurlijk getal r (let op: r ≥ 0 !) zodat a =q·b+r
(0 ≤) r < b
en
We vinden zo dus bij de natuurlijke getallen a en b precies e´ e´ n stel getallen getallen q en r zodat a=q·b+r
en
0≤r
Dat was precies de bedoeling. We hadden hier a en b positief verondersteld. Als we dit verhaal willen uitbreiden tot deling met rest van gehele getallen door gehele getallen ongelijk aan 0 moeten we nog even drie extra gevallen bekijken. Dat mag je zelf doen (zie opgave 1.4 op bldz. 9). Het resultaat is: (1.2) stelling: Als a en b gehele getallen zijn en b 6= 0, dan is er precies e´ e´ n geheel getal q en e´ e´ n natuurlijk getal r zodat a=q·b+r
en
0 ≤ r < |b|
Nu we weten dat die getallen q en r vastliggen bij gegeven a en b kunnen we ze ook een naam geven: (1.3) definitie: We zeggen dat q het gehele quoti¨ent en r de rest is bij (geheeltallige) deling van a door b 6= 0 als a=q·b+r
en
0 ≤ r < |b|
We zullen in het vervolg soms de notatie rest(a, b) gebruiken om de rest aan te duiden en het quoti e¨ nt bij deling met rest van a door b met quo(a, b) aanduiden. Ter herinnering: als a en b gehele variabelen zijn in C ++ , dan levert ‘a / b’ het quoti¨ent en ‘a % b’ de rest bij a delen door b. (1.4) voorbeeld: rest(12, 4) = 0
en
rest(40, 3) = 1
en
rest(−40, 3) = 2
Let op: de rest is altijd minstens 0, dus rest(−40, 3) is dus niet −1 (volgens het idee −40 = (−13) · 3 + (−1)), maar 2, want −40 = (−14) · 3 + 2. einde voorbeeld redeneren over de vraag of iets vastligt Gebruikelijke aanpak:
• Stel maar eens dat A en B voldoen aan de specificatie. • Laat zien dat A en B gelijk zijn, bijvoorbeeld door verschillen te berekenen en uit de specificatie af te leiden dat die verschillen 0 zijn. Of bijvoorbeeld te beredeneren dat quoti¨ enten 1 zijn.
6
1. De gehele getallen
Hier is een mogelijke uitwerking van het algoritme in C ++ (waarbij de main-procedure is weggelaten): #include
using namespace std; struct quotient_rest_pos { int quotient; int rest; quotient_rest_pos ( int q, int r ) { quotient = q; rest = r; } } ; quotient_rest_pos DeelMetRestAlgo (int a, int b) /* specificatie invoer: natuurlijke getallen a en b met b!=0 specificatie uitvoer: natuurlijke getallen q en r zodat a=qb+r en r
int r = a; int q = 0; while ( r >= b ) { r=r-b; q=q+1; } return quotient_rest_pos (q, r);
} ; quotient_rest_pos DeelMetRest (int a, int b) /* specificatie invoer: natuurlijke getallen a en b met b!=0 specificatie uitvoer: natuurlijke getallen q en r zodat a=qb+r en r
} ;
if ( b==0 ) { cout << "delen door 0 niet mogelijk"; exit (1); } if (a<0 || b<0) { cout << ı ¨nvoer: negatieve invoer nog niet geimplementeerd"; exit (1); } return DeelMetRestAlgo (a,b);
1.1
Delen met rest
7
Als je op papier gaat delen met rest, doe je dat normaal met een staartdeling. Die is veel is effici¨enter dan het bovenstaande algoritme. Laten we nog even kijken hoe dat werkt. Hier is een voorbeeld: 13 / 209191 \ 16091 13 -79 78 -11 0 -119 117 --21 13 -8 Dus 209191 = 16091 × 13 + 8. Eigenlijk is dit een verkorte schrijfwijze. Het begint met: 13 / 209191 \ 10000 130000 -----79191 Dat wil zeggen: 209191 = 10000 × 13 + 79191 en met die rest 79191 wordt nu verder gerekend. In niet-verkorte vorm zou je zo krijgen: 13 / 209191 \ 10000 + 6000 + 0 + 90 + 1 130000 -----79191 78000 ----1191 0 ---1191 1170 ---21 13 -8 Bij iedere stap trek je dus meteen n · 10 k keer het deeltal af, waarbij eigenlijk de bedoeling is dat 1 ≤ n ≤ 9 en k ∈ N, zowel n als k zo groot mogelijk zonder dat je na aftrekken een negatief getal overhoudt. Om het overzichtelijk te houden bij het opschrijven laat je na de eerste stap toe dat eventueel n = 0, om te zorgen dat je bij iedere stap k precies 1 lager neemt, maar dat is niet wezenlijk voor het feitelijke proces.
8
1. De gehele getallen
Dit is natuurlijk speciaal handig voor decimale notatie van getallen. Als je binair rekent, gaat het net een beetje anders, in feite zelfs simpeler. We zullen dat nader bekijken in het hoofdstuk over binaire codering van getallen. Zie opgave 3.2 op bldz. 64. Opgaven opgave 1.1 — oefening Bereken: a. quo(50, 13) en rest(50, 13) b. quo(−50, 13) en rest(−50, 13) c. quo(50, −13) en rest(50, −13)
d. quo(−50, −13) en rest(−50, −13) opgave 1.2 — oefening Zijn de volgende beweringen waar of niet waar? Als a, b, c en n natuurlijke getallen ongelijk aan 0 zijn, dan a. rest(a + b , c) = rest(a , c) + rest(b , c) b. rest(n · a , c) = n · rest(a , c) Voor het geval een bewering waar is, bewijs deze; anders: geef een tegenvoorbeeld en corrigeer de formule rechts van het =teken zodat je wel een correcte formule krijgt. Advies 1: Ga de formules systematisch testen door bijvoorbeeld eerste eens a, b en c vast te nemen en n een aaneensluitende serie natuurlijke getallen te laten doorlopen. Advies 2: Om correctheid van een formule te bewijzen moet je gebruik maken van definities en stellingen uit de theorie; hier kun je goed gebruik maken van de formule uit de definitie van ‘rest’: a = q · b + rest(a, b)
met
0 ≤ rest(a, b) < b
opgave 1.3 — uitdager In deze opgave kun je veelvuldig gebruik maken van de resultaten van opgave 1.2. Bijvoorbeeld: rest(5783, 7) = rest(5 × 103 + 7 × 102 + 8 × 101 + 3 , 7) Maak nu gebruik van rest(100 , 7) = . . ., rest(101 , 7) = . . ., rest(102 , 7) = . . ., rest(103 , 7) = . . ., . . . a. Leg uit hoe je zonder delen uit de (tientallige) cijfernotatie van een getal snel de rest bij delen door 2 kunt berekenen. Leg uit waarom je algoritme klopt. b. Idem voor delen door 4. c. Idem voor delen door 8. d. Idem voor delen door 9. (Voor het geval je het niet weet: kijk naar de som van de cijfers! Bereken ook rest(1000000, 9), rest(40000, 9), rest(1040000, 9) en rest(1250400, 9).) Test je algoritme met een paar niet al te kleine getallen. Advies: als je gaat beredeneren, waarom je algoritme klopt, kijk dan eens bijvoorbeeld naar rest(1457, 9) en bedenk dat 1457 = 1000 + 400 + 50 + 7.
1.1
9
Delen met rest
e. Idem voor delen door 3. f. Idem voor delen door 11. Advies: bereken eerst rest(100000, 11).
rest(10, 11),
rest(100, 11),
rest(1000, 11),
rest(10000, 11)
en
opgave 1.4 — oefening Beschrijf een functie DeelMetRestInt voor deling met rest in de gehele getallen door een bestaand algoritme deel rest pos voor deling met rest van een positief geheel getal door een positief geheel getal aan te roepen. Je kunt desgewenst daarvoor het eerder beschreven algoritme nemen, maar dat is wel zeer inefficient. Later zul je zien hoe dat veel sneller kan. Denk er aan dat je als rest een zo klein mogelijk natuurlijk getal wilt hebben, dus niet een negatief getal. Schrijf je algoritme in C++ of in een denkbeeldige taal. Bewijs de correctheid van jouw algoritme.
1.2 Veelvouden en delers We gaan nu speciaal kijken naar het geval dat rest(a, b) = 0, dus het geval dat er een getal q is zodat a = q·b, dus dat a een b-voud is. In zo’n geval zeggen we ook dat b een deler is van a. (1.5) voorbeeld: De delers van 18 zijn: 1, −1, 2, −2, 3, −3, 6, −6, 9, −9, 18, −18 Let er op dat ook 18 zelf een deler is van 18 en dat 18 hier een veelvoud van zichzelf wordt genoemd, een beetje vreemd misschien, maar in de praktijk wel handig. Omdat 1, −1, 18 en −18 nogal ‘flauwe’ delers van 18 zijn, worden de overige delers wel de echte delers van 18 genoemd. einde voorbeeld Voor een test op een computer of een geheel getal d (6= 0) deler is van een geheel getal n zul je normaal nagaan of de rest bij geheeltallig delen 0 is. Voor wiskundig redeneren is echter meestal handiger te zeggen dat d een deler is van n als n veelvoud van d is, dus als er een geheel getal q bestaat zodat n − q · d. (1.6) definitie: Laat n en d gehele getallen zijn ongelijk aan 0. We zeggen dat d een deler (Engels: divisor) is van n, of dat n een veelvoud (Engels: multiple) van d is als er een geheel getal q is zo dat q · d = n. Als d een deler van n is zeggen we ook wel “d deelt n”, en ook zeggen we wel dat n een d-voud is. het begrip deler versus de operatie delen We zeggen niet “4 is een deler van 12 want 12/4 is een geheel getal” want echt delen hoort niet thuis bij de gehele getallen: daarvoor heb je een ander type objecten nodig: de rationale getallen.
10
1. De gehele getallen
We kunnen wel zeggen: “4 is een deler van 12 want rest(12, 4) = 0” want dat is niets anders dan een variatie op de offici¨ ele definitie van het begrip deler op basis van de definitie van delen met rest, en dat laatste is wel een deel van het systeem van de gehele getallen.
(1.7) notatie: Als d een deler is van n en niet d = n = 0 noteren we dat met d | n. Om aan te geven dat d geen deler is van n (waarbij niet d = n = 0) schrijven we d - n. Door op te schrijven “d | n” geven we impliciet aan dat niet d = n = 0. Verder zullen we in zo’n geval het quoti¨ent van n bij deling door d noteren als
n . d
Let op: we hebben in dit kader geen breuken ter beschikking: omdat d | n, is er precies e´ e´ n geheel getal dat bij vermenigvuldigen met d het getal n oplevert, en dat gehele getal duiden we nu dus aan met nd . We gaan het hier niet bewijzen, maar rekenen met deze notatie gaat net zo als je van breuken gewend bent, dus bijvoorbeeld n mn m· = d d Let op:
n d
is hier echt iets anders dan wat je in C ++ aanduidt met n/d. Maak ook duidelijk onderscheid
tussen de schuine streep en de boven ingevoerde verticale streep voor “deler van”. (1.8) voorbeeld: 4 | 12
4 · 3 = 12
want
3 | −15
want
3 · (−5) = −15
−2|6
want
(−2) · (−3) = 6
3-5
1·3<5
want
en
2·3 >5
, dus 5 is geen 3-voud.
einde voorbeeld
1.3 Eigenschappen van de relatie ‘deler’ De relatie ‘is deler van’ is een z.g. orderelatie, net als ‘is kleiner dan’. De bekende eigenschap Als a ≤ b
en
b≤c
dan
a ≤ c.
kun je vertalen naar: Voor alle gehele getallen a, b en c ongelijk aan 0: Als
a | b en
b|c
dan
a | c.
bewijs: Om bovenstaande te bewijzen gebruiken we uiteraard de definitie van ‘deler’: a|b
betekent dat er een getal p is zodat
b=p·a
1.3
11
Eigenschappen van de relatie ‘deler’
b|c
betekent dat er een getal q is zodat
c =q·b
Dus c =q·p·a Aangezien q · p het product van twee gehele getallen, dus geheel is, lezen we af dat c een a-voud is, dus dat a | c. Zo zijn er meer gelijkenissen. Bijvoorbeeld: Als a ≤ b
en
n>0
dan
n·a≤n·b
Dat kunnen we hier nog wat royaler vertalen: voor alle gehele getallen a, b en c ongelijk aan 0: Als a | b
dan
n·a | n·b
Verbanden met optellen en vermenigvuldigen zijn er nog veel meer; een belangrijke daarvan is, dat de som van twee a-vouden ook een a-voud is. In formule: Als a | b
en
a|c
dan
a |b+c
Sterker nog: voor alle gehele getallen a, b, c, n en m ongelijk aan 0: Als a | b
en
a|c
dan
a |n·b+m·c
voor a, b, c, m en n gehele getallen. Deze en de vorige eigenschap kun je in de volgende opgaven zelf bewijzen. Samenvatting: (1.9) stelling: Voor alle gehele getallen a, b, c, n, m ongelijk aan 0: a. Als a | b en
b|c
dan
c. Als a | b en
a|c
dan
b. Als a | b dan
n·a | n·b
a|c a |n·b+m·c
Opgave opgave 1.5 — oefening Kijk nog eens goed hoe van stelling (1.9) onderdeel a bewezen is en bewijs dan onderdeel c. Doe dat door gebruik te maken van de definitie; bijvoorbeeld is er gegeven dat a | b, dus dat er een geheel getal p bestaat zodat b = pa. Bewijzen dat a | n · b + m · c betekent: zoek een geheel getal t zodat n · b + m · c = ta.
12
1. De gehele getallen
1.4 Redeneren met getallen Wiskundige beweringen (uiteraard ondubbelzinnig en nauwkeurig geformuleerd) bewijs je door strikt te redeneren op basis van definities en stellingen. Hier boven gebeurt er in het bewijs niet veel meer dan dat het begrip ‘deler’ vertaald wordt m.b.v. de definitie. Je gaat telkens uit van wat gegeven is en redeneert dan door naar dat wat je bewijzen moet. Gebruik nooit wat je bewijzen moet, ook al levert dat iets op dat waar is: daarmee zet je de boel logisch op zijn kop! Hier is een voorbeeld hoe je met redeneren de mist in kunt gaan. Als a deler is van bc dan is a deler van b. Zogenaamd bewijs: a is deler van bc betekent: bc = na. a is deler van b betekent: b = ma, dus bc = mac. Dat klopt als je n = mc neemt. Bovenstaande is onzin! De bewering is natuurlijk ook niet waar. Waar gaat het mis? De bewering is van type “als P dan Q” en in dat zogenaamde bewijs worden die beide uitspraken gewoon gelijk behandeld. We hadden zo moeten beginnen: Laat gegeven zijn dat a deler is van bc, dus dat een geheel getal n bestaat zodat b = na. We willen bewijzen dat dan a deler is van b, dus dat er een geheel getal m bestaat zodat b = ma. Kortom: gegeven is bc = na met a, b, c, n ∈ Z. We we zoeken een geheel getal m zodat b = ma. We nemen nu m = nc . . . Ja, hier zie je meteen dat deze poging tot bewijs mis gaat:
n c
hoeft niet te bestaan (in onze wereld van
uitsluitend gehele getallen). Dat een poging tot bewijs mis gaat betekent natuurlijk nog niet dat de bewering onwaar is. Daar heb je een tegenvoobeeld voor nodig, maar dat kun je hier zelf gemakkelijk verzinnen. Moraal:
Gebruik nooit wat je wilt bewijzen!
Als je probeert een bewering te bewijzen waarin zo iets staat als ”a - b”, dan kun je dat vertalen in ”voor alle p ∈ Z geldt p · a 6= b”. Dat leidt tot lastige redeneringen, waar je gemakkelijk fouten kunt maken. (1.10) voorbeeld: Hier komt een kronkel! We gaan bewijzen: als a - b en c - d, dan ab - cd. Stel a - b, dus voor alle p ∈ Z :
ap 6= b
Stel c - d, dus voor alle q ∈ Z :
cq 6= d
Vermenigvuldigen levert: voor alle p, q ∈ Z :
ac · pq 6= bd
1.4
13
Redeneren met getallen
Omdat ieder geheel getal k te schrijven is als een product van twee gehele getallen (je kunt ´e´en daarvan 1 nemen!) geldt dus voor alle k ∈ Z :
ac · k 6= bd
Dus ac - bd. De bewering die we hier probeerden te bewijzen is fout! Verzin zelf maar een tegenvoorbeeld. Waar zit de fout? Het redeneren met 6= is een gevaarlijke bezigheid: 6 6= 8 en 20 6= 15, maar 6 · 20 = 8 · 15. einde voorbeeld (1.11) advies: Als je een bewering wilt bewijzen waarin iets staat als e¨ r is geen . . . o¨ f ”voor alle . . . geldt . . . 6= . . .”, gebruik dan zo mogelijk een bewijs uit het ongerijmde. (1.12) voorbeeld: Hier is nog een fout bewijs. In dit voorbeeld gaat het om ontkenningen (‘is niet gelijk aan’) en dat suggereert dus volgens het voorgaande advies een bewijs uit het ongerijmde. Bewering: als a 6= b dan ac 6= bc. Zogenaamd bewijs: uit het ongerijmde! Als a = b, dan a − b = 0. Dus (a − b) · c = 0 · c = 0, dus ac − bc = 0, dus ac = bc, maar dat is niet waar. Klaar! Weer onzin! Deze keer hebben we een foute versie van bewijs uit het ongerijmde gebruikt. De bewering is van type “als P dan Q” en een bewijs uit het ongerijmde zou dan z´o werken: Stel dat P waar is en Q niet waar is . . . dus P is niet waar. Strijdig. In dit geval: we zouden veronderstellen dat ac = bc en daaruit moeten kunnen concluderen dat a = b. Maar dat kunnen we niet, want we kunnen niet zomaar die c ‘wegstrepen’, immers, c zou wel eens nul kunnen zijn! einde voorbeeld Opgaven opgave 1.6 — uitdager, inleveren Onderzoek van elk van de volgende beweringen of deze waar is voor alle gehele waarden ongelijk aan 0 van de variabelen. Zo ja, bewijs dat (m.b.v. de definitie van ‘deler’), zo nee geef een tegenvoorbeeld. Telkens zijn a, b, c, d gehele getallen ongelijk aan 0. a. a | c en b | c
b. a | c en b | d
=⇒ =⇒
a+b |c
a·b| c·d
14
1. De gehele getallen
opgave 1.7 — uitdager, inleveren Onderzoek van elk van de volgende beweringen of deze waar is voor alle gehele waarden ongelijk aan 0 van de variabelen. Zo ja, bewijs dat (m.b.v. de definitie van ‘deler’), zo nee geef een tegenvoorbeeld. Telkens zijn a, b, c, d gehele getallen ongelijk aan 0. a. a | c en b | c
=⇒
a·b| c
b. a - b en b | c
=⇒
d. a | b en b - c
=⇒
a-c
e. a - c en b - c
=⇒
ab - c
f. c - a en c - b
=⇒
c - ab
c. a | b + c en b - c
a-c
=⇒
a-c
opgave 1.8 — uitdager Hier zijn twee foute bewijzen voor de bewering c - aenc - b
=⇒
c - ab
a. Uit c - a volgt pc 6= a voor alle p ∈ Z. Uit c - b volgt qc 6= b voor alle q ∈ Z. Dus pqc 6= ab voor alle p, q ∈ Z, dus rc 6= ab voor alle r ∈ Z. Dus c - bc. Wat is er fout in dit bewijs? b. Uit c/nmida volgt a = pc + r met p ∈ Z en 0 ≤ r < c. Uit c/nmidb volgt b = qc + s met q ∈ Z en 0 ≤ s < c. Dus ab levert bij delen door c ook een rest ongelijk aan 0. Wat is er fout in dit bewijs? opgave 1.9 — uitdager, extra oefening Onderzoek van elk van de volgende beweringen of deze waar is voor alle gehele waarden ongelijk aan 0 van de variabelen. Zo ja, bewijs dat (m.b.v. de definitie van ‘deler’), zo nee geef een tegenvoorbeeld. Telkens zijn a, b, c, d gehele getallen ongelijk aan 0. a. a - c en b - c
=⇒
ab - c2
b. a | c en b - c
=⇒
ab - c2
c. a | c en ab - c2
d. a - c en a2 | bc
e. a | c en a2 - bc
=⇒
b-c
=⇒
a2 | c
=⇒
a-b
1.4
Redeneren met getallen
15
1.5 Priemgetallen De priemgetallen zijn de natuurlijke getallen die geen delers hebben behalve 1 en zichzelf, met e´ e´ n uitzondering: we noemen 1 geen priemgetal. (1.13) definitie: Een natuurlijk getal p heet een priemgetal (Engels: prime number) als 1 en p de enige natuurlijke getallen zijn die p delen en p 6= 1. De eerste priemgetallen zijn 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, . . .. Zo kun je natuurlijk nog wel een tijdje doorgaan! Maar kijk nu eens naar heel grote getallen. Dan zijn er wel erg veel getallen die kleiner zijn, dus lijkt de kans groot dat daar wel ergens een deler bij is. Houdt die rij priemgetallen ergens op? Dat is een vraag die al in de oudheid beantwoord is: —–? vraag: Zijn er eindig of oneindig veel priemgetallen? antwoord: We gaan bewijzen dat er oneindig veel priemgetallen bestaan. Dat gaan we doen door te veronderstellen dat het er maar eindig veel zijn en daaruit een tegenspraak af te leiden: een bewijs uit het ongerijmde. bewijs: Stel dat er maar eindig veel priemgetallen zijn, zeg p 1 , p2 , . . . , pm . Bekijk het natuurlijke getal n := 1 + p 1 p2 · · · pm . Dat is dan dus geen priemgetal. De kleinste deler van n is natuurlijk 1, neem nu de op e´ e´ n na kleinste deler van n. Dat is dan zeker een priemgetal, want als dat getal nog een echte deler zou hebben, dan zou dat een kleinere deler van n zijn. Dus n is deelbaar door een priemgetal. Als we de priemgetallen even zo nummeren, dat n juist te delen is door p 1 , dan krijgen we: p1 | 1 + p 1 p2 p3 · · · p m Er is dus een geheel getal q met q · p 1 = 1 + p 1 p2 p3 · · · p m (q − p2 p3 · · · pm )p1 = 1 Dat kan niet: 1 is niet een veelvoud van een geheel getal p 1 dat groter is dan 1. De veronderstelling dat er maar eindig veel priemgetallen zouden zijn leidt dus tot een tegenspraak. Conclusie: (1.14) stelling: Er zijn oneindig veel priemgetallen. —–¿ Priemgetallen spelen een belangrijke rol in sommige coderingtechnieken.
16
1. De gehele getallen
Opgaven opgave 1.10 — oefening Ga na of de volgende getallen priem zijn. a. 301 b. 569 c. 1001 opgave 1.11 — programmeer Verzin een algoritme om na te gaan of een getal priem is of om een echte deler ervan op te sporen. (Het zoeken van snelle en effici¨ente algoritmen voor dit doel staat sterk in de belangstelling i.v.m. het kraken van sleutels voor coderingen.) Programmeer dit in C ++ , test je programma en beredeneer tenslotte dat het correct is. Voor grote getallen is het prettig als het programma effici¨ent werkt, dus zo weinig mogelijk hoeft te rekenen. Hoeveel vermenigvuldigingen en hoeveel delingen heeft jouw algoritme nodig om te testen of 13789 priem is? (Je kunt dat door uitbreiden van het programma zelf testen!)
1.6 De grootste gemene deler Als je de vergelijking in x ∈ R
80x2 − 32x + 56 = 0
wilt oplossen, dan zul je doorgaans eerst even alle co¨effici¨enten door 8 gaan delen. In veel gevallen is het nuttig om gemeenschappelijke delers van een stel gehele getallen te vinden, omdat het alleen maar gaat om de verhouding en je dan kunt vereenvoudigen als je alle getallen door zo’n gemeenschappelijke deler deelt. Het beste kun je dan delen door de grootste gemeenschappelijke deler. Als je twee gehele getallen a en b neemt, dan hebben ze zeker gemeenschappelijke delers, dank zij het feit dat we die flauwe delers 1 en −1 ook als delers hebben geaccepteerd. Als a = b = 0, dan zijn alle gehele getallen gemeenschappelijke delers, maar als minstens e´ e´ n van beide getallen niet 0 is, dan zijn er maar eindig veel gemeenschappelijke delers en is er dus ook een grootste. We kunnen dus defini¨eren: (1.15) definitie: Laat a en b gehele getallen zijn. We zeggen dat d ∈ Z een gemene deler (Engels: common divisor) is van a en b als d | a en d | b. Als a 6= 0 of b 6= 0 zijn er slechts eindig veel gemene delers van a en b. Dus is er een grootste. We noemen die de grootste gemene deler (Engels: greatest common divisor, gcd) van a en b en noteren hem als ggd(a, b). (1.16) voorbeeld: De De De De
delers van 24 zijn: ±1, ±2, ±3, ±4, ±6, ±8, ±12, ±24. delers van −18 zijn: ±1, ±3, ±6, ±9, ±18. gemene delers van 24 en −18 zijn: ±1, ±2, ±3, ±6. grootste gemene deler van 24 en −18 is dus 6.
einde voorbeeld
1.4
Redeneren met getallen
17
Het is duidelijk dat ggd(a, b) een natuurlijk getal ≥ 1 is en dat ggd(a, b) = ggd |a|, |b| .
We hebben in bovenstaande definitie alleen gekeken naar de gemene delers en de grootste gemene deler van twee gehele getallen (die niet beide 0 zijn); het ligt voor de hand hoe je dat voor een langer rijtje getallen zou moeten doen.
Het berekenen van de grootste gemene deler is een basistechniek om met breuken (rationale getallen) te kunnen rekenen t.b.v. het vereenvoudigen. Voor het invoeren van een type ‘rational’ in software is deze operatie dus onmisbaar.
1.7 Het algoritme van Euclides In principe kun je de grootste gemene deler van twee getallen a en b nu uitrekenen door eerst alle delers van a en die van b te bepalen en vervolgens de grootste van de gemene delers te nemen. Maar deze methode verloopt zeer moeizaam omdat het vinden van de delers van een getal een tijdrovende zaak kan zijn. Er is echter een snelle methode om ggd(a, b) te bepalen, e´ e´ n van de oudste algoritmen: het algoritme van Euclides. Dat is gebaseerd op het volgende idee: veronderstel dat a > b, dan ggd(a, b) = ggd(a − b, b) en hiermee hebben we het probleem gereduceerd, want we hebben nu een paar getallen gekregen dat ‘kleiner’ is dan het voorgaande. Laten we de bovenstaande bewering eerst even bewijzen: (1.17) lemma: Laat a en b gehele getallen zijn, niet beide 0. Dan ggd(a, b) = ggd(a − b, b). bewijs: We gaan bewijzen • dat iedere gemene deler van a en b ook gemene deler van a − b en b is,
• en eveneens dat iedere gemene deler van a − b en b ook gemene deler van a en b is.
Daarmee krijgen we natuurlijk ook dat de grootsten van beiden gelijk zijn. - Stel dat q | a en q | b. Dan zijn er gehele getallen u en v zodat a = u · q en b = v · q. Dus a − b = uq − vq = (u − v)q, dus q | a − b; we wisten al dat q | b, dus q is gemene deler van a − b en b.
- Stel dat q | a − b en q | b. Dan zijn er gehele getallen u en v zodat a − b = u · q en b = v · q. Dus a = a − b + b = uq + vq = (u + v)q, dus q | a; we wisten al dat q | b, dus q is gemene deler van a en b. Gevolg ggd(a, b) = ggd(a − b, b) = ggd((a − b) − b, b) = ggd(((a − b) − b) − b, b) = . . . Daarmee zien we:
18
1. De gehele getallen
(1.18) lemma: Laat a en b gehele getallen zijn, beide niet 0. Dan ggd(a, b) = ggd(rest(a, b), b) Zo kunnen we gemakkelijk de grootste gemene deler bepalen: ggd(3000, 777) = ggd(3000 − 3 × 777, 777) = ggd(669, 777) = ggd(777, 669) = ggd(777 − 1 × 669, 669) = ggd(108, 669) = ggd(669, 108) = ggd(669 − 6 × 108) = ggd(21, 108) = ggd(108, 21) = ggd(108 − 5 × 21) = ggd(3, 21) = ggd(21, 3) = ggd(21 − 7 × 3, 3) = ggd(0, 3) = ggd(3, 0) = 3 Een handige manier van opschrijven van de berekening is als volgt, met een aaneenschakeling van staartdelingen tot je rest 0 krijgt. 777 / 3000 \ 3 2331 ---669 / 777 \ 1 669 --108 / 669 \ 6 648 --21 / 108 \ 5 105 --3 / 21 \ 7 21 -0 Let wel even goed op, hoe en waar je nu de grootste gemene deler afleest! Het algoritme van Euclides kun je formeel zo opschrijven: Laat a en b gehele getallen zijn, beide ≥ 0 en niet tegelijk beide 0. Dan ggd(a,b) =
als b=0 dan a anders als a
als b=0 dan a anders als a
1.4
Redeneren met getallen
19
maar omdat rest(a, b) < b zou je dan bij de volgende stap de argumenten gaan verwisselen (derde regel van de beschrijving), dus is het nog handiger hiervan te maken: ggd(a,b) = als b=0 dan a anders als a¡b dan ggd(b,a) anders ggd( b , rest(a,b) ) Dat algoritme kun je bijvoorbeeld als volgt schrijven in C ++ : (1.19) algoritme van Euclides: #include using namespace std; int EuclidesAlgo(int a, int b) /* invoer specificatie: twee natuurlijke getallen, niet beide nul uitvoer specificatie: de grootste gemene deler van a en b */ {
if ( b==0 ) return a; else return EuclidesAlgo(b, (a % b));
} ;
int Ggd (int a, int b) /* invoer specificatie: twee gehele getallen, niet beide nul uitvoer specificatie: de grootste gemene deler van a en b */ {
if ( a==0 && b==0 ) { cout << "ggd(0,0) bestaat niet" << endl ; exit (1); } return EuclidesAlgo( abs(a) , abs(b) );
} ; We moeten nu nog nagaan of het algoritme doet wat het belooft in de specificatie. Maar dat volgt direct uit lemma (1.18) en het feit dat ggd(a, 0) = a als a > 0.
20
1. De gehele getallen
1.8 Een belangrijke eigenschap van de grootste gemene deler Als je nog eens naar het rekenvoorbeeld ggd(3000, 777) = 3 kijkt, dan zie je dat je vanuit 3 ook terug kunt rekenen: 3 = 108 − 5 × 21 = 108 − 5 × (669 − 6 × 108) = = 31 × 108 − 5 × 669 = 31 × (777 − 669) − 5 × 669 = = 31 × 777 − 36 × 669 = 31 × 777 − 36 × (3000 − 3 × 777) = = 139 × 777 − 36 × 3000 Resultaat: 3 = −36 × 3000 + 139 × 777 We zeggen wel, dat 3 een gehele combinatie is van 3000 en 777. Aan het algoritme van Euclides kun je zien dat algemeen geldt: Laat a en b gehele getallen zijn met a en b niet beide 0. Dan zijn er gehele getallen p en q zo dat ggd(a, b) = pa + qb —–? vraag: Zijn die getallen p en q uniek of zijn er meer mogelijkheden? antwoord: Voorbeeld: ggd(48, 30) = 6 = 2 × 48 − 3 × 30 maar ook bijvoorbeeld ggd(48, 30) = 6 = 2 × 48 + 240 − 3 × 30 − 240 = 7 × 48 − 11 × 30 Verderop in dit hoofdstuk zul je zien hoe je ze allemaal kunt vinden. —–¿ Opgave opgave 1.12 — oefening a. Bereken handmatig ggd(5605, 12508) b. Bereken getallen p en q zodat ggd(5605, 12508) = 5605p + 12508q c. Bereken handmatig ggd(225134, 83798). d. Bereken getallen p en q zodat ggd(225134, 83798) = 225134p + 83798q
1.4
21
Redeneren met getallen
1.9 Gehele combinaties We weten nu dat de grootste gemene deler van a en b een gehele combinatie van a en b is. Laten we nu eens de verzameling V van alle gehele combinaties van a en b onderzoeken: V := { ma + nb | m en n geheel } Omdat de grootste gemene deler van a en b een deler is van a en van b, is die ook een deler van ma + nb, dus van elk element van V . Dus elk positief element van V is minstens zo groot als die grootste gemene deler. Maar, zoals we zojuist gezien hebben, de grootste gemene deler is zelf een element van V . Dus is de grootste gemene deler het kleinste positieve element van V . Daarmee komen we tot het (1.20) vermoeden: Laat d de grootste gemene deler van de gehele getallen a en b zijn. De verzameling van alle gehele combinaties van a en b is gelijk aan de verzameling veelvouden van d. In formule: { ma + nb | m ∈ Z en
n ∈ Z } = { kd | k ∈ Z }
bewijs: - Neem een gehele combinatie van a en b, zeg ma + nb (met m ∈ Z en n ∈ Z). Per definitie is d een deler van a, dus er is een geheel getal p met a = p · d. Zo is er ook een gehele q zodat b = q · d. Samen: ma + nb = mpd + nqd = (mp + nq)d dus ma + nb is een veelvoud van d. - Neem een geheel veelvoud van d, zeg k · d met k geheel. We weten al dat d een gehele combinatie van a en b is, zeg d = ma + nb met m en n geheel. Dan k · d = k · (pa + qb) = (kp)a + (kq)b dus kd is een gehele combinatie van a en b.
22
1. De gehele getallen
(1.21) stelling: De verzameling van alle gehele combinaties van a en b is gelijk aan de verzameling veelvouden van de grootste gemene deler van a en b: { pa + qb | p en q geheel } = { t · ggd(a, b) |
t geheel }
Anders gezegd: De kleinste positieve gehele combinatie van twee gehele getallen a en b is juist de grootste gemene deler van a en b. Nog anders gezegd: • Er bestaan gehele getallen p en q zodat pa + qb = ggd(a, b).
• Als n = pa + qb en p en q zijn gehele getallen, dan Opgaven
opgave 1.13 — oefening Vul de laatste zin van de stelling aan. Vergeet vooral niet je antwoord te controleren met de lijst van antwoorden. opgave 1.14 — inleveren Bewijs of weerleg: Als a|c en b|d dan ggd(a, b) | ggd(c, d). opgave 1.15 — inleveren Bewijs of weerleg met behulp van de tot hier behandelde definities en stellingen dat ggd(ma, mb) = m · ggd(a, b) als m een natuurlijk getal is en m > 0. Waarschuwing: als je dit wilt bewijzen, kijk dan heel kritisch naar iedere stap in je bewijs en geef telkens precies aan welke stelling je gebruikt.
opgave 1.16 — oefening In de volgende onderdelen zijn de getallen klein genoeg om de antwoorden met een beetje proberen te vinden. Doe dat niet, maar gebruik de methoden die hier boven behandeld zijn. De opgave is bedoeld om je aan de hand van een concreet voorbeeld een algemene rekenmethode voor dit probleem te laten construeren, maar zonder je nodeloos veel rekenwerk te bezorgen. a. Bepaal met behulp van het algoritme van Euclides de grootste gemene deler van 546 en 238. b. Schrijf voor elk van deze tweetallen van gehele getallen hun ggd als gehele combinatie van deze getallen. c. Zijn de antwoorden die je bij het vorige onderdeel gegeven hebt uniek of zijn er meer mogelijkheden? opgave 1.17 — oefening Ook deze opgave is bedoeld om je aan de hand van een concreet klein voorbeeld een algemene rekenmethode voor dit probleem te laten construeren. Ga dus niet proberen met wat gokken een antwoord te geven, maar ga echt rekenen met het algoritme van Euclides. a. Bepaal met behulp van het algoritme van Euclides de grootste gemene deler van: 170 en 442 b. Schrijf voor elk van deze tweetallen van gehele getallen hun ggd als gehele combinatie van deze getallen. c. Zijn de antwoorden die je bij het vorige onderdeel gegeven hebt uniek of zijn er meer mogelijkheden?
1.4
23
Redeneren met getallen
opgave 1.18 — uitdager, inleveren Bewijs of weerleg in Z voor a, b ∈ Z en a, b, a + b, a − b allemaal ongelijk aan 0: ggd(a + b, a − b) = ggd(a, b)
1.10 * Het uitgebreide algoritme van Euclides Zoals je nu weet kun je de grootste gemene deler van twee gehele getallen a en b (ongelijk aan 0) schrijven als gehele combinatie ggd(a, b) = r · a + s · b met r en s gehele getallen. Je kunt dergelijke r en s door gewoon terugrekenen in het algoritme van Euclides met de hand bepalen, maar hoe laat je een computer dat doen? Laat d := ggd(a, b). Volgens het algoritme van Euclides krijgen we een rij gehele getallen t 1 , t2 , t3 , · · · , tn met t1 := a, t2 := b en tenslotte tn = d met tk+1 = rest(tk−1 , tk ) waarbij rest(tn−1 , tn ) = 0. Om nu terug te rekenen hebben we natuurlijk ook de quoti¨enten q k nodig: tk−1 = qk · tk + tk+1 Bij het terugrekenen gaan we z´o te werk: stel dat we al gevonden hebben: d = rk tk + sk tk+1 We gaan nu terugrekenen door in te vullen dat t k+1 = tk−1 − qk tk : d = rk tk + sk (tk−1 − qk tk ) = sk tk−1 + (rk − sk qk )tk We willen dit nu weer schrijven als d = rk−1 tk−1 + sk−1 tk Dus moeten we nemen: rk−1 := sk
en
sk−1 := rk − sk qk
Uit het eerste deel zien we dat we de r i ’s door de sj ’s kunnen vervangen of omgekeerd. Het eerste blijkt prettig te werken: Als we nu overal de r i ’s vervangen door si+1 , dan krijgen we: d = sk+1 tk + sk tk+1 en we kunnen de si ’s berekenen met de recursieve formule: sk−1 := sk+1 − sk qk Tenslotte vinden we d = s 2 · t1 + s1 · t2 oftewel d = s2 · a + s 1 · b Met behulp van bovenstaande is het uitgebreide algoritme van Euclides te maken, dat niet alleen de ggd van
24
1. De gehele getallen
twee gehele getallen (ongelijk aan 0) berekent, maar tevens de co¨effici¨enten van een gehele combinatie van die getallen die de ggd oplevert. Opgave opgave 1.19 — programmeer Construeer een algoritme in C++ zoals bedoeld in bovenstaande tekst en test je programma.
1.11 Relatief priem Als van twee gehele getallen de grootste gemene deler 1 is, dan zeggen we dat ze relatief priem zijn: (1.22) definitie: We zeggen dat twee gehele getallen a en b, niet beide 0, relatief priem zijn als ggd(a, b) = 1 Als a en b relatief priem zijn, dan zijn er dus volgens stelling (1.21) op bldz. 22 getallen p en q zodat pa + qb = 1. Anderzijds, voor alle gehele getallen p en q is ggd(a, b) een deler van pa + qb, dus als er gehele getallen p en q bestaan zodat pa + qb = 1, dan is ggd(a, b) een deler van 1, dus ggd(a, b) = 1. Zo zien we: (1.23) stelling: De gehele getallen a en b zijn relatief priem dan en slechts dan als er p, q ∈ Z bestaan zo dat pa + qb = 1. Uit twee gehele getallen, beide ongelijk aan 0, kun je twee gehele getallen maken door deze beide getallen te delen door hun ggd. De twee getallen die je zo krijgt zijn relatief priem. Bijvoorbeeld, de getallen 42 en 90 hebben als ggd 6. De getallen
42 6
= 7 en
90 6
= 15 zijn relatief priem.
(1.24) stelling: Als a en b gehele getallen zijn en d is hun ggd, dan zijn a en b beide een veelvoud van die d. We krijgen hieruit dus twee nieuwe gehele getallen
a d
en db . Die zijn relatief priem.
Je mag deze stelling zelf gaan bewijzen. Opgave opgave 1.20 — oefenen in wiskundig bewijzen Laat a en b gehele getallen zijn, beide ongelijk aan 0, en d hun grootste gemene deler. Bewijs dat
a d
en
b d
relatief priem zijn.
1.12 Delers van een product Als c een deler is van a · b, kun je dan concluderen dat c een deler is van a of een deler is van b? Je ziet vast wel zonder echt te gaan rekenen dat 12 een deler is van 15 × 28. Als 12 een deler is van een product a · b, dan kan het best zijn dat 3 een deler is van a en 4 een deler is van b, maar dat 12 geen deler is van a en evenmin van b. Maar als je weet dat ggd(12, a) = 1, dan denk je vast wel dat dan toch 12 een deler is van b. Dat wordt bevestigd door de volgende, vaak toegepaste stelling:
1.12
25
Delers van een product
(1.25) stelling: Laat a, b en d gehele getallen zijn met • d | a · b en
• a en d relatief priem: ggd(a, d) = 1 dan d|b. bewijs: We vertalen meteen het gegeven dat a en d relatief priem zijn: er zijn dus gehele getallen s en t met s·a+t·d =1 Nu moeten we b nog in beeld brengen en verband leggen met a · b, laten we daarom alles maar eens met b vermenigvuldigen: s·a·b+t·d·b=b We willen nagaan of d deler is van b, dus van s·a·b+t·d·b Omdat d toch al een factor is van de tweede term, is de vraag in feite of d deler is van de eerste term. Dat is zo, want d|a · b volgens de gegevens. een alternatief bewijs? Misschien zou je denken dat je dit ook kunt bewijzen als volgt: ‘Er zitten geen echte delers van d in die a, maar wel is d een deler van a · b, dan zitten dus alle delers van d in die b.’ Nog afgezien van de nogal vage formulering, is er een probleem: nergens wordt hier gebruik gemaakt van definities of stellingen. Het is wel wiskundige intu¨ıtie, maar geen bewijs. Als je dit idee goed zou willen uitwerken, zou je kunnen denken aan ontbinding van a en b in producten van machten van priemgetallen. De benodigde stellingen kun je in het vervolg van dit hoofdstuk wel vinden, maar om die te bewijzen wordt de bovenstaande stelling als basis gebruikt. Dat idee is ook daarom hier onbruikbaar.
Opgaven opgave 1.21 — uitdager Onderzoek van elk van de volgende beweringen of deze waar is voor alle gehele waarden van de variabelen. Zo ja, bewijs dat m.b.v. de definitie van ‘deler’ en van ‘relatief priem’ en stelling (1.23) op bldz. 24, zo nee geef een tegenvoorbeeld. In elk van de gevallen zijn a, b en c gehele getallen, maar bovendien is telkens gegeven dat a en b relatief priem zijn. Let op: als je gehele getallen gaat zien als producten van priemgetallen, dan kun je vaak snel zien of iets waar of niet waar is. Maar ontbinding in priemfactoren komt in de volgende paragrafen aan de orde; die mag je nu niet gebruiken. a. a en b zijn relatief priem, a | c en b | c
b. a en b zijn relatief priem, c - a en c - b
=⇒ =⇒
a·b|c c - ab
26
1. De gehele getallen
opgave 1.22 — uitdager Laat a, b en c gehele getallen zijn. Veronderstel dat ggd(a, c) = 1
en
ggd(b, c) = 1
Bewijs met gebruikmaking van stelling (1.23) op bldz. 24 of weerleg dat ggd(ab, c) = 1
1.13 Gehele lineaire vergelijkingen in twee variabelen: voorbeeld In paragraaf 1.9 op bldz. 21 heb je gezien dat de grootste gemene deler van twee gehele getallen a en b te schrijven is als een gehele combinatie van a en b, maar ook dat de co¨effici¨enten niet vastliggen. We hebben toen niet gezocht naar alle mogelijke gehele combinaties: daar waren we toen nog niet aan toe. Je hebt ook gezien dat de gehele combinaties van a en b precies de veelvouden van de grootste gemene deler van a en b vormen. Hier gaan we nu bij een gegeven geheel getal c alle gehele combinaties van a en b opsporen die gelijk zijn aan c. (1.26) voorbeeld: Het onderstaande voorbeeld is niet bedoeld om te laten zien, hoe je dit type probleem normaal oplost, maar is een inleiding op de theorie over dit onderwerp. We gaan zoeken naar alle gehele getallen p en q zodat 48 · p + 30 · q = 18 De eerste vraag is natuurlijk, of zulke p en q wel bestaan. Volgens stelling (1.21) op bldz. 22 bestaan zulke p en q als 18 een veelvoud van ggd(48, 30) is, en als dat niet het geval is, bestaan zulke p en q niet. Nu is ggd(48, 30) = 6 en 18 is een veelvoud van 6, dus zulke p en q bestaan en door het algoritme van Euclides uit te voeren en dan terug te rekenen kunnen we een oplossing vinden: p = 3 · 2 = 6 en q = 3 · (−3) = −9. Resultaat: 48 · 6 + 30 · (−9) = 18 Tot nu toe niets nieuws, maar nu de vraag naar alle oplossingen. Zoals we meestal te werk gaan bij de vraag of er meer oplossingen zijn, gaan we een alternatieve keuze voor p en q vergelijken met de reeds gevonden oplossing: 48 48
· ·
p 6
+ +
30 30
· ·
q −9
= =
We trekken beide vergelijkingen van elkaar af: 48 · (p − 6) + 30 · (q + 9) = 0 Die zetten we om in 48 · (p − 6) = −30 · (q + 9)
18 18
1.13
27
Gehele lineaire vergelijkingen in twee variabelen: voorbeeld
We kunnen deze vergelijking nog vereenvoudigen door links en rechts te delen door ggd(48, 30), dus door 6: 8 · (p − 6) = −5 · (q + 9) We zien dat 8 een deler is van 5 · (q + 9). Nu kunnen we stelling (1.25) op bldz. 25 gebruiken:
8 en 5 zijn relatief priem, dus 8 is een deler van q + 9, d.w.z. dat er een geheel getal k bestaat met q + 9 = 8k: q = −9 + 8k Door invullen krijgen we: 8 · (p − 6) = −5 · 8k p = 6 − 5k We hebben nu gevonden: Als 48 · p + 30 · q = 18 dan is er een geheel getal k met
p = 6 − 5k
en
q = −9 + 8k
We moeten nu nog nagaan, voor welke gehele getallen k er geldt dat p = 6−5k en q = −9+8k ook echt een oplossing vormt. Dat doen we door invullen: 48 · (6 − 5k) + 30 · (−9 + 8k) = 48 · 6 + 48 · (−5k) + 30 · (−9) + 30 · 8k = = 288 − 240k − 270 + 240k = 18 Het klopt dus voor ieder geheel getal k. De oplossingen zijn dus: p = 6 − 5k
en
q = −9 + 8k
met
k∈Z
Terugkijkend op de oplossing valt op, dat we na enige tijd vereenvoudigd hebben door te delen door de grootste gemene deler van 48 en 30. Je zou zo denken, dat we dat misschien beter eerder hadden kunnen doen. Dat zullen we in het volgende stukje theorie inderdaad doen. einde voorbeeld Opgave opgave 1.23 — oefening Ga net zo te werk als in bovenstaand voorbeeld om alle gehele getallen x en y te vinden zodat 238x + 770y = 112
28
1. De gehele getallen
1.14 Gehele lineaire vergelijkingen in twee variabelen: theorie —–? vraag: Gegeven gehele getallen a, b en c, alle drie ongelijk aan 0. Gevraagd alle gehele getallen p en q zodat a·p+b·q =c antwoord: We zoeken gehele combinaties van a en b die gelijk zijn aan c. Volgens stelling (1.21) op bldz. 22 kan dat alleen als c een veelvoud van ggd(a, b) is. Laten we dus nu veronderstellen dat dat het geval is. In aansluiting op de opmerking aan het eind van het vorige voorbeeld gaan we meteen nu de vergelijking vereenvoudigen door links en rechts te delen door ggd(a, b): b c a ·p+ ·q = ggd(a, b) ggd(a, b) ggd(a, b De nieuwe co¨effici¨enten van p en q zijn nu relatief priem (zie stelling (1.24) op bldz. 24). We zouden die nieuwe co¨effici¨enten a0 en b0 kunnen noemen, maar we doen het nu anders: we veronderstellen dat we dit delen al tevoren gedaan hadden en dat daardoor a en b al relatief priem waren, dus dat ggd(a, b) = 1. Ons probleem wordt zodoende: Gegeven gehele getallen a, b en c alle drie ongelijk aan 0 en met ggd(a, b) = 1. Gevraagd alle gehele getallen p en q zodat a·p+b·q =c Er is een oplossing te vinden m.b.v. het terugrekenen in het algorithme van Euclides. Zeg dat we zo p o en qo vinden met a · po + b · q o = c We gaan vergelijken met een alternatieve oplossing: a a
· ·
p po
+ +
b · b ·
q qo
= =
c c
We trekken beide vergelijkingen van elkaar af: a · (p − po ) + b · (q − qo ) = 0 en zetten dit om in: a · (p − po ) = −b · (q − qo ) Nu is a een deler van b · (q − qo ), terwijl ggd(a, b) = 1, dus volgens stelling (1.25) op bldz. 25 is a een
deler van q − qo , zeg dat er een geheel getal k is met q − q 0 = k · a: q = qo + k · a Door invullen krijgen we: a · (p − po ) = −b · k · a p = po − k · b
We hebben nu gevonden (let op: dit is gedaan voor het speciale geval dat ggd(a, b) = 1):
1.14
29
Gehele lineaire vergelijkingen in twee variabelen: theorie
Als a · p + b · q = c
dan is er een geheel getal k met
p = po − k · b
en
q = qo + k · a
We moeten nu nog nagaan, voor welke gehele getallen k er geldt dat p = p o − k · b en q = qo + k · a ook echt een oplossing vormt. Dat doen we door invullen: a · (po − k · b) + b · (qo + k · a) = a · po − a · k · b + b · qo + b · k · a = a · po + b · qo = c Het klopt dus voor ieder geheel getal k. De oplossingen zijn dus: p = po − k · b
q = qo + k · a
en
k∈Z
met
(1.27) lemma: Laat a, b en c gehele getallen zijn, alle drie ongelijk aan 0 en met a en b relatief priem. Dan krijg je precies alle oplossingen van de vergelijking in gehele p en q: ?p, q ∈ Z :
a·p+b·q =c
door e´ e´ n concrete oplossing po , qo te berekenen (bijvoorbeeld door terugrekenen in het algoritme van Euclides) en dan te nemen p = po − k · b
q = qo + k · a
en
k∈Z
met
Nu gaan we terug naar het algemene probleem, dus zonder de voorwaarde dat ggd(a, b) = 1. Zoals eerder opgemerkt, kunnen we dat probleem reduceren tot wat in het lemma wordt opgelost door a en b te delen door ggd(a, b). Daarmee vinden we meteen de algemene oplossing: (1.28) stelling:
Laat a, b en c gehele getallen zijn, alle drie ongelijk aan 0. De vergelijking
?p, q ∈ Z :
a·p+b·q =c
heeft alleen oplossingen als c een veelvoud is van ggd(a, b). In dat geval kun je een oplossing vinden door terugrekenen in het algorithme van Euclides, zeg dat je p o en qo vindt met a · po + b · q o = c Je vindt dan alle oplossingen door te nemen p = po − k ·
b ggd(a, b)
en
q = qo + k ·
a ggd(a, b)
met
k∈Z
—–¿
(1.29) voorbeeld: We gebruiken de bovenstaande stelling om opnieuw op te lossen: ?p, q ∈ Z :
48 · p + 30 · q = 18
We berekenen ggd(48, 30) = 6 m.b.v. het algoritme van Euclides en door terugrekenen en vermenigvuldigen met
18 6
vinden we dat
48 · 6 + 30 · (−9) = 18 De oplossingen zijn nu p=6− oftewel
30 ·k 6
en
q = −9 +
48 ·k 6
met
k∈Z
30
1. De gehele getallen
p=6−5·k
en
q = −9 + 8 · k
met
k∈Z
einde voorbeeld Opgave opgave 1.24 — oefening Geef alle mogelijkheden voor p en q zodat ggd(225134, 83798) = p · 225134 + q · 83798 Om je geen nodeloos rekenwerk te bezorgen zijn zijn in de volgende opgaven de getallen klein genoeg om oplossingen ook door proberen te vinden. Doe dat niet, maar gebruik de methoden die hier boven behandeld zijn: die moet je hier leren. opgave 1.25 — oefening Geef alle getallen n en k zodat 12 = 21n + 78k opgave 1.26 — oefening Is er een getal s zodat 20 + 150s deelbaar is door 211? Zo ja, geef alle mogelijkheden. opgave 1.27 — oefening Is er een veelvoud van 308 dat 42 meer is dan een zeker veelvoud van 182 ? Zo ja, welke? Geef alle mogelijkheden.
1.15 Het kleinste gemene veelvoud (1.30) definitie: Het kleinste gemene veelvoud van twee gehele getallen a en b, beide ongelijk aan 0, is het kleinste positieve getal dat veelvoud van a en van b is. Notatie: kgv(a, b). (1.31) stelling: Laat a en b gehele getallen ongelijk aan 0 zijn. A. kgv(a, b) =
| a·b| ggd(a, b)
B. Laat n zowel een veelvoud van a als een veelvoud van b zijn. Dan is n een veelvoud van kgv(a, b). bewijs: We gaan bewijzen: a.
| a·b | bestaat (als geheel getal!). ggd(a, b)
b.
| a·b | is een positief veelvoud van a en een positief veelvoud van b. ggd(a, b)
c. Ieder geheel getal dat veelvoud van a en van b is, is een veelvoud van
| a·b | . ggd(a, b)
1.15
31
Het kleinste gemene veelvoud
|a·b| juist het kleinggd(a, b) ste positieve gemeenschappelijke veelvoud van a en b is, dus kgv(a, b) is. Uit het laatste punt volgt daarmee dat alle gemeenschappelijke veelvouden van a en b inderdaad ook veelvouden van kgv(a, b) zijn. Hier komen de bewijzen. We noteren hier:
Als we die punten bewezen hebben, dan volgt daaruit meteen dat
d := ggd(a, b) a. Omdat a een veelvoud van d is, is ieder veelvoud van a een veelvoud van d, dus is ook | a · b | een veelvoud van d, dus bestaat b.
|a·b| . d
| a·b | is positief: het quotient van twee positieve getallen. Om nu verder van allerlei d gepruts met mintekens af te zijn, beperk ik het bewijs tot a en b positief, de rest mag je zelf aanvullen. Omdat a een veelvoud van d is, krijg je: a a·b = ·b d d Daaruit volgt dat
|a·b| d
een veelvoud is van b. Net zo bewijs je dat
|a·b| d
een veelvoud
is van a. c. Laat nu n een gemeenschappelijk veelvoud van a en b zijn: n=p·a
en
n=q·b
Dan a b n =p· =q· d d d In bovenstaande formule zien we nu dat het(gehele!) getal Bedenk verder dat de (gehele!) getallen
a d
en
b d
Opgaven opgave 1.28 — oefening Bereken a. kgv(3000, 777). b. kgv(75, 315)
ab . d
deler is van q ·
b d.
relatief priem zijn (zie stelling (1.24)
op bldz. 24). Volgens stelling (1.25) op bldz. 25 is dus a q = q0 · d dat vullen we boven in om iets over n te leren: a ab n = q · b = q0 · · b = q0 · d d Blijkbaar is n een veelvoud van
a d
a d
deler van q, zeg:
32
1. De gehele getallen
opgave 1.29 — uitdager, facultatief inleveren In bovenstaande stelling is een formule gegeven om uit twee getallen en hun ggd hun kgv te berekenen. Kun je ook zoiets doen voor drie gehele getallen? Zo ja, beredeneer dat je formule klopt.
1.16 Ontbinding in priemfactoren Stel dat n een natuurlijk getal is dat geen priemgetal is. Dan heeft n echte delers. Je kunt dus n schrijven als een product van twee of meer getallen groter dan 1. Die getallen zijn dan kleiner dan het oorspronkelijke getal; elk is zelf ofwel een priemgetal, ofwel een getal met echte delers, dus dan ook weer een product van kleinere natuurlijke getallen. Omdat je vanaf een getal n hoogstens n stappen omlaag kunt in de natuurlijke getallen, houdt die splitsing een keer op. Zo kun je dus ieder natuurlijk getal schrijven als een product van priemgetallen. Gevolg: (1.32) stelling: Elk natuurlijk getal n > 1 is een product van priemgetallen. Een getal ontbinden in priemfactoren kun je systematisch doen door de rij van priemgetallen te doorlopen: (1.33) voorbeeld: Eerst factoren 2: 4840 = 2 × 2420 2420 = 2 × 1210 1210 = 2 × 605 Factoren 3 zijn er blijkbaar niet, nu factoren 5: 605 = 5 × 121 Factoren 7 zijn er niet, wel 11: 121 = 11 × 11 Samen: 4840 = 23 · 5 · 112 . einde voorbeeld Dit is in feite een keurig algoritme en het levert een welgedefinieerd resultaat: zie opgave 1.30. In het algoritme van Euclides krijgen we de ggd van twee getallen a en b; dat ligt vast; we kunnen praten over DE grootste gemene deler van a en b. Je kunt met dat algoritme door terugrekenen ook getallen p en q vinden zodat pa + qb = ggd(a, b). De getallen die je met het algoritme vindt, liggen vast door het algoritme, maar er zijn nog oneindig veel meer mogelijke keuzes voor p en q. Hoe zit dat hier? We komen zo op de principi¨ele vraag of ontbinding in priemfactoren van een geheel getal (soms) op meer dan e´ e´ n manier mogelijk is. Ja, natuurlijk: 15 = 3 × 5 en 15 = 5 × 3, maar dat is flauw. —–? vraag: Kun je een natuurlijk getal op verschillende manieren schrijven als een product van priemgetallen? antwoord: Eerst een vraag: wat is verschillend? In een product doet de volgorde er niet toe, dus laten we afspreken, dat we daar niet op letten. Handig is om er van uit te gaan dat we alle priemgetallen in
1.15
Het kleinste gemene veelvoud
33
opklimmende volgorde noteren, dus bijvoorbeeld: 600 = 2 · 2 · 2 · 3 · 5 · 5 = 23 · 3 · 52 (1.34) hoofdstelling van de rekenkunde: Een ontbinding van een natuurlijk getal n ≥ 2 als een product van priemgetallen is uniek tot op de volgorde van de factoren na. Je intu¨ıtie zegt misschien dat er inderdaad voor ieder geheel getal essentieel maar e´ e´ n ontbinding in priemfactoren is, maar een wiskundige is niet tevreden met dat gevoel en wil een heldere redenering die de bewering echt bewijst: dan weet je zeker dat je gevoel je niet bedriegt. Bovendien is redeneren een sport waarmee je je hersens traint. De volgende paragrafen gaan we geleidelijk dat bewijs opbouwen. —–¿ Opgave opgave 1.30 — oefening, programmeer a. Schrijf een algoritme voor het ontbinden in priemfactoren in C ++ . b. Beredeneer dat je programma een correct algoritme oplevert. opgave 1.31 — overzicht, alleen als test van je kennis voor jezelf In onderstaande zijn a en b gehele getallen, ongelijk aan 0. a. Hoe beredeneer je dat iets vastgelegd wordt door een specificatie? b. Hoe beredeneer je de correctheid van een wiskundig algoritme? c. Hoe beredeneer je dat een uitspraak Voor alle getallen a en b geldt dat . . . . . . onwaar is? d. Geef de definitie van de ggd van a en b. e. Wat kun je vertellen over de gehele combinaties van a en b als ggd(a, b) = 1200? f. Wat kun je vertellen over ggd(a, b) als je de verzameling van alle gehele combinaties van a en b in handen hebt? g. Wat kun je vertellen over de gehele combinaties van a en b als a en b relatief priem zijn? h. Geef de verbanden die je kent tussen ggd en delers. Vergeet daarbij niet wat je weet over delers van producten van gehele getallen. i. Laten a, b, c ∈ Z. Hoe los je de volgende vergelijking op? ?x, y ∈ Z :
ax + by = c
j. Wat is de definitie van de kgv van twee gehele getallen, beide niet 0? k. Welke stelling (met verschillende onderdelen) ken je over de kgv? l. Hoe luidt de hoofdstelling van de rekenkunde?
34
1. De gehele getallen
1.17 * Priemdelers van een product Om gereedschap voor het vervolg te krijgen gaan we stelling (1.25) toepassen op een bijzonder geval, namelijk dat p priemgetal is: (1.35) stelling: Laat p een priemgetal zijn en a en b gehele getallen. Als p een deler van a · b is, dan is p een deler van a of p is een deler van b. Die stelling gaan we verderop gebruiken om te bewijzen dat priemfactorontbinding in de gehele getallen uniek is. We kunnen nu dus geen bewijs geven in de trant van: “Ontbind die a en b in priemfactoren: a = p 1 · p2 · . . . · p k
en
b = pk+1 · pk+2 · . . . · pn
ab = p1 · . . . · pn en omdat p een deler van ab is, is p e´ e´ n van die p1, p 2 , . . . , pn , dus is p een deler van a of van b.” Zo’n bewijs kunnen we nu niet geven, want we hebben hier gebruikt dat ab maar op e´ e´ n manier in priemfactoren ontbonden kan worden en dat hebben we hier nog niet bewezen. We kunnen wel gebruik maken van stelling (1.25) : bewijs: Als p een deler is van a, dan zijn we klaar. Stel maar dat p geen deler van a is. Dan zijn de enige gemene delers 1 en −1, dus ggd(p, a) = 1. Uit stelling (1.25) volgt nu dat p deler is van b.
1.18 * De graad van een priemgetal in een getal We gaan in het vervolg bezig met priemfactoren van getallen en we zullen dan vaak gebruik maken van het begrip ‘graad’: (1.36) voorbeeld: In 720 is de graad van 2 gelijk aan 4, want 2 4 is een deler van 720, maar 25 is geen deler van 720. In 720 is de graad van 3 gelijk aan 2, want 3 2 is een deler van 720, maar 33 is geen deler van 720. In 720 is de graad van 5 gelijk aan 1, want 5 1 is een deler van 720, maar 52 is geen deler van 720. In 720 is de graad van 7 gelijk aan 0, want 7 0 is een deler van 720, maar 71 is geen deler van 720. einde voorbeeld (1.37) lemma:
Laat n een geheel getal zijn ongelijk aan 0 en p een priemgetal. Dan is er precies e´ e´ n
natuurlijk getal k zodat pk | n en pk+1 - n.
1.15
Het kleinste gemene veelvoud
35
bewijs: Intu¨ıtief geloof je dit lemma vast wel, maar we gaan die intu¨ıtie even omzetten in een redenering: een wiskundige wil zekerheid; bovendien is redeneren een sport. Voor het gemak nemen we in de volgende redenering maar aan dat n een positief getal is; anders zou je n in het vervolg door −n moeten vervangen.
Het eerste element van de rij van machten van p is p 0 = 1 en n is zeker deelbaar door 1. Er is in die rij ook een element waardoor n niet te delen is, want in de rij van machten van p krijg je bij iedere stap een minstens 1 groter getal, dus ergens kom je het gegeven getal n voorbij en n is niet te delen door een getal groter dan n. Als een macht van p wel deler is van n dan zijn alle lagere machten van p ook deler van n. Er is dus precies een grens: tot zover zijn alle machten wel een deler van n en daarboven niet. Dat getal k ligt dus echt vast. Daarmee mogen we nu defini¨eren: (1.38) definitie: Laat n een geheel getal zijn ongelijk aan 0 en p een priemgetal. Dan is er een natuurlijk getal k zodat pk | n en pk+1 - n. Dat getal k noemen we de graad van p in n. Nog enkele voorbeelden: de graad van 3 in 45 is 2, want 45 = 3 2 × 5. De graad van 3 in 40 is 0 want 40 is niet deelbaar door 3. En de graad van 3 in 162 is 4, want 162 = 2 × 3 4 . We gaan nu de rol van de graad verder uitspitten. (1.39) voorbeeld: Omdat de graad van 2 in 720 gelijk is aan 4 kun je 720 schrijven als 2 4 · b met b een geheel getal. Bovendien weet je dan dat 2 geen deler is van die b; daarvoor hoef je b niet uit te rekenen. einde voorbeeld (1.40) lemma: Laat p een priemgetal zijn. • Laat a een geheel getal zijn. Als k de graad van p in a is, dan is er een geheel getal b zodat a = p k · b en ggd(p, b) = 1. • Laat a een geheel getal zijn. Als a = p k · b en ggd(p, b) = 1, dan is k de graad van p in a. bewijs: a. Stel dat de graad van p in a gelijk is aan k. Er is dus een geheel getal q met a = q ·p k . Dan is ggd(p, q) = 1, want anders zou p | q, dus zou er een geheel getal r zijn met q = r · p en zou a = r · p · pk = r · pk+1 ; dat kan niet want k is de graad van p in a.
b. Stel nu dat a = pk · b met ggd(p, b) = 1. Dan is k de graad van p in a, want stel maar
eens dat ook pk+1 | a, dan zou er dus een geheel getal c zijn zodat a = p k+1 · c. Dan zou pk · b = pk+1 · c dus als we aan beide kanten pk wegdelen: b=p·c
36
1. De gehele getallen
dus zou p deler zijn van c, in strijd met het gegeven. In het vervolg zullen we gebruik gaan maken van de graad van een priemgetal in een product van twee gehele getallen. Hier is een voorbeeld: (1.41) voorbeeld: We weten al dat dat de graad van 2 in 720 gelijk is aan 4; de graad van 2 in 56 is gelijk aan 3. Je raadt vast al wel dat de graad van 2 in 720 × 56 gelijk is aan 4 + 3. Dat gaan we even netjes beredeneren zonder te rekenen: 720 = 24 c 56 = 23 d
met 2 geen deler van b met 2 geen deler van c
Dus 720 × 56 = 24 c · 23 d = 27 cd Nu is 2 een priemgetal dat geen deler is van c en ook niet van d, dus volgens stelling (1.35) is 2 geen deler van cd,dus 720 × 56 = 24 b · 23 c = 27 cd
met 2 geen deler van cd
Volgens lemma (1.40) , tweede deel, is dus 7 de graad van 2 in 720 × 56. einde voorbeeld Algemeen: (1.42) lemma: Laat p een priemgetal zijn. Laat a en b gehele getallen zijn ongelijk aan 0. Dan is de graad van p in a · b gelijk aan de som van de graden van p in a en van p in b. bewijs: Laat s de graad van p in a zijn en t de graad van p in b. a = ps · c
met p geen deler van c
b = pt · d
met p geen deler van d
dus a = ps · c · pt · d = ps+t · c · d Nu geldt dat p geen deler is van cd, want anders zou p deler zijn van c of van d volgens het vorige lemma. Daaruit volgt dat p s+t+1 - a · b. Dus inderdaad is s + t de graad van p in a · b. (1.43) lemma: Laat a en b gehele getallen ongelijk 0 zijn en p een priemgetal. Als a | b, dan is de graad van p in a ≤ de graad van p in b. Opgave opgave 1.32 — uitdager Bewijs bovenstaand lemma. Advies: reken eerst even aan concrete voorbeelden voordat je de stelling aanvult en algemeen gaat beredeneren. Gebruik vooral wat je uit de voorgaande lemma’s al weet!
1.19 * Een bewijs van de hoofdstelling van de rekenkunde:
de unieke priemfactorontbinding in Z
37
1.19 * Een bewijs van de hoofdstelling van de rekenkunde: de unieke priemfactorontbinding in Z Nu komen we dan toe aan het bewijzen van de hoofdstelling van de rekenkunde. bewijs: Stel n ∈ N met n ≥ 2 en neem aan dat de natuurlijke getallen k met 2 ≤ k < n een unieke priemfactorontbinding hebben. Als n een priemgetal, dan is de priemfactorontbinding van n uniek. Stel nu dat n geen priem is en neem aan dat n = p 1 p2 · · · p r = q 1 q2 · · · q s met p1 , . . . , rr , q1 , . . . , qs priemgetallen zo dat p1 ≤ p2 ≤ · · · ≤ pr en q1 ≤ q2 ≤ · · · ≤ qs . Dan is r, s ≥ 2. We gaan nu bewijzen dat p 1 = q1 . Er geldt dat p1 | q1 q2 · · · qs . Nu is p1 een priemgetal, dus een deler van e´ e´ n van de factoren q 1 , q2 , . . . , qs van n (zie gevolg stelling (1.25) op bldz. 25), zeg p 1 | qj . Omdat qj een priemgetal is en p1 6= 1
volgt dat p1 = qj . Net zo zie je dat er een i is met q1 = pi . Uit p1 ≤ pi = q1 ≤ qj = p1
volgt dat p1 = q1 . Neem n0 zodat n = p1 n0 . Dan n0 = p2 · · · pr = q2 · · · qs . Omdat r ≥ 2 is n0 ≥ 2; ook is n0 < n. Onze uitgangspositie was, dat alle getallen kleiner dan n een unieke priemfactorontbinding hebben; dat geldt dus ook voor n 0 . Dus r − 1 = s − 1 en p2 = q2 , . . . , pr = qr . We concluderen dus dat de priemfactorontbinding van n uniek is. Je kunt de hoofdstelling in de praktijk vaak handig combineren met het begrip graad; uit die combinatie halen we de volgende vaak bruikbare stelling: (1.44) stelling: Laat a en b gehele getallen ongelijk 0 zijn. • Als voor ieder priemgetal p geldt: de graad van p in a ≤ de graad van p in b dan a | b. • Als voor ieder priemgetal p geldt: de graad van p in a = de graad van p in b dan a = ±b.
Het bewijzen van deze stelling is flauw als je gebruik maakt van de hoofdstelling van de rekenkunde. Hier is nog een toepassing: een alternatief bewijs het tweede deel van stelling (1.31) op bldz. 30: Laat a en b gehele getallen ongelijk aan 0 zijn. Dan kgv(a, b) =
a·b ggd(a, b)
bewijs: Het idee hier is: voor ieder priemgetal p geldt: de graad van p in kgv(a, b) is het maximum van de graden van p in a en in b. Dat ligt voor de hand; als je wilt kun je dat zelf wel bewijzen. In een eerdere opgave heb je al kunnen bewijzen dat de graad van p in ggd(a, b) is het minimum van de graden van p in a en in b. We noteren hier: k := a · b . Neem een willekeurig priemgetal p. Laat s de graad van ggd(a, b)
38
1. De gehele getallen
p in a zijn en t de graad van p in b. Neem het geval dat s ≤ t; het omgekeerde geval gaat net als het volgende. Dan is de graad van p in a · b gelijk aan s + t volgens een voorgaande stelling. Verder is de graad van p in ggd(a, b) gelijk aan de kleinste van de getallen s en t, in dit geval dus s. De graad van p in k is dan dus s + t − s = t, het maximum van s en t. Klaarblijkelijk is voor ieder priemgetal p de graad van p in k gelijk aan het maximum van de beide graden van p in a en in b, dus gelijk aan de graad van p in kgv(a, b). Uit stelling (1.44) op bldz. 37 kunnen we nu concluderen dat k = kgv(a, b). Opgaven opgave 1.33 — oefening Ontbind de volgende getallen als een product van priemgetallen. Doe dat systematisch. a. 36 b. 120 c. 5040 opgave 1.34 — oefening Maak opgave 1.22 op bldz. 26 opnieuw, maar nu met behulp van het begrip graad en de hoofdstelling van de rekenkunde. opgave 1.35 — uitdager Vul de volgende stelling aan: door achter het =teken iets te schrijven waarin de graden van p in a en b voorkomen. (1.45) stelling: Laat a en b gehele getallen zijn en p een priemgetal. Dan geldt: de graad van p in ggd(a, b) = opgave 1.36 — uitdager Hier kun je het eerste deel van stelling (1.31) op bldz. 30 bewijzen m.b.v. de graden van de priemgetallen. Laat a, b en n gehele getallen zijn, ongelijk aan 0, zodat n een gemeen veelvoud van a en b is, d.w.z. •a|n
• en b | n. Laat verder • k = kgv(a, b)
• en laat r := rest(n, k).
Je gaat hier bewijzen dat r = 0. Daarmee bewijs je in feite dat n deelbaar is door k, dus dat ieder gemeen veelvoud van a en b deelbaar is door kgv(a, b). a. Bewijs eerst dat r zowel een veelvoud van a als van b is. b. Bewijs dat r = 0. c. In feite volgt vrijwel onmiddellijk uit de voorgaande twee onderdelen van deze opgave een bewijs van de bovenstaande stelling. Leg helder uit, waarom.
hoofdstuk 2
Gehele getallen modulo In dit hoofdstuk gaan we rekenen met gehele getallen modulo een getal. Een bekend voorbeeld hiervan is klokrekenen: daarin vat je naar keuze 12 of 24 uur op als 0 uur en rekent zo weer verder. Bij elektronische tellers in chips gaat tellen vaak als 0, 1, 2, . . . , 2n − 2, 2n − 1, 0, 1, 2, . . . waarbij n dan een natuurlijk getal is, het aantal bits min e´ e´ n. De theorie over gehele getallen modulo een getal heeft ook allerlei toepassingen binnen de informatica opgeleverd; e´ e´ n ervan, de standaard random generator, zal hier ook worden besproken. In een volgende hoofdstuk over machten, dat een vervolg is van het huidige, wordt ook de befaamde RSA-code behandeld.
2.1 Rekenen met restklassen Opgave opgave 2.1 — vooroefening Bereken het meest rechtse cijfer van a.
31457 + 34564326
b.
31457 × 34564326
c.
31457 3
d.
3145710
e.
314571000
Bedenk waarom jouw rekenmethode goed werkt. Als je zoals in bovenstaande opgave alleen naar het laatste cijfer kijkt in de normale, tientallige notatie, dan vat je ieder getal op als een getal tussen 0 en 9 plus een tienvoud; en verder kan het je niet schelen, welk tienvoud dat is als je gaat optellen, aftrekken, vermenigvuldigen of machtsverhffen (met natuurlijke exponent). Zoiets kun je ook doen met bijvoorbeeld 12-vouden: je vat ieder getal op als een getal tussen 0 en 11 plus een 12-voud. Dat werkt dan net zo. In feite splits je de verzameling gehele getallen in 12 deelverzamelingen: • 0 plus een 12-voud: {. . . , −24, −12, 0, 12, 24, 36, . . .}
• 1 plus een 12-voud: {. . . , −23, −11, 1, 13, 25, 37, . . .}
• 2 plus een 12-voud: {. . . , −22, −10, 2, 14, 26, 38, . . .}
• 3 plus een 12-voud: {. . . , −21, −9, 3, 15, 27, 39, . . .}
• 4 plus een 12-voud: {. . . , −20, −8, 4, 16, 28, 40, . . .}
• 5 plus een 12-voud: {. . . , −19, −7, 5, 17, 29, 41, . . .}
• 6 plus een 12-voud: {. . . , −18, −6, 6, 18, 30, 42, . . .}
• 7 plus een 12-voud: {. . . , −17, −5, 7, 19, 31, 43, . . .}
• 8 plus een 12-voud: {. . . , −16, −4, 8, 20, 32, 44, . . .}
40
2. Gehele getallen modulo
• 9 plus een 12-voud: {. . . , −15, −3, 9, 21, 33, 45, . . .}
• 10 plus een 12-voud: {. . . , −14, −2, 10, 22, 34, 46, . . .}
• 11 plus een 12-voud: {. . . , −13, −1, 11, 23, 35, 47, . . .}
We kunnen hiermee rekenen zoals in de bovenstaande opgave, bijvoorbeeld − 5 · 27 = −135 Omgerekend naar een getal plus een 12-voud: −5 = 7 + een 12-voud 27 = 3 + een 12-voud −135 = 9 + een 12-voud en dat komt goed uit: 7 · 3 = 21 = 9 een 12-voud Dat kun je goed begrijpen: (7 + een 12-voud ) · (3 + een 12-voud ) =
21 + een 12-voud
= 9 + een 12-voud Je zou kunnen zeggen, dat we nu met die verzamelingen kunnen rekenen alsof het ‘gewone’ getallen zijn: we kunnen optellen, aftrekken, vermenigvuldigen en machtsverheffen (met natuurlijke exponenten). Als je dat doet door ieder element van de ene verzameling te combineren met ieder element van de ander verzameling, werkt dat dat best mooi bij het optellen: (7 + een 12-voud ) + (3 + een 12-voud ) = {. . . , −17, −5, 7, 19, 31, 43, . . .} + {. . . , −21, −9, 3, 15, 27, 39, . . .} = {. . . , −38, −26, −14, −2, 10, 22, 34, 46, 58, 70, 82, . . .} Bij het vermenigvuldigen krijg je wel ‘gaten’, maar daar zullen we ons niet druk over maken: (7 + een 12-voud ) × (3 + een 12-voud ) = {. . . , −17, −5, 7, 19, 31, 43, . . .} × {. . . , −21, −9, 3, 15, 27, 39, . . .} = {. . . , −87, −75, −63, −51, −15, 21, 45, 57, 93, . . .} ⊂ {. . . , −87, −75, −63, −51, −39, −27, −15, −3, 9, 21, 33, 45, 57, 69, 81, 93, . . .} Die 12 deelverzamelingen van de gehele getallen noemen we de restklassen modulo 12. We zullen in dit hoofdstuk met dergelijke systemen van restklassen gaan rekenen, zoals we dat hier ook al gedaan hebben.
2.2
41
De fundamentele eigenschap van de functie rest
2.2 De fundamentele eigenschap van de functie rest Als je van een geheel getal wilt weten, bij welke restklasse-modulo-12 deze behoort, kun je dat doen door dat getal te delen-met-rest door 12. Dat idee gaan we hier generaliseren. —–? vraag: Welke getallen hebben dezelfde rest bij delen door een (geheel) getal m? antwoord: Laten we even naar een voorbeeld kijken. (2.1) voorbeeld: Als je 100 door 7 deelt krijg je rest 2. Welke getallen hebben bij delen door 7 dezelfde rest, dus rest 2? Natuurlijk hebben alle getallen die je krijgt door bij 100 een 7-voud op te tellen, ook rest 2. Dat is dan wel dankzij een goed doordachte definitie: als we hadden gekozen dat bijvoorbeeld de rest bij −19 delen door 7 gelijk zou zijn aan −5, dan waren we hier in de problemen gekomen: 100 − 17 × 7 = −19. Maar gelukkig is rest(−19, 7) = 2 volgens onze definitie. Nu is nog de vraag of er nog andere getallen dan 100+ een 7-voud bij delen door 7 rest 2 opleveren. Noem zo’n getal maar eens x, dan dus x =q·7+2
met q een geheel getal
Om verband met die 100 te legeen schrijven we: 100 = 14 · 7 + 2 Trek beide van elkaar af: x − 100 = q · 7 + 2 − (14 · 7 + 2) = (q − 14) · 7 dus x = 100 + (q − 14) · 7 en omdat q geheel is, is x dus 100+ een 7-voud. Er zijn dus geen andere getallen met rest 2. einde voorbeeld We hebben nu aan een concreet voorbeeld gerekend. Dat levert natuurlijk geen algemeen bewijs dat het in andere gevallen net zo gaat, maar wellicht geloof je dat nu ook wel. Zo nee, dan staat hieronder nog een algemeen bewijs. Vermoeden: Bij delen met rest door een geheel getal m leveren twee getallen a en b dezelfde rest precies als ze een veelvoud van m verschillen. In formule:
rest(a, m) = rest(b, m) ⇔ a − b
is een m-voud
Dat gaan we even netjes bewijzen.
bewijs:
Stel dat a en b gehele getallen zijn en dat
rest(a, m) = rest(b, m) Het algoritme, waarmee de functie rest gedefinieerd is, werkt met telkens m aftrekken of optellen, dus
er is een geheel getal i met rest(a, m) = a + i · m
42
2. Gehele getallen modulo
er is een geheel getal j met rest(b, m) = b + j · m Omdat beide resten gelijk zijn krijgen we
er zijn gehele getallen i en j met a + i · m = b + j · m Dus a en b verschillen inderdaad een veelvoud van m. Nu omgekeerd: Stel dat
a=b+k·m
(1)
met a, b en k gehele getallen. We willen bewijzen dat
rest(a, m) = rest(b, m) 0 en minder dan m is: als we −20 gedeeld door 6 niet 4 maar −2 te nemen), dan
We moeten nu in feite gebruik gaan maken van de afspraak dat de rest minstens dat niet hadden gedaan (bijvoorbeeld door als rest van
zouden we hier andere resultaten krijgen! Maar dankzij die afspraak weten we (zie stelling (1.2) op bldz. 5), dat er precies ´e´en geheel getal q en ´e´en natuurlijk getal r is zodat
a=q·m+r
en
0 ≤ r < |m|
(2)
0 ≤ t < |m|)
(3)
en ook precies ´e´en geheel getal s en ´e´en natuurlijk getal t zodat
b = s · m + t en
We willen gaan bewijzen dat r
= t. Substitueer nu formule (1) in formule (2): er is precies ´e´en geheel getal q
en ´e´en natuurlijk getal r zodat
b+k·m=q·m+r
en
0 ≤ r < |m|
dus zodat
b = (q − k) · m + r
en
0 ≤ r < |m|
(4)
Vergelijken we formule (4) met formule (3), dan zien we uit de uniciteit dat
q − k = s en
t=r
Dat laatste wilden we juist weten.
(2.2) stelling: Bij delen met rest door een geheel getal m leveren twee gehele getallen hetzelfde resultaat dan en slechts dan als ze een veelvoud van m verschillen. —–¿
2.2
43
De fundamentele eigenschap van de functie rest
2.3 Restklassen (2.3) definitie: Laat a een geheel getal zijn en m een natuurlijk getal met m 6= 0 en m 6= 1. De restklasse modulo m van het getal a is dan gedefinieerd als de verzameling {a + k · m |
k
geheel getal
}
Uit de voorgaande definitie en stelling (2.2) volgt onmiddellijk: (2.4) stelling: Laat m een natuurlijk getal zijn ongelijk aan 0 of 1. a. Twee getallen hebben dezelfde restklasse modulo m precies als ze een veelvoud van m verschillen. b. De restklasse modulo m van een geheel getal a is gelijk aan de verzameling van gehele getallen x zodat rest(x, m) = rest(a, m) c. Er zijn precies m restklassen modulo m: de restklassen van 0, 1, 2, · · · , m − 1.
(2.5) voorbeeld: Zij m = 12. De restklasse van 5 is dus gelijk aan {5 + k · 12 | k ∈ Z} en ook gelijk aan {x ∈ Z | x − 5 = een 12-voud} We kunnen die verzameling noteren als 5. In die notatie staat eigenlijk te weinig informatie: je kunt niet zien dat we modulo 12 rekenen. Dat moet uit de context duidelijk zijn. Je mag overigens die verzameling ook gerust aanduiden als −7 of 29 bijvoorbeeld: je schrijft maar een element van de verzameling op en zet er een streep boven. Algemeen: de 12 restklassen modulo 12 zijn: 0 = {. . . , −24, −12, 0, 12, 24, . . .} 1 = {. . . , −23, −11, 1, 13, 25, . . .} 2 = {. . . , −22, −10, 2, 14, 26, . . .} .. . 5 = {. . . , −19, −7, 5, 17, 29, . . .} .. . 11 = {. . . , −13, −1, 11, 23, 35, . . .} = {12-vouden + 11} Een element van zijn restklasse noemen we een representant van die restklasse, dus 17 is een representant van {. . . , −19, −7, 5, 17, 29, . . .}
44
2. Gehele getallen modulo
Je kunt nu zelfs zeggen: 17 is een representant van 17. Die restklassen vormen de 12 elementen van een nieuwe verzameling: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} Die verzameling noemen we Z12 . einde voorbeeld (2.6) notatie: Als we rekenen modulo m dan noteren we de restklasse van een geheel getal a als a. Dat kan natuurlijk alleen als uit de kontekst duidelijk is, modulo welk getal m we rekenen. Een element a in de restklasse x heet een representant van x en er geldt x = a. Bij iedere restklasse is er natuurlijk e´ e´ n bijzondere representant, namelijk de rest van elk van die elementen bij delen door m. Dat is dan ook precies het enige element in die restklasse dat minstens 0 en kleiner dan m is. Dat element noemen we wel de canonieke representant. (2.7) notatie: Laat m een natuurlijk getal zijn, niet 0 en niet 1. De verzameling van restklassen modulo m noemen we Zm . Let op het type van een object en gebruik de goede notatie! Elementen van Z m zijn restklassen, dus deelverzamelingen van Z. Bijvoorbeeld, als een variabele x verwijst naar een element uit Z 12 , dan kan x niet de waarde 5 hebben, wel 5. Meer wiskundig uitgedrukt: als x ∈ Z 12 , dan is de uitspraak ‘x = 5’ onzin. Het is
wel mogelijk dat x = 5, oftewel x = {. . . , −19, −7, 5, 17, 29, . . .}. Maar als gegeven is, dat we rekenen modulo 12 en dat x ∈ Z 12 , dan is blijkbaar x een geheel getal waarvan hier de restklasse x wordt genomen, dus kan x wel bijvoorbeeld 5 zijn, maar niet 5.
Opgave opgave 2.2 — uitdager Voor welke m geldt: 101 = 5 in Zm ?
2.4 De rekenoperaties en restklassen Opgave opgave 2.3 — vooroefening Om je rekenwerk te besparen krijg je het volgende resultaat: rest(1 000 000, 23) = 6 Maak nu handig gebruik van dit resultaat om de volgende getallen uit te rekenen zonder rekenmachine en schrijf ook je berekening op. a. d.
rest(1 000 010, 23) rest(999 990, 23)
b. e.
rest(1 000 050, 23) rest(2 000 000, 23)
g.
rest(10 000 000, 23)
h.
rest(1 000 000 000 000, 23)
c. f.
rest(1 000 090, 23) rest(4 000 000, 23)
De idee¨en die bovenstaande opgave tot een gemakkelijk uitvoerbaar klusje maken staan gedeeltelijk verwoord in de volgende stelling:
2.5
45
Rekenen in Z mod m
(2.8) stelling: We rekenen modulo het gehele getal m. Laat a, a 0 , b en b0 gehele getallen zijn met a = a0
en
b = b0
Dan a.
a + b = a 0 + b0
b.
a − b = a 0 − b0
c.
a · b = a 0 · b0
bewijs: We zullen hier de laatste formule bewijzen. De andere mag je zelf doen. We gebruiken natuurlijk stelling (5.22) op bldz. 106. Uit de gegevens kunnen we dus halen dat er gehele getallen i en j bestaan zodat a0 = a + i · m b0 = b + j · m Dus a0 · b0 =(a + i · m)(b + j · m) = = a · b + a · j · m + b · i · m + i · j · m2 = = a · b + (a · j + b · i + i · j · m)m
dus a · b en a0 · b0 verschillen een m-voud en hebben dus dezelfde restklasse. Opgave opgave 2.4 — oefening Bewijs de eerste formule van stelling (2.8) .
2.5 Rekenen in Z mod m We zien in stelling (2.8) dat het nemen van de restklasse modulo m de algebra¨ısche operaties op Z respecteert. Dit stelt ons in staat een optelling en een vermenigvuldiging op Z m te defini¨eren. Neem maar eens x, y ∈ Zm . Kies gehele getallen a1 en b1 zo dat x = a1 en y = b1 . Definieer dan de som x + y := a1 + b1
en het product xy := a1 b1 . Het resultaat is onafhankelijk van de gemaakte keuzen want stel dat we a 2 en b2 hadden gekozen zo dat x = a2 en y = b2 . Dan is wegens de voorgaande stelling a 1 + b1 = a2 + b2 en a1 b1 = a 2 b2 . (2.9) definitie: We defini¨eren een optelling, een aftrekking en een vermenigvuldiging op Z m door a + b := a + b a − b := a − b a · b := ab
46
2. Gehele getallen modulo
(2.10) voorbeeld: In Z2 : 1 + 1 = 0;
1 · 1 = 1.
In Z3 : 1 + 1 = 2;
1 + 2 = 0;
In Z6 : 2 · 3 = 0;
4 · 3 = 0;
2 + 2 = 1;
2 · 2 = 1.
2 · 2 = 5 · 2 = 4.
einde voorbeeld Getallen Ooit dacht je dat 1, 2, 3, 4, . . . alle getallen waren. Toen leerde je breuken kennen, 0, negatieve getallen en later ook de re¨ ele getallen en dacht je wellicht dat je nu wist wat het woord ‘getal’ betekent. Maar nu leer je een heel ander soort getallen kennen: elementen van Zm . Een getal is in dat systeem te zien als een restklasse, dus een verzameling van gehele getallen. Later in deze cursus zul je nog met een heel ander soort getallen kennis maken: de complexe getallen. Een element van Zm hebben we tot nu toe steeds genoteerd als een geheel getal met een streep er boven. Maar een object van type ‘element van Z m ’ kan best een naam zonder streep hebben, bijvoorbeeld x. Let dus goed op: als x ∈ Zm , dan is er een n ∈ Z met x = n, maar x zelf is geen geheel getal, maar een getal in Zm .
Het werkt misschien verhelderend een beetje anders tegen Z m aan te kijken, zoals we dat in het begin van het hoofdstuk ook gedaan hebben bij het rekenen modulo 12 (denk aan klokrekenen): we denken dat dit getallensysteem bestaat uit twaalf getallen, genoteerd als de natuurlijke getallen tussen 0 en 11 met een streep er boven. Als je daarmee wilt optellen, aftrekken of vermenigvuldigen, dat neem je de bijbehorende natuurlijke getallen zelf, voert de operatie uit en neemt van het resultaat de rest bij delen door 12 en zet daar weer een streep boven: 7 + 9 = rest(16, 12) = 4 7 × 9 = rest(63, 12) = 3 Zo kan dat algemeen: Gegeven een natuurlijk getal m ≥ 2, beschouw de verzameling { 0, 1, 2, . . . , m − 1 }. Definieer hierop een optelling en een vermenigvuldiging: als x en y natuurlijke getallen tussen 0 en m − 1 zijn, dan x + y := rest(x + y, m) x − y := rest(x − y, m) x · y := rest(x · y, m) Het is duidelijk dat de aldus gedefinieerde structuur hetzelfde is als de eerder genoemde, behalve dan het feit dat we normaal ook meer notaties voor hetzelfde getal in Z m accepteren, bijvoorbeeld 5 = 53 in Z 12 .
2.6
Vergelijkingen van type ?x: ax=b in Z modulo m
47
Opgaven opgave 2.5 — oefening Stel optellings- en vermenigvuldigingstabellen op voor Z 2 , Z3 en Z6 . Zo’n tabel maak je door horizontaal te zetten en verticaal alle waarden voor b ∈ Z m en dan in de tabel a + b (voor de opteltabel) of a · b (voor de vermenigvuldigtabel). opgave 2.6 — oefening Maak opgave 2.3 op bldz. 44 opnieuw, maar nu m.b.v. rekenen modulo 10; schrijf ook op hoe je rekent. opgave 2.7 — oefening en uitdager Je hebt eerder opgave 1.3 op bldz. 8 gemaakt. Nu kun je voor hetzelfde probleem gebruik maken van rekenen modulo 9 of modulo 3, enz. Doe dat: a. Leg uit aan de hand van voorbeelden hoe je zonder delen uit de (tientallige) cijfernotatie van een getal snel de rest bij delen door 9 kunt berekenen. Leg aan de hand van die voorbeelden uit waarom je algoritme klopt. (Je hoeft hier dus geen zuiver bewijs te geven.) b. Idem voor delen door 3. c. Idem voor delen door 11. d. * Als je wilt: idem voor delen door 7. e. * Als je wilt: kun je ook dergelijke idee¨en voor sommige deeltallen bedenken bij binaire (tweetallige) notatie?
2.6 Vergelijkingen van type ?x: ax=b in Z modulo m Nu we kunnen rekenen in Zm kunnen we ook eens proberen vergelijkingen van type ?x ∈ Zm :
ax = b
op te lossen. Die hebben we in het vervolg nodig. (2.11) voorbeeld: ?x ∈ Z12 :
10x = 8
Misschien zie je meteen een oplossing: 8 = 20, dus x = 2 is een oplossing. Maar pas op: als je precies te werk gaat vind je meer oplossingen. Laten we x als element van Z 12 schrijven als de restklasse van een geheel getal n: x = n. Dan zoeken we dus n ∈ Z met 10n + 12k = 8 Omdat we hier meteen de grootste gemene deler van 10 en 8 zien, kunnen we handig meteen daardoor delen: 4 = 5n + 6k Met Euclides krijgen we als resultaat: n = 2 plus een 6-voud, dus in Z 12 krijgen we: x = 2 of x = 8. Twee oplossingen! einde voorbeeld
48
2. Gehele getallen modulo
Belangrijk is op te merken, dat we hier voor een eerstegraads vergelijking twee oplossingen vinden. In feite kun je beter verwachten dat alles dat je gewend bent anders gaat voor Z m . (2.12) voorbeeld: We gaan nog een keer oplossen ?x ∈ Z12 :
10x = 8
maar nu met een truc die ook vaak wordt gebruikt, n.l. delen: 10x = 4 “Deel door 2”, nou ja, eigenlijk door 2: 5x = 2 Vermenigvuldig met 5: 25x = 10 en omdat 25 = 1 krijgen we zo: x=2 FOUT! Te weinig oplossingen: 8 ontbreekt. Wat is er mis? We hebben gedeeld door 2. Delen is tot hier nog niet behandeld, maar je zult zien dat je in Z12 niet kunt delen door 2. einde voorbeeld
(2.13) voorbeeld: Hier is nog een variant op de vorige oplossing: in Z12 : 8 = 20 dus de vergelijking ?x ∈ Z12 :
10x = 8
kun je ook lezen als ?x ∈ Z12 :
10x = 20
Deel beide kanten door 10, dan krijg je x=2 Ook weer FOUT! Te weinig oplossingen: 8 ontbreekt. Oorzaak is weer het delen, nu door 10. Niet doen! einde voorbeeld
2.6
Vergelijkingen van type ?x: ax=b in Z modulo m
49
(2.14) voorbeeld: ?x ∈ Z12 :
10x = 1
Idee: vermenigvuldig beide kanten met 4: 40x = 4 en omdat 40 = 4 krijgen we: 4x = 4 Nou, dat is gemakkelijk: x=1 Hola, zo moet dat niet: we hebben gedeeld (door 4). Even netjes uitwerken: we stellen dat n een geheel getal is zodat n = x. Dan is er een kinZ zodat 4n = 4 + 12k n = 1 + 3k Oplossingen voor n: . . . , −5, −2, 1, 4, 7, 10, . . ., dus oplossingen voor x: 1, 4, 7, 10. Fijn! Maar wel FOUT: controleer maar: geen enkele van die getallen voldoet in de oorspronkelijke vergelijking! Wat is er nu mis? We hebben hier alleen maar vermenigvuldigd (met 4), maar we hebben toch niet gedeeld? Nee, maar de vergelijkingen 10x = 1 40x = 4 zijn niet gelijkwaardig: als je terug wilt van de tweede naar de eerste, moet je wel delen! einde voorbeeld
(2.15) voorbeeld: Nu doen we het toh maar even goed met de vorige vergelijking: ?x ∈ Z12 :
10x = 1
We vertalen onmiddellijk naar Z: laat n ∈ Z met n = x. Dan levert dit: 10n + 12k = 1 Die vergelijking heeft geen oplossingen, want links staat een 2-voud en rechts niet. einde voorbeeld Algemeen advies: vertaal dergelijke vergelijkingen altijd onmiddellijk naar een vergelijking in de gehele getallen en ga daarmee aan het werk.
50
2. Gehele getallen modulo
Opgaven opgave 2.8 — oefening Los de volgende vergelijkingen op. a. ?x ∈ Z63 :
12x + 5 = 25
c. ?x ∈ Z65 :
12x = 20
b. ?x ∈ Z64 : 12x = 20 Advies: vergelijk je oplossing goed met de antwoordenlijst! Daar staat nog een uitvoerige uitwerking met uitleg.
opgave 2.9 — oefening Los de volgende vergelijkingen op. a. ?x ∈ Z2366 :
78x + 18 = 200
opgave 2.10 — oefening Los op: ?x ∈ Z35 :
21x + 3 = 30
opgave 2.11 — tentamenopgave Let op: uitkomsten zonder berekening of uitleg hoe je gerekend hebt, worden fout gerekend! a. Los x ∈ Z253 op: 115 · x = 69. b. Los x ∈ Z253 op: 116 · x = 69.
2.7 Nuldelers De rekenoperaties in Zm zijn wel wat vreemder dan in Z en R. Bijvoorbeeld in Z 10 geldt: 4 · 5 = 0. Blijkbaar is de bekende regel, dat het product van twee getallen alleen nul is als e´ e´ n van beide factoren nul is, hier niet van toepassing. We zeggen dat 4 en 5 nuldelers in Z 10 zijn. Een nuldeler is iets dan niet nul is, maar dat met een zeker ander iets, ook ongelijk aan nul, vermenigvuldigd kan worden zodat het resultaat nul is. (2.16) voorbeeld: In Z10 zijn bijvoorbeeld 4 en 5 nuldelers, maar 3 niet: als k ∈ Z en 3 · k = 0, dan is 3 · k dus een 10-voud, dus k is een 10-voud, want ggd(3, 10) = 1 en gebruik nu stelling (1.25) op bldz. 25. Dus k = 0. einde voorbeeld (2.17) definitie: Een getal x heet een nuldeler als x 6= 0 en er een getal y 6= 0 bestaat zodat xy = 0.
2.6
Vergelijkingen van type ?x: ax=b in Z modulo m
51
Opgave opgave 2.12 — oefening Vind alle nuldelers in a. Z30 , b. Z81 . Het begrip nuldeler speelt hier voorlopig alleen in de gehele getallen modulo een natuurlijk getal (ongelijk aan 0 en 1). Later zul je met veeltermen gaan rekenen alsof het getallen zijn; daar kun je modulo (een veelterm) gaan rekenen en treedt ook weer ditzelfde verschijnsel van nuldelers op. Er zijn nog allerlei andere soorten rekensystemen waarin dat begrip toegepast kan worden. Het begrip ‘nuldeler’ hoort eigenlijk thuis in de theorie van z.g. ringen, maar daar komen we hier niet aan toe.
Je hebt al enkele vermenigvuldigingstabellen gemaakt in opgave 2.5. Daarin kun je zien, dat voor sommige getallen m er in Zm geen nuldelers zijn, in andere wel. —–? vraag: Voor welke getallen geldt dat er in Z m nuldelers zijn? antwoord: Laat a een geheel getal zijn in Z m . Dat a een nuldeler is in Zm betekent dat er een geheel getal b is zodat a · b = 0 in Zm , terwijl a 6= 0 en b 6= 0. Dan is a · b dus een veelvoud van m. Anders gezegd: m is een deler van a · b, maar m is geen deler van a, want a 6= 0. Als m geen priemgetal is, dan kun je dat best realiseren: neem voor a maar een echte deler van m (of een veelvoud, dat toch geen veelvoud van m is). Dus als m geen priemgetal is, dan bestaan er nuldelers in Z m . Stel nu maar eens, dat m wel een priemgetal is en dat a·b =0 maar dat a 6= 0 We gaan netjes beredeneren dat dan b=0 Daaruit volgt dan meteen dat er geen element van Z m ongelijk aan 0 te vinden is, waarmee a product 0 oplevert. Dat betekent in feite dat a geen nuldeler is. Omdat a een willekeurig element ongelijk aan 0 is van Zm , volgt daaruit dan meteen dat Zm geen nuldelers bevat. Om te beredeneren dat b = 0 vertalen we het gegeven in: a · b = k · m en m is een priemgetal en a is geen veelvoud van m Uit het feit dat a geen veelvoud van het priemgetal m is, volgt dat ggd(a, m) = 1 Maar m is wel een deler van a · b, dus volgens stelling (1.25) op bldz. 25 volgt dat m een deler is van b, dus dat b = 0. Conclusie: (2.18) lemma: Er zijn geen nuldelers in Z m dan en slechts dan als m een priemgetal is. —–¿
52
2. Gehele getallen modulo
2.8 Delen in Z modulo m (2.19) voorbeeld: We gaan in Z32 proberen of we 5 door 9 kunnen delen: we zoeken een geheel getal n zodat 5 = n in Z32 9 Volgens de normale betekenis van delen kunnen we dat interpreteren als: 5 =9·n
Z32
in
en dat betekent: 5 = 9n + 32k
(5)
Met het algoritme van Euclides en terugrekenen kunnen we een oplossing vinden: n = 5 × (−7) = −35
(en
k = 5 × 2 × (−32) )
Modulo 32 kunnen we i.p.v. −35 ook 29 nemen, dus zou je zo zeggen: 5 = 29 in Z32 9 HOLA! Misschien zijn er nog wel meer mogelijkheden? Misschien ligt die n wel niet vast? Dat onderzoeken we zoals gebruikelijk: stel maar eens dat n 0 ook voldoet. We kunnen dat net als boven vertalen in: er zijn gehele getallen n 0 en k 0 zodat 5 = 9n0 + 32k 0 Als we daarvan vergelijking formule (5) aftrekken, krijgen we: 0 = 9(n0 − n) + 32(k 0 − k) oftewel 9(n0 − n) = −32(k 0 − k)
Daarmee zien we dat 32 een deler is van 9(n 0 − n); omdat ggd(32, 9) = 1 volgt met stel-
ling (1.25) op bldz. 25 dat 32 een deler is van (n 0 − n), dus dat n0 = n + een 32-voud, dus
dat n0 = n. Conclusie: er is maar ´e´en oplossing. einde voorbeeld
(2.20) voorbeeld: We gaan in Z30 proberen of we 5 door 9 kunnen delen: we zoeken een geheel getal n zodat 5 = n in 9
Z30
oftewel 5 =9·n dat betekent:
in
Z30
2.8
53
Delen in Z modulo m
5 = 9n + 30k Dat kan niet: rechts staat een 3-voud, links niet! einde voorbeeld (2.21) voorbeeld: We gaan in Z30 proberen of we 5 door 25 kunnen delen: we zoeken een geheel getal n zodat 5 = n in 25
Z30
oftewel 5 = 25 · n in
Z30
dat betekent: 5 = 25n + 30k
(6)
Even door 5 delen: 1 = 5n + 6k Je ziet hier onmiddellijk een oplossing: n = −1 en k = 1. Dus zou je zo zeggen: 5 = −1 in Z30 25 HOLA! Misschien zijn er nog wel meer mogelijkheden? Misschien ligt die n wel niet vast? Stel maar eens dat n0 ook voldoet. We kunnen dat net als boven vertalen in: er zijn gehele getallen n0 en k 0 zodat 5 = 25n0 + 30k 0 Als we daarvan vergelijking formule (6) aftrekken, krijgen we: 0 = 25(n0 − n) + 30(k 0 − k) oftewel 5(n0 − n) = −6(k 0 − k)
Daarmee zien we dat 6 een deler is van 5(n 0 −n); omdat ggd(6, 5) = 1 volgt met stelling (1.25)
op bldz. 25 dat 6 een deler is van (n0 − n), dus dat n0 = n+ een 6-voud. Maar let op: we
rekenen hier modulo 30, dus we krijgen wel degelijk meer dan ´e´en oplossing: −1, 5, 11, 17, 23.
Maar dat betekent dat meer dan ´e´en waarde voor n bestaat zodat 25 · n = 5. “Het getal 5 25 in Z30 ” is dus onzin. einde voorbeeld Opgaven opgave 2.13 — oefening Geef alle nuldelers in a. Z7 b. Z14 c. Z20 d. Z25 e. Z27 opgave 2.14 — oefening Bereken in Z13 :
2 5
.
54
2. Gehele getallen modulo
opgave 2.15 — oefening Bereken in Z151 :
8 13
.
opgave 2.16 — oefening, inleveren We rekenen in in Z713 . a. Bestaat precies e´ e´ n getal x ∈ Z713 zodat x · 69 = 5? Zo ja, geef een berekening, zo nee, waarom niet? b. Bestaat precies e´ e´ n getal x ∈ Z713 zodat x · 70 = 5? Zo ja, geef een berekening, zo nee, waarom niet?
2.9 In welke gevallen kun je delen in Z mod m? We gaan onderzoeken in welke gevallen we kunnen delen. Dat komt neer op de volgende vraag: —–? vraag: Laat a en b gehele getallen ongelijk aan 0 zijn en m een natuurlijk getal, ongelijk aan 0, 1. Onder welke voorwaarden voor a, b en m is er precies e´ e´ n geheel getal n zodat a = n · b antwoord: We moeten oplossen: ?n ∈ Z, k ∈ Z :
in
Zm ?
a = nb + km
Dat gaat standaard volgens paragraaf 1.13 op bldz. 26 als volgt: • Bereken d := ggd(b, m).
• Als a geen veelvoud is van d, dan is er geen oplossing.
• Als a wel veelvoud van d, deel dan door d, dan krijg je net zo’n vergelijking, maar met co¨effici¨enten b/d en m/d met ggd gelijk aan 1, dus wel een oplossing. Voor n krijg je dan als oplossingen: m d Dat levert i.h.a. meer dan e´ e´ n element n in Z m , tenzij d = 1. n = n0 + j ·
(7)
Kortom, we krijgen precies e´ e´ n oplossing voor n als ggd(b, m) = 1, en anders krijgen we 0 of meer dan e´ e´ n oplossing. Voor het geval dat m een priemgetal is en b geen veelvoud van m (d.w.z. m 6= 0 in Z m ), dan is aan die voorwaarde ggd(b, m) zeker voldaan en zijn er dus oplossingen. We willen hier kijken naar delen in Z m . De volgende vraag is dus of n vastligt in Z m als m een priemgetal is. Stel maar weer eens dat n0 ook voldoet. We kunnen dat net als boven vertalen in: er zijn gehele getallen n0 en k 0 zodat a = n0 · b + k 0 · m Als we daarvan vergelijking formule (7) aftrekken, krijgen we: 0 = (n0 − n) · b + (k 0 − k) · m oftewel (n0 − n) · b = −(k 0 − k) · m Daarmee zien we dat m een deler is van (n 0 − n) · b. Als m een priemgetal is en b 6= 0, dan ggd(m, b) = 1,
2.9
In welke gevallen kun je delen in Z mod m?
55
dus volgt met stelling (1.25) op bldz. 25 dat m een deler is van (n 0 − n), dus dat n0 = n+ een m-voud,
dus dat n0 = n. Conclusie: er is maar e´ e´ n oplossing als m een priemgetal is.
(2.22) stelling: Laat p een priemgetal zijn en laat a een geheel getal, geen veelvoud van p zijn. Dan is er precies e´ e´ n geheel getal s met 1 ≤ s ≤ p − 1 zodat a · s = 1 in Zp Daarmee hebben we een deling beschikbaar in Z p : je kunt delen door alle getallen uit Z p , behalve door 0. In verband met het voorgaande nog even een vakterm: (2.23) definitie: Een getal heet een eenheid (Engels: unit) als het een omgekeerde heeft voor de vermenigvuldiging, dus als je er door kunt delen. Er staat hier “een omgekeerde”, alsof er misschien ook meer dan e´ e´ n omgekeerde voor een getal zou kunnen bestaan. Dat is echter onmogelijk: dat is gemakkelijk te bewijzen, als je dat wilt. De bovenstaande stelling zegt dus in feite: als p een priemgetal is, dan is elk element van Z p dat niet 0 is, een eenheid. Om deze speciale reden schrijft men i.p.v. Z p vaak Fp als p een priemgetal is. De letter F staat hier voor “Field” (lichaam), een algebra¨ısche structuur waarin optellen, aftrekken, vermenigvuldigen en delen mogelijk is, behalve delen door 0 natuurlijk. We komen op die structuur later terug. Als m geen priemgetal is en ggd(b, m) 6= 1, dan hangt het van a af of je gehele getallen n en k kunt vinden zodat a = nb + km. En als je die kunt vinden, dan krijg je meer dan e´ e´ n mogelijkheid, net als in het laatste voorbeeld. In dat geval kun je dus niet praten over het quoti¨ent van a en b in Z m . Als m geen priemgetal is, maar wel ggd(b, m) = 1, dan kun je een oplossing vinden voor de vergelijking ?n :
a=n·b
in
Zm
dus gehele n en k vinden zodat ?n ∈ Z, k ∈ Z :
a = nb + km
En met dezelfde redenering als hierboven volgt dan dat n vastligt. Dus als m geen priemgetal is, kom je soms met delen in de problemen. Een algemeen gedefinieerde deling in Zm is er dus alleen als m een priemgetal is. (2.24) lemma: Zij m ≥ 2 een natuurlijk getal. Dan a ∈ Zm
is een eenheid
⇐⇒ ggd(a, m) = 1
bewijs: Neem eens aan dat a ∈ Zm een eenheid is. Dan bestaat b ∈ Zm zo dat ab = 1.
Dus ab = 1. Er is dus een c ∈ Z met ab − 1 = cm, ofwel ab − cm = 1. Gevolg ggd(a, m) = 1.
Omgekeerd, neem aan dat ggd(a, m) = 1. Dan bestaan b, c ∈ Z zo dat ab − cm = 1. Dus
m deelt ab − 1 en dus ab = 1. Dus heeft a een inverse.
56
2. Gehele getallen modulo
Samenvatting: (2.25) stelling: mogelijkheden:
Laat m een natuurlijk getal > 1 zijn en a een element van Z m . Dan zijn er drie
• a = 0 of
• a is een eenheid, n.l. als ggd(a, m) = 1 of
• a is een nuldeler, n.l. als ggd(a, m) 6= 1 (en dat kan alleen als m geen priemgetal is). —–¿
(2.26) stelling: a. In Zm kun je delen door iedere eenheid. b. In Zm kun je niet delen door een nuldeler en natuurlijk niet door 0. Als kapstok om dit te onthouden kan de volgende kreet dienen:
Delen door nul is flauwekul. Delen door een nuldeler is ook flauwekul!
Opgaven opgave 2.17 — oefening a. Laat zien dat in Z136
2 5
bestaat.
b. Laat a een geheel getal zijn met a en 136 relatief priem. Bewijs dat
2 a
bestaat.
opgave 2.18 — oefening Laat a en m gehele getallen zijn met a 6= 0 en m > 1. Stel dat er twee gehele getallen b en b 0 bestaan zodat a·b =1
en
a · b0 = 1
in
Zm
Bewijs dat dan b = b0 in Zm . opgave 2.19 — oefening a. Laat k, n, m ∈ Z. Laat zien: als k in Z n·m een eenheid is, dan is k in Zm een eenheid.
b. Is ook het omgekeerde waar?
2.9
57
In welke gevallen kun je delen in Z mod m?
2.10 Een lichaam Als je aan getallen denkt, dan verwacht je dat je kunt optellen, aftrekken, vermenigvuldigen en delen, behalve delen door nul. Dat laatste kunnen we nu met een vakterm zeggen: er zijn geen nuldelers. Voorbeelden die je al kent zijn de rationale getallen (Q), de re¨ele getallen (R) en nu dus ook Z p als p een priemgetal is. Zo’n getallenverzameling noemen we een lichaam. (Engels: field). Later in deze syllabus zul je nog aan de slag gaan met een ander fameus voorbeeld van een lichaam: C, het lichaam van de complexe getallen. Een lichaam K is een (getallen)verzameling, waarin optellen en vermenigvuldigen gedefinieerd zijn met de volgende eigenschappen: a. De optelling is commutatief: a+b=b+a
voor alle a, b ∈ K.
b. De optelling is associatief: a + (b + c) = (a + b) + c
voor alle a, b, c ∈ K.
c. Er is een z.g. nulelement, genoteerd met 0, dat voldoet aan a+0=0+a=a
voor ieder element a van K
d. Bij elk element a ∈ K is er een z.g. tegengestelde in K, genoteerd als −a, met de eigenschap a + (−a) = 0 e. De vermenigvuldiging is commutatief: a·b=b·a
voor alle a, b ∈ K.
f. De vermenigvuldiging is associatief: a · (b · c) = (a · b) · c
voor alle a, b, c ∈ K.
g. Er is een z.g. eenelement, genoteerd met 1, dat voldoet aan a·1 =1·a=a
voor ieder element a van K
We nemen ook aan dat 1 6= 0.
h. Voor elke a ∈ K met a 6= 0 is er precies e´ e´ n b ∈ K zodat a · b = 1: d.w.z. a heeft een inverse, een omgekeerde. i. De vermenigvuldiging is distributief over de optelling: a · (b + c) = a · b + a · c
en
(b + c) · a = b · a + c · a
voor alle a, b, c ∈ K.
De letter K die we hier hebben gebruikt voor een lichaam, stamt uit het Duits: “K¨orper”; ons Nederlandse woord “lichaam” is daar gewoon een vertaling van. Uit lemma (2.18) op bldz. 51 volgt rechtstreeks: (2.27) stelling: Zm is een lichaam ⇐⇒ m is een priemgetal.
Omdat Zp een lichaam is als p een priemgetal is, is het gebruikelijk daarvoor de notatie F p te gebruiken om te benadrukken dat dit een lichaam (Field) is. Dus bijvoorbeeld F 11 = Z11 . Maar F10 bestaat niet. Vaak komt men ook de notatie GF(p) tegen, ter ere van de Franse wiskundige E. Galois de ontdekker van de lichamen. Omdat Fp slechts eindig veel elementen heeft, noemen we het een eindig lichaam. Er bestaan
58
2. Gehele getallen modulo
nog andere eindige lichamen dan deze; het aantal elementen daarin is een macht van een priemgetal; maar die voeren hier te ver. Opgaven opgave 2.20 — even spelen met de lichaamseigenschappen Bewijs dat er in een lichaam geen nuldelers zijn. opgave 2.21 — uitdager a. Laat L een lichaam zijn en zij a ∈ L zo dat a 2 = 1, waarbij a2 zoals gebruikelijk een korte schrijfwijze is voor a · a. Bewijs dat a = 1 of a = −1. (Tip: denk aan de vorige opgave.)
b. We kijken naar Z8 , geen lichaam! Laat zien dat hierin 4 elementen zitten waarvan het kwadraat gelijk aan 1 is.
2.11 Congruentie modulo m (2.28) notatie: Als je wilt zeggen dat twee getallen a en b een geheel veelvoud van m verschillen, kun je ook zeggen: “a en b zijn congruent modulo m.” Dat wordt z o´ genoteerd: a≡b
(mod m)
Of anders gezegd: a ≡ b (mod m) precies dan als rest(a − b, m) = 0 rest(a, m) = rest(b, m) , dus als a en b dezelfde restklasse modulo m hebben. (2.29) voorbeeld: 5 is congruent met 17 modulo 12, oftewel
5 ≡ 17
(mod 12)
1 ≡ 13 (mod 12) 1 ≡ 25 (mod 12) 1 ≡ −11 1 ≡ a (mod 12) ⇐⇒ a is een 12-voud + 1. einde voorbeeld
Je kunt stelling (2.8) op bldz. 45 ook als volgt verwoorden: (2.30) stelling: Laat a, a0 , b, b0 en m gehele getallen zijn met a0 ≡ a
(mod m)
Dan a. a0 + b0 ≡ a + b 0
0
b. a − b ≡ a − b c. a0 · b0 ≡ a · b
en
b0 ≡ b
(mod m)
(mod m) (mod m)
(mod m)
Let op het type van je objecten: als je opschrijft a≡b
(mod m)
(mod 12).
oftewel als
2.9
59
In welke gevallen kun je delen in Z mod m?
dan zijn a, b en m gehele getallen. Maar als je opschrijft x=y
in
Zm
dan zijn x en y geen gehele getallen maar restklassen. Dus zowel als
“3 ≡ 15
(mod 12)”
‘3 = 15 ∈ Z12 ” zijn fout! Opgaven opgave 2.22 — oefening Los de volgende congruentievergelijkingen op: a. ?x ∈ Z :
4x ≡ 3
c. ?x ∈ Z :
20x ≡ 36
b. ?x ∈ Z :
d. ?x ∈ Z :
(mod 9)
20x ≡ 4
15x ≡ 25
(mod 30) (mod 4) (mod 35)
opgave 2.23 — tentamenopgave a. Los x ∈ Z op: 21 · x ≡ 98
b. Los x ∈ Z op: 21 · x ≡ 98 c. Los x ∈ Z op: 21 · x ≡ 98
(mod 89). (mod 90). (mod 91).
opgave 2.24 — uitdager a. Laat n een geheel getal zijn. Bewijs dat n 2 ≡ 0
(mod 4)
b. Ga na of 1234567890123456789012345671 een kwadraat is.
of
n2 ≡ 1
(mod 4).
2.12 Een toepassing van modulo rekenen: random generators Rekenen in Zm wordt veel toegepast op computers. Veel coderingen maken er gebruik van, het is vaak mogelijk om problemen over gehele getallen op te lossen door ze voor een aantal verschillende waarden van m te vertalen in een probleem in Z m met als bijkomend voordeel dat je die problemen parallel kunt ´ en van de vele toepassingen van modulo rekenen op computers is de standaard random generaoplossen. E´ tor, het algoritme dat vaak gebruikt wordt om rijen toevalsgetallen te maken. Voor zo’n random generator worden enkele grote gehele getallen p, q en m genomen en een gehele startwaarde, zeg n 0 . De elementen n1 , n2 , n3 , . . . van die rij worden nu achtereenvolgens gemaakt volgens ni+1 := rest(p · ni + q, m) Hierin komt geen modulo voor, maar voor het begrijpen en voor redeneringen is het heel prettig om dit op te vatten als rekenen in Zm : ni+1 := p · ni + q
60
2. Gehele getallen modulo
Hier is een voorbeeld: p = 3, q = 0, m = 11, n 0 = 5: rest(3 · 5, 11) = 4, rest(3 · 9, 11) = 5,
rest(3 · 4, 11) = 1,
rest(3 · 1, 11) = 3,
rest(3 · 5, 11) = 4,
rest(3 · 4, 11) = 1,
rest(3 · 3, 11) = 9, rest(3 · 1, 11) = 3,
···
Je ziet hier een eindeloze herhaling van het rijtje 4, 1, 3, 9, 5. Dat ziet er niet erg toevallig uit! Nieuw voorbeeld, nu met p = 3, q = 0, m = 19, n 0 = 5: rest(3 · 5, 19) = 15,
rest(3 · 15, 11) = 7,
rest(3 · 1, 19) = 2,
6, 18, 16, 10, 11, 14, 4, 12, 17, 13, 1, 3, 9, 8, 5, · · · Na die 5 krijg je natuurlijk weer een herhaling van het voorgaande. Dit ziet er op het eerste gezicht al wat meer toevallig uit, hoewel stukjes · · · , 1, 3, 9, · · · toch wel opvallen. Als je nu al deze getallen door 19 deelt, dan krijg je een rijtje getallen tussen 0 en 1, en dat is wat je normaal wilt. Omdat er maar hoogstens m waardes mogelijk zijn, zal de generator na voldoende veel stappen weer een waarde opleveren die eerder is voorgekomen, en daarna krijg je natuurlijk een periodieke herhaling van een vast rijtje. Het is dus belangrijk om die m flink groot te kiezen, maar dat is nog geen garantie dat het heel lang duurt voordat er systeem te ontdekken valt. Bovendien werken sommige combinaties beter dan andere voor allerlei tests op toevalligheidskwaliteit. Het voert hier te ver om daar op in te gaan. Een bekende goede combinatie is: p = 16 807, q = 0 en m = 2 147 483 647. Voor het rekenwerk op computers is het natuurlijk erg handig om voor m een macht van 2 te nemen. Als je dan q = 0 neemt, is de periode echter hoogstens een kwart van 2 k . Door q niet 0 te nemen kun je dit verbeteren. Ook 2k + 1 en 2k − 1 zijn nog wel handige keuzes voor m: er zijn heel simpele snelle machine-
algoritmen voor vermenigvuldigen modulo 2 k + 1 en 2k − 1. In al dit soort puzzels is rekenen en redeneren in Zm natuurlijk wezenlijk.
opgave 2.25 — flinke uitdager Bewijs dat voor alle n ∈ N geldt 7 | 12n + 6 · 5n . Let op: experimenteel regelmaat ontdekken is wel interessant, maar geen bewijs! opgave 2.26 — overzicht, alleen als test van je kennis voor jezelf a. Wat is een restklasse modulo het gehele getal m? b. Wat is een representant van een restklasse? c. Wat betekent a = b
in
Zm ? En hoe kun je die bewering ook nog noteren (m.b.v. congruentie)?
d. Hoeveel elementen bevat Zm ? e. Wat is een nuldeler? En hoe kun je nagaan of n een nuldeler is in Z m als n en m gehele getallen zijn met m > 1? f. Wat is een eenheid? En hoe kun je nagaan of n een eenheid is in Z m als n en m gehele getallen zijn met m > 1? g. Voor welke p, q, m ∈ Z bestaat de volgende breuk: p q
in
Z|m
2.9
In welke gevallen kun je delen in Z mod m?
61
h. Voor welke m ∈ Z geldt: je kunt in Zm delen door ieder getal dat niet 0 is? Waarom? En hoe noteer je in dat geval Zm ook wel? i. In welke gevallen kun je delen in Z m ? j. Hoe kun je, als het mogelijk is, zonder proberen een deling uitvoeren in Z m ? k. In welke gevallen krijg je nuldelers in Z m en welke elementen zijn dan nuldelers? l. Hoe los je vergelijkingen in Zm van type ?x ∈ Zm : ax = b op?
hoofdstuk 3
Codering van gehele, rationale en floating point getallen
Voor digitale informatie (computers, cd’s, etc.) wordt van het binaire (tweetallige) systeem gebruik gemaakt: je hebt dan alleen de cijfers 0 en 1 nodig, en die kun je in elektrische systemen gemakkelijk weergeven: wel of geen stroom (of: wel of geen spanning). Op rekenmachines wordt i.h.a. gebruik gemaakt van een gemengd binair-decimaal systeem: binary coded decimals. Dit hoofdstuk kan dienen als een inleiding in codering van getallen op computers en rekenmachines. Bovendien kijken we nog naar de wiskundige achtergrond van het coderen van rationale getallen.
3.1 Binaire notatie van gehele getallen Als we normaal het getal 20571 opschrijven, bedoelen we: 1 + 7 × 10 + 5 × 102 + 2 × 104 of wat formeler: 1 × 100 + 7 × 101 + 5 × 102 + 0 × 103 + 2 × 104 Deze notatie, gebaseerd op machten van 10, noemen we decimale notatie. Voor digitale opslag en verwerking is i.h.a. binaire codering handiger. In binaire notatie bedoelen we met 1010111 1 + 2 + 4 + 16 + 64 nu weer decimaal genoteerd, of formeler 1 × 20 + 1 × 2 1 + 1 × 2 2 + 0 × 2 3 + 1 × 2 4 + 0 × 2 5 + 1 × 2 6 Je hebt hier alleen maar de cijfers 0 en 1 nodig: als je bijvoorbeeld op de k-de plaats van rechts een 2 zet, dan betekent dat in feite: 2 × 2k−1 en dan kun je beter op de k + 1-ste plaats het cijfer e´ e´ n verhogen; en als dat daar weer tot een 2 leidt, gaat het weer net zo verder. Omdat in dit hoofdstuk vaak naast elkaar decimale en binaire notatie zullen worden gebruikt, zullen we waar nodig aangeven met een index wat we bedoelen: 1011dec = 1 × 100 + 1 × 101 + 0 × 102 + 1 × 103 1011bin = 1 × 20 + 1 × 21 + 0 × 22 + 1 × 23 = 11dec
3.1
63
Binaire notatie van gehele getallen
Optellen kun je formeel z´o doen: 1010111bin + 11011bin = 1 × 20 + 1 × 21 + 1 × 22 + 0 × 23 + 1 × 24 + 0 × 25 + 1 × 26 +
1 × 20 + 1 × 21 + 0 × 22 + 1 × 23 + 1 × 24 = 2 × 20 + 2 × 21 + 1 × 22 + 1 × 23 + 2 × 24 + 0 × 25 + 1 × 26 = 0 × 20 + 1 × 21 + 0 × 22 + 0 × 23 + 1 × 24 + 1 × 25 + 1 × 26 = 1110010bin
Handiger is het om de cijfers onder elkaar te zetten en te rekenen zoals je decimaal gewend bent; hier zijn dezelfde optelling en bovendien nog een aftrekking: 1010111 11011 _______ + 1110010
1010111 11011_______ 111100
Vermenigvuldigen gaat ook net zo; hier is opschuiven naar links (shift left) het vermenigvuldigen met 2. Bijvoorbeeld 1010111bin × 11011bin : 1010111 11011 _______ * 1010111 1010111 1010111 1010111 ____________ + 100100101101
Opgaven opgave 3.1 — even zelf er mee spelen Bereken in binaire notatie: 101010 101101 10110 10111 10101 _______ + ________ +
101101 10111 _______ -
10110 10101 ______-
101101 10101 ______ *
64
3. Codering van gehele, rationale en floating point getallen
opgave 3.2 — a. Natuurlijk is het eerder gegeven algoritme voor delen met rest in de natuurlijke getallen niet erg effici¨ent. We gaan hier nadenken hoe je delen met rest zou kunnen implementeren op een computer, waarop optellen, aftrekken en vermenigvuldigen van gehele getallen al beschikbaar zijn, maar niet delen. Als je delen met rest op een processor moet implementeren wil je dat zo effici¨ent mogelijk doen. Effici¨enter dan telkens maar b aftrekken is de volgende stap: • Neem een gehele variabele t.
• Initieer t := b. • Verdubbel t zo vaak mogelijk voordat het resultaat groter wordt dan a.
• Trek nu ineens die t van a af.
Als je binair rekent op een computer en rechtstreeks de processor bestuurt, is verdubbelen erg eenvoudig: het is niets anders dan een shift naar links van de rij bits; in C ++ met de operator <<. Denk nu goed na hoe je bovenstaande truc kunt gebruiken voor een snel algoritme voor delen met rest (op basis van optellen, aftrekken, vermenigvuldigen en een groter-dan test, maar zonder delen) en beschrijf dit algoritme in een goed leesbare vorm in C ++ . Test je programma, o.a. door 100 te delen door 7. b. * Beredeneer dat je C++ programma correct is door de nodige specificaties van invoer en uitvoer te geven en te bewijzen dat hieraan voldaan is. Zie daarbij het eerder gegeven voorbeeld met toelichting in hoofdstuk 1.
3.2 Machtsverheffen Op computers is snel machtsverheffen met grondtallen in Z of in Z modulo een natuurlijk getal vaak heel nuttig. Telkens met het grondtal vermenigvuldigen is natuurlijk niet snel. Een handige combinatie van een aantal keren kwadrateren en vermenigvuldigen met het grondtal is veel effici¨enter. Bijvoorbeeld a1357 reken je niet uit door 1357 vermenigvuldigingen, maar door te berekenen: a2 , a4 , a8 , a16 , a32 , a64 , a128 , a256 , a512 , a1024 en daarmee te berekenen a · a4 · a8 · a64 · a256 · a1024 Totaal slechts 15 vermenigvuldigingen, nog afgezien van speciale trucs voor snel kwadrateren. (Natuurlijk wordt daarbij in het algemeen niet eerst die eerste rij met telkens kwadrateren berekend, maar gaat het kwadrateren gelijk op met het berekenen van de macht.) Deze truc werkt heel eenvoudig op computers dank zij het binair opslaan van de exponent. Opgave opgave 3.3 — programmeer Werk bovenstaande methode voor machtsverheffen uit tot een algoritme met invoer van een positief geheel grondtal en een positieve gehele exponent. Programmeer dit algoritme in goed leesbare vorm in C ++ en test
3.4
Binaire codering van gehele getallen
65
het. Kies als type voor het grondtal unsigned long int en maak ook een versie die beveiligd is tegen overflow met behulp van het commando sizeof. Ter herinnering: Om in C++ het laatste binaire cijfer van een geheel getal te zien kun je de bitwise AND gebruiken: &. Voor bit-shift-right van een geheel getal is de operator >> beschikbaar en voor bit-shift-left <<. Je kunt natuurlijk ook delen-met-rest door 2 op de exponent toepassen: het quotient krijg je met de infix-operator / en de rest met met %. Let er op dat je kwadrateren niet uitvoert m.b.v. ‘. . . ˆ2’, want ˆ wordt gebruikt voor het logische exclusieve OR in C++ !
3.3 Hexadecimale notatie van gehele getallen Soms worden ook andere grondtallen dan 2 en 10 gebruikt voor representatie/notatie van getallen, doorgaans machten van 2. Bekend is de hexadecimale notatie met grondtal 16. De cijfers zijn hier: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Zo betekent 3BF061 hex : 1 × 160 + 6 × 161 + 0 × 162 + 15 × 163 + 11 × 164 + 3 × 165
3.4 Binaire codering van gehele getallen Gehele getallen worden doorgaans op computers binair gecodeerd als een rij bits die het gehele getal weergeven modulo een macht van 2, bijvoorbeeld modulo 2 16 , een (vrij zuinige) representatie die 16 bits per getal nodig heeft, maar slechts gehele getallen van −32768 tot en met 32767 toelaat. Een positief getal, kleiner dan 215 wordt hier gerepresenteerd precies zoals in de voorgaande paragraaf over binaire notatie.
Maar een negatief getal n (≥ −215 ) wordt gerepresenteerd als het binaire getal 2 16 + n, dus als een getal
dat minstens 215 is, dus met als hoogste bit een 1. Omdat optellen en aftrekken goed werkt in Z 216 , kun je er probleemloos mee werken, zolang er een controle op overflow en underflow is. Controle is wel nodig: bijvoorbeeld de som van twee positieve getallen moet
een positief getal opleveren; als de optelling modulo 2 16 een negatief geheel getal (gecodeerd als een getal ≥ 215 ) oplevert, dan moet het systeem overflow melden. Standaard controleert C ++ niet, dat maakt het rekenen sneller, maar laat de verantwoordelijkheid voor controle over aan de programmeur. Vermenigvuldigen in Z216 lijkt riskant: hoe zit het met nuldelers? Eigenlijk is het een schrikbarend getalsysteem: alle even getallen zijn nuldeler! Maar het valt mee: als een product 0 oplevert in Z 216 , dan krijgen we dus in feite een veelvoud van 216 , dat betekent dan een overflow of underflow, die als een error dient te worden gemeld; in C++ is dat ook weer de verantwoordelijkheid van de programmeur. Afgezien daarvan gaat vermenigvuldigen dus toch ook goed. Delen met rest is natuurlijk maar een afgeleide van vermenigvuldigen; dat levert ook geen probleem, evenmin als machtsverheffen met natuurlijke exponenten.
66
3. Codering van gehele, rationale en floating point getallen
Opgaven opgave 3.4 — even zelf doen Om even het principe in werking te zien gaan we rekenen met 6-bits gehele getallen, dus modulo 64. Bereken nu met binaire representaties zoals hier boven besproken, voor zover mogelijk: registreer ook eventuele overflow/underflow: a. −4 + 25 b. 4 − 25 c. −4 + (−25)
d. 20+20 e. 6 × 5 f. −6 × 5 g. −6 × −5 h. 6 × 8
opgave 3.5 — oefening Het binair berekenen van het tegengestelde wordt vaak ‘calculating the two’s complement’ genoemd. Verklaar! opgave 3.6 — computerpraktijk Welke typen gehele getallen zijn er in C ++ ? Zijn er ook typen voor natuurlijke getallen? Hoe kun je het bereik opvragen in C++ ? Experimenteer in de buurt van de rand van het bereik van e´ e´ n van de typen gehele getallen en e´ e´ n van de typen natuurlijke getallen wat er gebeurt als je over de grens gaat.
3.4
67
Binaire codering van gehele getallen
3.5 * De rationale getallen Uit de gehele getallen kun je de rationale getallen construeren. Een rationaal getal kun je zien als een rijtje van twee gehele getallen, waarvan de tweede niet 0 is. Het eerste van dat rijtje duid je aan met ‘teller’ en het tweede met ‘noemer’. Je kunt het zien als een datastructuur op een computer. Uit de rekenlessen weet je dat twee rationale getallen
a b
en
a0 b0
gelijk zijn, oftewel dat a : b = a0 : b0 , precies
als a · b0 = a0 · b. We kunnen dus een test op gelijkheid defini¨eren als volgt: IsEqual( [a,b], [c,d], ’rat’) := [ Functie Test a*d=b*c Endtest ]
We hebben hier een datastructuur, waarin heel veel (in principe oneindig veel) tweetallen hetzelfde object 9 representeren. Je kunt eenvoudiger zeggen: bijvoorbeeld ’ 15 20 ’ en ’ 12 ’ zijn namen van hetzelfde object,
hetzelfde rationale getal, want 15 · 12 = 20 · 9. Het object zelf kun je in feite gaan zien als de verzameling van alle paren die dit object representeren. Dit is de manier waarop in de wiskunde de rationale getallen worden gemaakt uit de gehele getallen. Het komt er op neer, dat een rationaal getal op oneindig veel manieren gerepresenteerd kan worden door een tweetal gehele getallen en zelf als die verzameling van representaties gezien wordt. Er geldt: • IsEqual( [a,b], [a,b], ’rat’ ) levert True;
• Als IsEqual( [a,b], [c,d], ’rat’ ) True oplevert dan ook levert IsEqual( [c,d], [a,b], ’rat’ ) ook True;
• Als IsEqual( [a,b], [c,d], ’rat’ ) True oplevert en ook IsEqual( [c,d], [e,f], ’rat’ ) True oplevert, dan levert ook IsEqual( [a,b], [e,f], ’rat’ ) True. De eerste twee zijn vanzelfsprekend, de laatste kun je als volgt beredeneren, uitsluitend op basis van kennis van de gehele getallen, dus zonder gebruik te maken van kennis van breuken: bewijs: Stel dat IsEqual( [a,b], [c,d], ’rat’ ) en IsEqual( [c,d], [e,f], ’rat’ ) beide True opleveren, dan dus ( ad =bc cf =de
We willen iets met af , daarom vermenigvuldigen we de eerste vergelijking met f : adf = bcf Nu kunnen we volgens de tweede vergelijking cf vervangen door de: adf = bde Omdat d 6= 0 per definitie kunnen we links en rechts daardoor delen: af = be En zo vinden we wat we zochten. Waarom zo moeilijk doen? Waarom niet als volgt? IsEqual( [a,b], [c,d], ’rat’ ) levert True betekent a = c ; b d
68
3. Codering van gehele, rationale en floating point getallen
IsEqual( [c,d], [e,f], ’rat’ ) levert True betekent c = e ; d f dus a = de , dus IsEqual( [a,b], [e,f], ’rat’ ) levert True. b Dat doen we niet, omdat we dan van de eigenschappen van de rationale getallen gebruik maken, en die willen we nu net beredeneren m.b.v. alleen maar de eigenschappen van de gehele getallen. Natuurlijk willen we breuken vaak ‘vereenvoudigen’. Dat kunnen we z´o defini¨eren: Normal([a,b],’rat’):= [ Functie [ Signum(b)*quo(a,ggd(a,b)) , Signum(b)*quo(b,ggd(a,b))] ] Hierin gebruiken we een functie ‘Signum’ die 1 oplevert voor positieve getallen en −1 voor negatieve getallen om te zorgen dat we na het vereenvoudigen een positieve noemer krijgen. Om te zien dat dit doet wat we willen moet je nog narekenen dat • Voor ieder paar [a,b] met b ongelijk aan 0 geldt dat IsEqual( [a,b], Normal(a,b,’rat’), ’rat’ ) levert True.
• Als IsEqual( [a,b], [c,d], ’rat’ ) True oplevert, dat dan Normal([a,b],’rat’) hetzelfde tweetal oplevert als Normal([c,d],’rat’).
Optellen doe je door gelijknamig te maken en dan de tellers bij elkaar op te tellen. Gelijknamig maken kun je doen met het kleinste gemene veelvoud van de noemers, maar we doen het hier simpelweg door het product te nemen. Product nemen ligt ook voor de hand. We gaan optellen en vermenigvuldigen defini¨eren als volgt: Sum([a,b],[c,d],’rat’):=[ Functie [ad+bc,bd] ] Product([a,b],[c,d],’rat’):=[ Functie [ac,bd] ] We willen natuurlijk wel dat de som en het product van twee rationale getallen berekenen niet afhangt van de keuze van de namen, van de representanten. We moeten dus nagaan of geldt: Als IsEqual( [a,b], [a0 ,b0 ], ’rat’ ) True oplevert en ook IsEqual( [c,d], [c0 ,d0 ], ’rat’ ) True oplevert, dan levert IsEqual( Sum([a,b],[c,d]), Sum([a 0 ,b0 ], [c0 ,d0 ]), ’rat’) ook True. Net zo voor het product. Bewijzen dat dat inderdaad klopt, is een kwestie van wat priegelen, net als hier boven. Het leuke is nu, dat je in de rationale getallen ook kunt delen behalve door 0. De constructie van zo’n functie voor het delen ligt voor de hand.
hoofdstuk 4
Machtsverheffen in Z modulo m Machtsverheffen in Zm wordt in veel algoritmen toegepast, o.a. in coderingen en in toepassingen waarin gebruikt wordt gemaakt van rijen die gemaakt worden met recurrente betrekkingen. We gaan het gevonden resultaat hier ook toepassen: in RSA-codering, die gebaseerd is op machtsverheffen in Z m . Als je kijkt naar de rij van machten in Z m , dan moet daar wel ooit een getal opduiken dat al eerder geweest is, want er zijn maar eindig veel mogelijkheden. Vanaf dat punt krijg je in feite herhaling. Belangrijke vraag is: kun je eenvoudig berekenen waar herhaling optreedt? E´en toepassing van machten in Zm heb je al eerder gezien. In het hoofdstuk waar Z m werd ge¨ıntroduceerd hebben we aan het eind gekeken naar random generators, waarbij een rij getallen x 0 , x1 , x2 , . . . wordt gemaakt volgens het recept xi+1 := rest(a · xi + b, m) De rij die de random generator aflevert is dan
x0 x1 x2 m , m , m , . . ..
Je kunt die rij x0 , x1 , x2 , . . . natuurlijk
ook opvatten als een rij in Zm . Voor het (vaak gebruikte) geval b = 0 krijg je niets anders dan telkens vermenigvuldigen met a, dus de rij is n 7→ a n x0 . Voor zo’n pseudo-random rij is wil je natuurlijk graag dat de onvermijdelijk ooit optredende herhaling zo laat mogelijk komt. Daarnaast en in samenhang met de kwestie van herhaling is het effici e¨ nt berekenen van machten met hoge exponenten een belangrijk thema.
4.1 Een rekenvoorbeeld van machtsverheffen in Z modulo m 1000
We gaan 23 in Z45 op een slimme, snelle manier uitrekenen. Als je even er aan gaat rekenen gaat het met wat minder slimheid ook nog best, maar dit voorbeeld is bedoeld als demonstratie van de idee¨en die in dit hoofdstuk nader uitgewerkt worden. Natuurlijk kun je dit probleem ook z´o formuleren: we zoeken een getal n ∈ Z met 0 ≤ n < 45 zodat n ≡ 231000
(mod 45)
oftewel 231000 = n + een veelvoud van 45 De eerste truc is nu: 45 = 5 · 9, we gaan eerst modulo 5 en modulo 9 rekenen. We gaan gehele getallen n 5 en n9 zoeken zodat 231000
=
n5 + een veelvoud van 5
231000
=
n9 + een veelvoud van 9
waarbij we 0 ≤ n5 < 5 en 0 ≤ n9 < 9 kunnen nemen. Eerst modulo 5:
70
4. Machtsverheffen in Z modulo m
231 ≡ 3
(mod 5),
234 ≡ 1
232 ≡ 4
235 ≡ 3
(mod 5),
233 ≡ 2
(mod 5),
(mod 5),
(mod 5),
...
Het rijtje 3, 4, 2, 1 herhaalt zich natuurlijk steeds, want bij iedere stap gebeurt hetzelfde: vermenigvuldigen met 23 en reduceren tot modulo 5. Als vierde, achtste, twaalfde, enz. element staat er 1 modulo 5, dus ook het 1000-ste element is 1 modulo 5. Kortom: 100023
=
1 + een veelvoud van 5
Nu modulo 9: 231 ≡ 5
(mod 9),
232 ≡ 7
233 ≡ 8
(mod 9),
234 ≡ 4
(mod 9),
239 ≡ 2
239 ≡ 5
(mod 9),
...
(mod 9),
(mod 9),
234 ≡ 1
(mod 9),
Het rijtje 5, 7, 8, 4, 2, 1 herhaalt zich natuurlijk steeds, want bij iedere stap gebeurt hetzelfde: vermenigvuldigen met 23 en reduceren tot modulo 9. Als zesde, twaalfde, achtiende, enz. element staat er 1 modulo 9, dus ook het 996-de element is 1 modulo 9. We gaan dan nog even verder: 23996 ≡ 1
(mod 9),
23999 ≡ 8
23997 ≡ 5
(mod 9),
(mod 9),
231000 ≡ 4
23998 ≡ 7
(mod 9),
(mod 9)
Kortom: 231000
=
4 + een veelvoud van 9
We gaan nu bovenstaande resultaten modulo 5 en modulo 9 combineren. We zijn op zoek naar een geheel getal n (met 0 ≤ n < 45) zodat 231000
=
n + een veelvoud van 45
- Omdat 45 weer een veelvoud is van 5 geldt dan 231000
=
n + een veelvoud van 5
maar we weten al dat 231000
=
1 + een veelvoud van 5
Dus klaarblijkelijk n
=
1 + een veelvoud van 5
dus n is een element van {1, 6, 11, 16, 21, 26, 31, 36, 41}.
- Omdat 45 ook een 9-voud is zie je net zo dat n
=
4 + een veelvoud van 9
dus n is een element van {4, 13, 22, 31, 40}. Blijkbaar is n = 31. Dat laatste hebben we niet erg slim gedaan, tenminste als we niet met zo kleine getallen hadden kunnen rekenen was dat laatste stukje teveel werk geworden. We gaan nu eerst dat laatste probleem systematischer aanpakken.
4.2
Het oplossen van meervoudige congruenties
71
4.2 Het oplossen van meervoudige congruenties
(4.1) voorbeeld: In het voorgaande moesten we het volgende probleem oplossen: ( n ≡ 1 (mod 5) ?n ∈ Z n ≡ 4 (mod 9) Vertaald: we zoeken gehele getallen n zodat ( n = 1 + 5p n = 4 + 9q
Nu komt een vreemde zet: we zoeken weliswaar n, maar die elimineren we toch even; als we dan p of q gevonden hebben, kunnen we n gemakkelijk uitrekenen. We halen uit bovenstaand stelsel de vergelijking 1 + 5p = 4 + 9q 5p − 9q = 3 Dat is een bekend soort vergelijking. We kunnen hierop stelling (1.28) op bldz. 29 toepassen en vinden dan p = 6 − 9k
en
q = 3 + 5k | k ∈ Z
We vullen p in (q mag ook, doet er niet toe) en vinden n = 1 + 30 − 45k | k ∈ Z oftewel n ≡ 31
(mod 45)
einde voorbeeld Deze methode is dus niets anders dan: • Vertaal een stelsel van twee congruenties naar de gehele getallen door twee extra parameters in te voeren. • Haal hieruit een vergelijking in die twee parameters over Z. • Los die vergelijking op m.b.v. de techniek die je geleerd hebt in paragraaf 1.13 op bldz. 26. • Vul de gevonden waarden voor e´ e´ n van die twee variabelen in om de oplossing te vinden. Als er oplossingen zijn, kun je die weer schrijven als een congruentie. In het geval je een stelsel van meer dan twee congruenties moet oplossen werk je stapsgewijs: bijvoorbeeld bij drie congruenties kun je eerst het stelsel van de eerste twee oplossen en het resultaat daarvan, ook weer een congruentie, kun je dan combineren met de laatste congruentie van het stelsel.
72
4. Machtsverheffen in Z modulo m
Opgaven opgave 4.1 — oefening Los de volgende stelsels van congruenties op met de rekentechniek die in het voorgaande voorbeeld is gedemonstreerd: a. ( x ≡ 1 (mod 4) x≡7
(mod 13)
b. (
n ≡ 30
(mod 35)
n ≡ 45
(mod 128)
opgave 4.2 — oefening Los de volgende stelsels van congruenties op met de rekentechniek die in het bovenstaande voorbeeld is gedemonstreerd. Vergeet niet precies je resultaat te vergelijken met het antwoord in het boek! a. ( x ≡ 13 (mod 15) x≡5
(mod 39)
b. (
x ≡ 13
(mod 15)
x ≡ −5
(mod 39)
opgave 4.3 — oefening Voor welke x ∈ Z geldt: x ≡ 3 (mod 4) x ≡ 4 (mod 5) x ≡ 3 (mod 7)
Tip: los eerst x op uit de eerste twee vergelijkingen en combineer dat resultaat met de derde vergelijking. Dat komt neer op twee keer een berekening volgens het voorgaande.
opgave 4.4 — oefening Voor welke n ∈ Z geldt: n ≡ 40 (mod 45) n ≡ 8 (mod 98) n ≡ 60 (mod 109)
4.3
73
De Chinese reststelling
4.3 De Chinese reststelling Laten we het voorgaande probleem nu maar eens algemener bekijken. Na enige manipulatie kwamen we op een probleem van type: voor welke gehele x geldt: x ≡ a (mod m) x ≡ b (mod n)
waarbij a, b, m en n gehele getallen zijn en m 6= 0 en n 6= 0. We zoeken dus gehele x, zodat er gehele i en j bestaan met x = a+i·m x = b+j ·n We zijn klaar als we gehele i en j vinden zodat a+i·m=b+j ·n i·m−j·n=b−a Voor het geval zoals in bovenstaand voorbeeld dat ggd(m, n) = 1 bestaan gehele p en q zodat p·m+q·n=1 Voor ons probleem krijgen we: (b − a) · p · m + (b − a) · q · n = b − a Voor i krijgen we dus: i = (b − a) · p Daarmee vinden we een oplossing: x = a + (b − a) · p · m = a + bpm − apm Die oplossing kunnen we nog wat fraaier opschrijven m.b.v. pm + qn = 1
dus
pm = 1 − qn
x = a + bpm − a(1 − qn) = bpm + aqn Natuurlijk krijgen we ook een oplossing als we er een veelvoud van mn bij optellen. Daarmee vinden we als oplossingen: x = aqn + bpm + kmn
met k een willekeurig geheel getal
—–? vraag: Vinden we zo alle oplossingen? antwoord: Stel maar eens dat x0 een oplossing is en neem x0 := bpm + aqn. Dan 0 x ≡ a ≡ x0 (mod m) x0 ≡ b ≡ x0 (mod n)
Dus x0 − x0 is een veelvoud van m en van n, dus het is een veelvoud van m · n. We hebben zo dus inderdaad alle oplossingen gevonden. —–¿
74
4. Machtsverheffen in Z modulo m
Resultaat: (4.2) de Chinese reststelling: getallen p en q zo dat
Gegeven zijn m, n ∈ N ∗ zo dat m en n relatief priem zijn. Kies gehele
pm + qn = 1 Laat a en b gehele getallen zijn, dan heeft het congruentiestelsel x ≡ a (mod m) x ≡ b (mod n)
als oplossing
x ≡ aqn + bpm
(mod mn)
We zullen de gevonden formule nog even gaan toepassen op ons eerste probleem: na enig manipuleren kregen we: voor welke gehele x geldt x ≡ 11 (mod 21) x ≡ 7 (mod 16) Dus a = 11, b = 7, m = 21 en n = 16. Verder moeten we p en q vinden zodat p · 21 + q · 16 = 1 en we hadden al gezien dat we p = −3 en q = 4 kunnen nemen. Daarmee vinden we: aqn + bpm = 11 · 4 · 16 + 7 · (−3) · 21 = 704 − 441 = 263 opgave 4.5 — oefening De Chinese reststelling staat in een boek van Sun Tzu, een Chinese wiskundige die rond 300 na Christus leefde. Hij gaf als voorbeeld: Gevraagd een getal. Als je herhaaldelijk 3 aftrekt van dat getal, houdt je 2 over; als je herhaaldelijk 5 aftrekt houdt je 3 over en als je herhaaldelijk 7 aftrekt, houd je 2 over. Welk getal kan dat zijn? Los dit probleem nu zelf op, naar keuze met bovenstaande formule of rechtstreeks door te rekenen zo als in het voorgaande.
4.4 Reductie van rekenoperaties in Z mod mn naar Z mod m De Chinese reststelling wordt o.a. gebruikt voor snelle methodes om van grote getallen machten met grote exponenten te berekenen. De basis daarvan is het volgende vrijwel triviale lemma: (4.3) lemma: Laat a, b, m en n gehele getallen ongelijk aan 0 zijn. Als a ≡ b (mod m · n) dan a ≡ b (mod m). Dat is vanzelfsprekend: als a en b een m · n-voud verschillen, dan verschillen ze een m-voud. Als je nu een berekening wilt uitvoeren, kun je dat doen door modulo een groot getal m · n te rekenen, groter dan de gebruikte getallen en (tussen)uitkomsten. Dat kun je doen door de berekeningen zowel modulo m als modulo n uit te voeren en aan het eind ‘terug te rekenen’ naar modulo m · n met de Chinese reststelling. Voorwaarde is dan wel dat ggd(m, n) = 1. Natuurlijk is dit een omslachtige methode als je alleen maar een
75
4.5 * De Chinese reststelling en wiskundige structuur
vermenigvuldiging wilt uitvoeren, maar bij meer bewerkelijke klussen, met name ook bij het berekenen van machten met hoge exponenten, is dit wel degelijk een handig hulpmiddel. Ook bij rekenen modulo een getal kan het handig zijn dat getal in factoren te ontbinden. In het vervolg zullen we daar dankbaar gebruik van gaan maken.
4.5 * De Chinese reststelling en wiskundige structuur De Chinese reststelling, zoals we die in de vorige paragraaf gezien hebben, zegt in feite, dat, als ggd(a, b) = 1, er bij ieder paar getallen a ∈ Zm en b ∈ Zn precies e´ e´ n getal x ∈ Zmn is zodat x ≡ a (mod m) x ≡ b (mod n) —–? vraag: In Zmn kun je optellen, aftrekken en vermenigvuldigen. Wat levert dat op als je naar de bijbehorende elementen van Zm en Zn kijkt? antwoord: Laat x zijn zoals boven en y zodat y ≡ c (mod m) y≡d
(mod n)
Dan geldt voor x + y: x≡a
(mod m)
x≡b
(mod n) en
y≡c
en
y≡d
(mod m) (mod n)
dus dus
x+y ≡a+c x+y ≡b+d
(mod m) (mod n)
Als je nu dus wilt optellen in Zmn kun je parallel daarmee rekenen in de verzameling van paren elementen van Zm en Zn , dus in Zm × Zn door plaatsgewijs op te tellen: In Zmn : In Zm × Zn :
x ||
(a, b)
+
y ||
+ (c, d)
= (a + c, b + d)
Op precies dezelfde manier gaat het ook voor aftrekken en vermenigvuldigen: In Zmn :
—–¿
In Zm × Zn :
x ||
(a, b)
· ·
y ||
(c, d)
= (a · c, b · d)
Opgave opgave 4.6 — oefening Neem m = 16 en n = 19, x = 200 en y = 155. a. Bereken voor x het bijbehorende paar en a = rest(x, m), b = rest(x, n) en net zo voor y het paar c = rest(y, m), d = rest(y, n).
76
4. Machtsverheffen in Z modulo m
b. We gaan rekenen in Z16×19 = Z304 . Bereken x + y, x − y en x · y in Z304 . c. Bereken door (plaatsgewijs rekenen) in Z 16 × Z19 : (a, b) + (c, d), (a, b) − (c, d) en (a, b) · (c, d).
d. Bereken via de Chinese Reststelling de elementen uit Z 304 die horen bij de uitkomsten van het vorige onderdeel en controleer of die kloppen met de uitkomsten van onderdeel b.
4.6 Machtsverheffen We kunnen in Zm niet alleen optellen, aftrekken en vermenigvuldigen, maar ook machtsverheffen: dat is gewoon herhaald vermenigvuldigen: als n een geheel getal is, dan n2 = n · n = n2 enz.
n3 = n · n · n = n3
opgave 4.7 — oefening 4
8
Bereken in Z5 : 3 , 3 , 3
100
,3
101
.
opgave 4.8 — oefening Kun je op een slimme manier in Z7 uitrekenen wat 3
100
is? Zo ja, doe dat en leg uit, hoe je het doet.
opgave 4.9 — oefening We werken in het lichaam F7 . i
a. Bereken voor alle i ∈ N: 2 . i
b. Voor welke i ∈ N: 3 = 5 ?
4.7 Periodieke en semiperiodieke rijen van machten Laat a een element van Zm zijn. Bekijk de rij 1 = a 0 , a = a 1 , a2 , a3 , a4 , a5 , . . . Het is een oneindige rij van elementen uit een eindige verzameling, dus ergens moet voor de eerste keer een eerder voorgekomen getal optreden. (4.4) voorbeeld: Neem Z100 en a = 6. We krijgen de rij 1, 6, 36, 16, 96, 76, 56, 36, 16, 96, . . . We zien hier dat bij de zevende stap voor het eerst een eerder opgetreden getal opduikt: 36; we zien dat a7 = a2 .
Omdat a3 = a · a2 en a8 = a · a7 zie je meteen dat a8 = a3 , en zo
telkens verder: a9 = a4 , a10 = a5 , a11 = a6 , enz., algemeen: als k ≥ 2 dan ak+5 = ak . We zeggen nu dat die rij semiperiodiek is met periode 5 en preperiode (of aanlooplengte) 2.
4.7
77
Periodieke en semiperiodieke rijen van machten
einde voorbeeld (4.5) definitie: Laat x0 , x1 , x2 , x3 , . . . een rij zijn. Die rij heet semiperiodiek als er natuurlijke getallen p en n bestaan zodat voor alle natuurlijke getallen k ≥ n: xk+p = xk Als n en p minimaal zijn, dus wanneer voor het eerst na de n + p-de stap een eerder voorgekomen element optreedt, gelijk aan xn , dan noemen we p de periode en n noemen we de preperiode. Voor het geval de preperiode 0 is noemen we de rij periodiek. De voorgaande redenering kun je zelf gemakkelijk generaliseren om de volgende stelling in te zien: (4.6) stelling: Laat m een natuurlijk getal zijn en a een element van Z m . Dan is de rij machten van a semiperiodiek. Opgaven opgave 4.10 — tentamenopgave Laat a, m en n gehele getallen zijn ongelijk aan 0 en m is een echte deler van n. a. Bewijs of weerleg: onder bovenstaande voorwaarden geldt: als a k ≡ 1 (mod n).
(mod m) dan ak ≡ 1
b. Bewijs of weerleg: onder bovenstaande voorwaarden geldt: als a k ≡ 1 (mod m).
(mod n) dan ak ≡ 1
opgave 4.11 — uitdager a. Verzin waarden voor a en m, zodat de rij 1, a, a 2 , a3 , · · · periodiek is met periode 6 in Zm .
b. Verzin waarden voor a en m, zodat de rij 1, a, a 2 , a3 , · · · semiperiodiek is met periode 6 en preperiode 6 in Zm .
4.8 Het periodieke geval Bij de formule x0 ak+n = x0 ak krijg je natuurlijk de neiging beide kanten door x 0 ak te delen. Dan zou je an = 1 krijgen. Maar eventuele nuldelers kunnen dit verzieken. Laten we eerst maar eens ons beperken tot het geval x0 = 1: alle andere gevallen kun je krijgen door de hele rij met een getal x 0 te vermenigvuldigen. Stel nu dus dat ak+n = ak en a 6= 0, dan ak+n − ak = 0
ak (an − 1) = 0 Als a geen nuldeler is, dan is ak ook geen nuldeler (ga na), dus an = 1, dus is xn = x0 , dus is de preperiode 0 en is de rij periodiek. Omgekeerd, als de rij periodiek is, dan is dus a n = 1, dus is a geen nuldeler.
78
4. Machtsverheffen in Z modulo m
(4.7) lemma: De rij 1, a, a2 , a3 , . . . met a 6= 0 heeft preperiode 0, is dus echt periodiek, dan en slechts dan als a geen nuldeler is. Nu bestaat Zm uit twee of drie soorten elementen: 0, de eenheden en, als m niet priem is, de nuldelers. Volgens het bovenstaande krijgen we dus het echte periodieke geval precies als a een eenheid is. Volgens stelling (2.25) op bldz. 56 is dat precies het geval als a de restklasse van een geheel getal is dat relatief priem is met m. In dat geval levert die rij een voortdurende herhaling van het beginrijtje 1, a, a 2 , a3 , . . . , an−1 op.
4.9 De stelling van Euler In deze paragraaf zul je een fraaie redenering zien. Het idee achter deze redenering is een elementaire truc: kijk naar wat er niet verandert als je iets doet, in dit geval: als je vermenigvuldigt met een eenheid. We nemen de verzameling van eenheden van Z m . Zet die in een of andere volgorde en geef ze namen: laat e1 , e 2 , . . . , e N een rijtje zijn van alle eenheden van Z m , dus wel zo dat ei 6= ej als i 6= j. Daar gaan we nu de slimme truc mee uithalen. Bekijk eens wat er gebeurt bij vermenigvuldigen met e´ e´ n van die eenheden, zeg a; dan levert dat rijtje een nieuw rijtje ae1 , ae2 , . . . , aeN Het is gemakkelijk te zien dat dit ook allemaal eenheden zijn en dat ze onderling verschillend zijn, dus dit is gewoon het oude rijtje gepermuteerd: plaatsen gewisseld. Als we nu van beide rijtjes het product nemen, krijgen we dus hetzelfde: e1 · e2 · . . . · eN = ae1 · ae2 · . . . · aeN e1 · e 2 · . . . · e N = a N · e 1 · e 2 · . . . · e N Aangezien dit allemaal eenheden zijn, krijgen we hieruit 1 = aN Conclusie: (4.8) lemma:
Laat m een natuurlijk getal > 1 zijn en N het aantal eenheden in Z m . Dan geldt voor
iedere eenheid a in Zm dat aN = 1. —–? vraag: Natuurlijk kan die N van het lemma juist de periode van a zijn, maar dat hoeft in principe niet. Vraag: wat heeft die N met de periode van a te maken? antwoord: We weten uit het voorgaande al dat de periode van de rij van machten van a gelijk is aan of kleiner dan N . Stel nu maar eens dat de periode gelijk is aan n en dat n kleiner is dan N . Idee: zou N een veelvoud van n zijn? Dat gaan we testen door te delen. Veronderstel dus maar dat N = q · n + r met 0 ≤ r < n. Dan 1 = aN = aq·n+r = (an )q · ar = 1q · ar = ar
Omdat n het kleinste natuurlijke getal groter dan 0 is dat als exponent bij a het getal 1 oplevert, kan alleen maar r = 0. Daarmee hebben we gevonden dat n een deler is van N .
4.9
De stelling van Euler
79
—–¿ We vertalen dit nog even naar de gehele getallen: we schrijven a = k met k een geheel getal en ggd(k, m) = 1 i.v.m. de eis dan a een eenheid moet zijn in Z m . Dan is de conclusie: (4.9) stelling van Euler: Laat k en m natuurlijke getallen zijn groter dan 1 met ggd(k, m) = 1. Laat n het kleinste natuurlijke getal groter dan 0 zijn zodat k n ≡ 1 (mod m). Dan is n een deler van het aantal eenheden in Zm . Deze stelling werd voor het eerst gevonden en bewezen door de grote Zwitserse wiskundige Leonhard Euler (1707-1783). Ze levert niet de periode van de rij machten van een eenheid, maar wel een geheel veelvoud van die periode; voor allerlei doelen is dat voldoende, zoals we b.v. kunnen zien in RSA-codering; anders kan het een goede stap zijn in de richting van het vinden van de periode. Opgaven opgave 4.12 — oefening Beredeneer: als e1 en a eenheden zijn in Zm , dan is ook a · e1 een eenheid. opgave 4.13 — oefening Beredeneer: als e1 , . . . eN onderling verschillend zijn en alle eenheden van Z m zijn, en als a e´ e´ n van die eenheden is, dan zijn alle elementen van ae 1 , ae2 , . . . , aeN ook verschillend en vormen precies alle eenheden van Zm .
4.10 De kleine stelling van Fermat Uit de stelling van Euler volgt meteen een veel ouder resultaat, gevonden door Pierre de Fermat (1601-1665). Fermat is recent algemeen bekend geraakt om zijn ‘grote stelling’ die zegt dat er voor natuurlijke n > 2 geen geheeltallige oplossingen zijn voor de vergelijking in x, y en z: x n + y n = z n behalve de triviale met e´ e´ n van de drie variabelen 0. Die stelling is is lang een vermoeden geweest, dat door veel wiskundigen is onderzocht; pas in 1993 is het bewezen door Andrew Wiles. (4.10) de kleine stelling van Fermat, versie 1: Laat p een priemgetal zijn. Voor ieder element a ongelijk aan 0 in Fp geldt: ap−1 = 1. Als ap−1 = 1, dan zeker ook ak·(p−1) = 1 als k ∈ Z. Dat idee zullen we verderop gebruiken. Als je de exponent nog e´ e´ n ophoogt, kom je zo natuurlijk weer bij a uit. Dat geldt dan ook nog voor het geval a = 0. Als we dat vertalen naar gehele getallen en congruenties krijgen we: (4.11) de kleine stelling van Fermat, versie 2: Laat p een priemgetal zijn. Voor ieder geheel getal n geldt: np ≡ n
(mod p)
80
4. Machtsverheffen in Z modulo m
Opgave opgave 4.14 — oefening Bereken zonder rekenmachine of computer 7 100
(mod 97).
4.11 Een generalisatie van de kleine stelling van Fermat We gaan nu kijken naar machten van elementen uit Z m waar m een macht van een priemtal is: Z pk . De eerste vraag is: —–? vraag: Wat zijn in Zpk de nuldelers? antwoord: (4.12) voorbeeld: Laten we even kijken naar Z125 als voorbeeld. Daarin zijn alle 5-vouden nuldelers: als je met 25 vermenigvuldigt, krijg je 0 (mod 125). Alle andere getallen zijn geen nuldelers. Het aantal eenheden is dus 100. Volgends de stelling van Euler krijgen we: voor iedere x ∈ Z 125 : als x eenheid is, dus geen 5-voud, dan x100 = 1. einde voorbeeld Nu algemeen. Stel dat x · y ≡ 0
(mod pk ), maar x 6≡ 0
(mod pk ). en y 6≡ 0
(mod pk ). Dan is x · y
een veelvoud van pk , maar x en y zijn dat niet. Dan is zeker x een p-voud, want als dat niet zo zou zijn, zou y alle (minsens k) factoren p moeten bevatten, want p is een priemgetal. Omgekeerd, als x een veelvoud van p is, zeg x = u · p, dan x · p k−1 = 0, dus is x een nuldeler. Conclusie: de nuldelers in Zpk zijn precies de veelvouden van p. —–¿ Nu kunnen we ook het aantal eenheden berekenen: - het aantal elementen in Zpk is pk - het aantal nuldelers is het aantal p-vouden behalve 0, dat is p k−1 − 1
- het aantal eenheden is het aantal elementen minus het aantal nuldelers minus e´ e´ n (i.v.m. de nul), dus dat aantal is pk − pk−1 . (4.13) lemma: Als p een priemgetal is en k een natuurlijk getal groter dan 0, dan is het aantal eenheden in Zpk gelijk aan pk − pk−1 . Gevolg:
4.12
(4.14) stelling: k
81
Machten van eenheden in Zm
In Zpk is ieder element dat geen p-voud is, een eenheid, en voor zo’n element x geldt:
k−1
xp −p = 1. Anders gezegd: In Zpk geldt: an = 1 indien • a geen veelvoud van p en
• n een veelvoud van pk − pk−1 is.
Opgave opgave 4.15 — oefening Bereken getallen N zodat voor iedere eenheid a in Z m geldt dat aN = 1 voor de gevallen a. m = 8 b. m = 9 c. m = 81
4.12 Machten van eenheden in Zm We gaan nu kijken naar het geval, dat m geen priemgetal en geen macht van een priemgetal is. (4.15) voorbeeld: We kijken naar Z304 (304 = 16 × 19) en zoeken naar een getal k zodat voor iedere eenheid x
in Z304 geldt: xk = 1. Net als in het voorgaande zouden we het aantal eenheden van Z 304 kunnen berekenen. Dat is nog wel even zoeken! Er zijn ook methodes om op een systematische wijze dat aantal te berekenen en Euler heeft dat probleem ook al opgelost; in de literatuur is dit te vinden bij de ‘functie van Euler’. Dat zullen we hier niet doen, maar idee¨en gebruiken die we ook al tegengekomen zijn bij de Chinese reststelling, overigens dezelfde idee¨en die kunnen leiden tot de theorie van Euler. Stel dat x k = 1 in Z304 , d.w.z. xk ≡ 1
(mod 304)
D.w.z. xk is een 304-voud +1. Maar dan is xk zeker een 16-voud +1, en ook een 19-voud +1, dus xk ≡ 1
(mod 16)
en
xk ≡ 1
(mod 19)
Omgekeerd, stel dat y een natuurlijk getal is en yk ≡ 1
(mod 16)
en
yk ≡ 1
Dan zijn er gehele getallen s en t zodat y k = 1 + 16s = 1 + 19t
(mod 19)
82
4. Machtsverheffen in Z modulo m
Dus 16s = 19t, dus s is een 19-voud, zeg s = 19u met u geheel. Dan y k = 1 + 304u dus y k ≡ 1
(mod 304).
Als we voor x (met x een eenheid in Z304 ) een getal k zoeken zodat xk ≡ 1 k
kunnen we dus net zo goed een k zoeken zodat x ≡ 1 (mod 19). Dat is gemakkelijk met bovenstaande stellingen:
(mod 304),
(mod 16) en tegelijk xk ≡ 1
- t.b.v. Z16 : in orde als we voor k een (16 − 8)-voud nemen;
- t.b.v. Z19 : in orde als we voor k een (19 − 1)-voud nemen.
Als we tegelijk een 8-voud en een 18-voud willen hebben, dan moeten we een 72-voud nemen, want 72 is het kleinste gemene veelvoud van 8 en 18. Conclusie: ieder 72-voud voldoet. einde voorbeeld Opgave opgave 4.16 — oefening We rekenen hier in Z297 . a. Zoek natuurlijke getallen k > 1 zodat voor alle eenheden x ∈ Z 297 geldt: xk = 1.
b. Zoek natuurlijke getallen k > 0 zodat voor alle eenheden x ∈ Z 297 geldt: xk = x. k
c. Zijn er natuurlijke getallen k > 1 zodat 11 = 1? Bewijs je antwoord. k
d. Zijn er natuurlijke getallen k > 1 zodat 11 = 11? Bewijs je antwoord. k
e. Zijn er natuurlijke getallen k > 0 zodat 3 = 3? Bewijs je antwoord. Opgaven opgave 4.17 — oefening We rekenen modulo 297. a. Laat zien dat voor iedere k ≥ 1 en voor ieder 3-voud x geldt: xk 6≡ 1
b. Bewijs: als m ≡ 1 c. Bewijs: als m ≡ 1
(mod 297) (mod 297) dan m ≡ 1
(mod 27) en m ≡ 1
(mod 27) en m ≡ 1
(mod 1), dan m ≡ 1
(mod 1). (mod 297)
d. Laat n ∈ Z, n geen 3-voud. Voor welke k geldt: nk ≡ 1
(mod 27)
e. Laat n ∈ Z, n geen 11-voud. Geef getallen k > 1 zodat: nk ≡ 1
(mod 11)
f. Laat n ∈ Z, n geen 11-voud. Geef getallen k > 1 zodat: nk ≡ 1
(mod 11)
g. Laat n ∈ Z, n geen 11-voud en geen 3-voud. Geef getallen k > 1 zodat: nk ≡ n (mod 297)
4.12
83
Machten van eenheden in Zm
Nu algemeen. Als m geen priemgetal en geen macht van een priemgetal is, dan wordt m dus gedeeld door minstens twee verschillende priemgetallen. Via priemfactorontbinding kun je m dus schrijven als het product van twee getallen m1 en m2 , waarbij de priemfactoren van m1 niet voorkomen in de ontbinding van m2 . Laten we veronderstellen: m = m 1 · m2
met
ggd(m1 , m2 ) = 1
maar
m1 6= ±1, m2 6= ±1
Stel nu dat x k = 1 in Zm1 ·m2 , d.w.z. xk ≡ 1
(mod m1 · m2 )
D.w.z. xk is een m1 · m2 -voud +1. Maar dan is xk zeker een m1 -voud +1, en ook een m2 -voud +1, dus xk ≡ 1
(mod m1 )
en
xk ≡ 1
(mod m2 )
Omgekeerd, stel dat y een natuurlijk getal is en yk ≡ 1
(mod m1 )
en
yk ≡ 1
(mod m2 )
Dan zijn er gehele getallen s en t zodat y k = 1 + m1 s = 1 + m2 t Dus m1 s = m2 t. Omdat ggd(m1 , m2 ) = 1 volgt uit stelling (1.25) op bldz. 25 dat s een m 2 -voud is, zeg s = m2 · u met u geheel. Daarmee zien we y k = 1 + m 1 · m2 · u
dus yk ≡ 1
(mod m1 · m2 )
Als we voor x (met x een eenheid in Zm1 ·m2 ) een getal k zoeken zodat xk ≡ 1 k
we dus net zo goed een k zoeken zodat x ≡ 1 Conclusie:
k
(mod m1 ) en tegelijk x ≡ 1
(mod m1 · m2 ), kunnen
(mod m2 ).
(4.16) propositie: Laat m1 en m2 natuurlijke getallen zijn met ggd(m 1 , m2 ) = 1. Als - voor iedere eenheid x in Zm1 geldt dat x k1 = 1 in Zm1 en - voor iedere eenheid x in Zm2 geldt dat x k2 = 1 in Zm2 en k is een veelvoud van zowel k1 als van k2 , dan geldt voor iedere eenheid x in Z m1 ·m2 dat x k = 1 in Zm1 ·m2 . Daarmee hebben we een prima stuk gereedschap, want zo nodig kun je dit proces van splitsing in factoren voortzetten.
84
4. Machtsverheffen in Z modulo m
(4.17) voorbeeld: We zoeken een natuurlijk getal k > 0, liefst zo klein mogelijk, zodat voor iedere eenheid x in Z138915 geldt dat x k = 1 in Z138915 . Eerst ontbinden we 138915 in priemfactoren: 138915 = 5 · 34 · 73 Volgens de voorgaande theorie krijgen we: - Voor iedere eenheid x in Z5 geldt: x5−1 = 1 in Z5 . - Voor iedere eenheid x in Z34 geldt: x81−27 = 1 in Z34 . - Voor iedere eenheid x in Z73 geldt: x343−49 = 1 in Z73 . We kunnen voor k dus het kleinste gemene veelvoud nemen van 4, 54 en 294. Via ontbinden in priemfactoren vinden we dat dit kgv gelijk is aan 2 2 · 33 · 72 = 5292. Een goede keuze voor k is dus 5292. Natuurlijk voldoen ook alle veelvouden van 5292. einde voorbeeld (4.18) methode: Om gehele exponenten n te vinden zodat k n ≡ 1 werk gaan:
(mod m) te vinden kun je als volgt te
• Eerst controleer je of ggd(k, m) = 1. Zo nee, dan is k geen eenheid in Z m en is de enige, flauwe mogelijkheid: n = 0. In het vervolg zullen we er van uit gaan dat ggd(k, m) = 1. • Ontbind m in machten van priemfactoren, zeg m = pq11 · pq22 · . . . · pqss
• Het feit dat ggd(k, m) = 1 is equivalent met ggd(k, p) = 1 voor iedere priemfactor p in m en dus
met het feit dat k een eenheid is in Zpq voor ieder natuurlijk getal q. Op die grond kunnen we nu
stelling (4.14) op bldz. 81 gebruiken. Dan zie je eerst dat je n zo moet kiezen dan het een veelvoud van pq11 − p1q1 −1 is om te zorgen dat k n ≡ 1
(mod p)k1 1 . En vervolgens dat n een veelvoud van
pq22 − p2q2 −1 is, enz. Zo vind je dus bij elk van die priemgetallen een geheel getal waar n een veelvoud van moet zijn.
• Combineer dit resultaat m.b.v. propositie (4.16) op bldz. 83, dus neem het kleinste gemene veelvoud van de zojuist gevonden getallen, dus van p q11 − pq11 −1 , pq22 − p2q2 −1 , . . . , pqss − pqss −1 . Zeg dat dat N is. Dan kun je voor n ieder geheel veelvoud van N nemen.
Om gehele exponenten n te vinden zodat k n ≡ k (mod m) te vinden kun je vrijwel net zo te werk gaan als boven, alleen moet je tenslotte de exponent met 1 verhogen. Opgaven opgave 4.18 — oefening Bereken een positief natuurlijk getal k zodat voor iedere eenheid x in Z 250614 geldt: x k = 1. (Om je alvast op weg te helpen of te misleiden: = 250614 = 351 · 714.)
4.13
85
Machten berekenen in Z modulo m via reductie naar factoren van m
opgave 4.19 — oefening Bepaal de rest van 51200 bij deling door 47. opgave 4.20 — oefening Geef getallen n > 1 op basis van de behandelde theorie (zonder uitproberen), zodat voor alle x ∈ Z met ggd(x, 207) = 1 geldt: xn ≡ x
(mod 207)
opgave 4.21 — oefening a. Bereken rest(131000 , 5250). b. Er zijn getallen a ∈ Z5250 waarvan een natuurlijke macht (met natuurlijjke exponent) gelijk is aan 1. Welke getallen zijn dat? En wat kun je als exponent zo als kiezen zonder daar al te veel aan te moeten rekenen?
4.13 Machten berekenen in Z modulo m via reductie naar factoren van m We gaan nu alle technieken uit dit hoofdstuk combineren. (4.19) methode: voor het berekenen van machten modulo m. • Bij berekeningen van een macht ak in Zm kijk je eerst of a een eenheid is. Als dat het geval is kun je het vervolg toepassen. • Ontbind m in een product van machten van verschillende priemfactoren: m = p k1 1 · . . . · pks s waarin alle pi ’s onderling verschillenden priemgetallen zijn. • Gebruik nu in Zpk dat, als p priemgetal is, iedere eenheid tot de macht een-veelvoud-van-(p k − pk−1 ) gelijk aan 1 is. Noem voor iedere i: N i := pki i − pki 1 −1 .
Bedenk intussen: als t een geheel getal is en t een eenheid in Z pk1 ·...·pks , dan is in Zpki het element t 1
s
i
ook een eenheid. Zie opgave 2.19 op bldz. 56. • Laat N het kleinste gemene veelvoud van al die N i ’s zijn. Dan geldt aN = 1 in Zm . De theorie zegt niet, dat je zo de kleinst mogelijke waarde voor N > 0 met a N = 1 vindt, maar in de praktijk is dit een snelle methode om een bruikbare waarde te vinden. Wil je nu een macht an uitrekenen, dan kun je de exponent n schrijven als n = q · N + r en gebruiken dat aq·N = 1. Voor ar kun je vervolgens eventueel nog de methode van paragraaf 3.2 op bldz. 64 gebruiken.
(4.20) voorbeeld: We gaan net zoiets doen als in het voorbeeld aan het begin van dit hoofdstuk, maar een beetje minder flauwe getallen: bereken 245
872
in
Z4779
We beginnen ‘het modulo-getal’ te ontbinden in priemfactoren:
86
4. Machtsverheffen in Z modulo m
4779 = 59 ∗ 34 We zullen nu dus eerst gaan berekenen: in Z59 :
245
in Z81 :
245
872
=9
872
en 872
=2
872
a. In Z59 is 9 een eenheid, want ggd(9, 59) = 1, dus 9
58
= 1, want 59 is een priemgetal.
872 = 15 · 58 + 2 dus 9 b. Nu 2
872
872
=9
15·58
2
58
· 9 = (9 )15 · 81 = 1
15
· 22 = 22
in Z81 : 2 is een eenheid in Z81 , dus 2
34 −33
=2
54
=1
872 = 16 · 54 + 8 dus 2
872
=2
16·54
8
· 2 = (2)54
Conclusie: 245872 ≡ 22
(mod 59)
en
16
· 256 = 1
245872 ≡ 13
16
· 13
(mod 81)
De volgende stap is nu het terugrekenen naar modulo 59 · 81: we zoeken de gehele getallen n zodat ( n ≡ 22 (mod 59) n ≡ 13
(mod 81)
oftewel we zoeken n zodat er gehele getallen p en q zijn zodat ( n = 22 + 59 · p n = 13 + 81 · q
We zoeken nu de oplossingen van de vergelijking in gehele p en q: 22 + 59 · p = 13 + 81 · q 59 · p − 81 · q = −9 We vinden via Euclides en terugrekenen: 1 = 11 · 59 − 8 · 81 − 9 = −99 · 59 + 72 · 81 We kunnen nu eventueel p = −99 nemen; in feite p ≡ −99 nemen p = −18. Daarmee krijgen we n ≡ 22 + 59 · (−18)
(mod 81 · 59)
(mod 81), dus handiger is te
4.14
87
RSA codering 1: worteltrekken
n ≡ −1040 n ≡ 3739
(mod 4779) (mod 4779)
dus 245872 ≡ 3739
(mod 4779)
einde voorbeeld Opgaven opgave 4.22 — oefening Voer voor jezelf nog eens de berekening uit van het voorgaande voorbeeld. opgave 4.23 — oefening Om je niet nodeloos veel te laten rekenen zijn de getallen in deze opgave niet al te groot genomen. Daardoor kun je wellicht met eenvoudiger methoden (maar met misschien meer rekenwerk) de opgave ook maken. Doe dat niet: het gaat er om je de principes van boven getoonde techniek eigen te maken. a. Bereken 59 b. Bereken 35
65
in Z77
1143
in Z1144 .
opgave 4.24 — oefening a. Is er een geheel getal n > 1 zodat 4001 n ≡ 1 klein mogelijk, zo nee, waarom niet?
(mod 34000)? Zo ja, bereken zo’n getal, liefst zo
b. Is er een geheel getal n > 1 zodat 24498 n ≡ 1 waarom niet?
(mod 34000)? Zo ja, bereken zo’n getal, zo nee,
c. Bereken een geheel getal G met 0 ≤ G < 34000 zodat 24498 707 ≡ G
(mod 34000).
4.14 RSA codering 1: worteltrekken Machtsverheffen in Zn is, dank zij een aantal trucs, vrij snel uit te voeren (op een computer). ook voor grote exponenten en grote n. Worteltrekken is een heel ander verhaal. Hier heb je bijvoorbeeld de machten van 14 modulo 23: 14, 12, 7, 6, 15, 3, 19, 13, 21, 18, 22, 9, 11, 16, 17, 8, 20, 4, 10, 2, 5, 1 Een zootje! De 13-de machts wortel uit 11 in Z mod 23 is blijkbaar 14. Hoe bereken je die zonder alle machten van 14 uit te rekenen tot je 11 tegenkomt? Een goede gedachte is: a22 ≡ 1 dus voor alle t ∈ Z:
(mod 23)
a1+22t ≡ a
(mod 23)
We zijn op zoek naar a, terwijl we weten dat a 13 ≡ 14 (mod 23). Als we nu een getal d zouden kunnen vinden zodat 13d gelijk is aan 1 plus een veelvoud van 22 13d = 1 + 22t
88
4. Machtsverheffen in Z modulo m
dan zijn we binnen, want (a13 )d ≡ a13d ≡ a1+22t ≡ a
(mod 23)
Dus 14d ≡ a
(mod 23)
We hoeven dan dus alleen maar de d-de macht van 14 modulo 23 uit te rekenen, dan krijgen we a (op een veelvoud van 23) na. Kunnen we zo’n d vinden? ?d ∈ Z :
er is een t ∈ Z zodat 13d = 1 + 22t
Ja, dat lukt: los op: ?d, t ∈ Z :
13d − 22t = 1
Aangezien ggd(13, 22) = 1 is dit een fluitje van een cent: met het uitgebreide algoritme van Euclides vind je d = −5 plus een veelvoud van 22, dus neem d = 17. (De 17-de macht uitrekenen gaat best snel: vier stappen van kwadrateren en dan nog eens vermenigvuldigen.) Bovenstaand idee is een van de basisgedachten voor RSA. Opgaven opgave 4.25 — In bovenstaand voorbeeld is de 13-de machts wortel getrokken. Voor welke w ∈ Z kun je in Z 23 de w-de machts wortel trekken (uit alle elementen van Z 23 )? opgave 4.26 — Gebruik dezelfde techniek als boven om de 3-de machts wortel uit 5 in Z 11 . (Natuurlijk kun je in dit geval met zo kleine getallen gemakkelijk even wat proberen, maar dat is niet de bedoeling!) Controleer je uitkomst. opgave 4.27 — Hoe kun je door machtsverheffen de 7-de machts wortel berekenen uit elementen van Z 77 ? Voor welke elementen kan dat?
4.15 RSA codering 2 Voor w-de machts worteltrekken in Z n met n een priemgetal hoef je, zo als je gezien hebt, alleen maar het extended Euclides algorithme voor w en n − 1 uit de voeren en dan machtsverheffen. Maar zo als je in de laatste opgave gezien hebt, moet je, als n geen priemgetal is, dat eerst ontbinden in priemfactoren. En dat is voor grote n een gigantische klus. Die idee¨en samen leveren de RSA codering, We gaan dus weer worteltrekken in Zn , maar nu rekenen we niet modulo een priemgetal, maar modulo een product van twee (vreselijk grote) priemgetallen. Dit is de basis voor de RSA-codering, bedacht door Rivest, Shamir en Adleman in 1977. Laat n het product zijn van twee (grote) priemgetallen p en q. n=p·q
waarbij p en q twee reusachtig grote priemgetallen zijn
4.15
89
RSA codering 2
Volgens stelling van Euler (4.9) op bldz. 79 en bovenstaande theorie geldt: akgv(p−1,q−1) ≡ 1
(mod n)
als niet “toevallig net” a deelbaar is door p of q. Om af te korten schrijven we k = kgv(p − 1, q − 1) Dan dus ak ≡ 1
(mod n) en dus ak+1 ≡ a
atk+1 = a
(mod n). Maar sterker nog: er geldt voor iedere t ∈ Z:
Dat zal er voor zorgen dat we de boodschap kunnen decoderen. Stel nu dat we twee natuurlijke getallen e en d hebben zodat e · d = 1 + t · k voor zekere t. • De getallen e en n maken we bekend.
• We vragen een getal, zeg a, kleiner dan n op te sturen, maar gecodeerd: als rest(a e , n).
• Bij ontvangst moeten we in feite de e-de machts wortel trekken; dat zou hopeloos zijn, als we niet de
(geheime) sleutel d konden gebruiken: een boodschap b wordt omgerekend als rest(b d , n). Dat levert dan weer het oorspronkelijke getal a op.
Om dat goed te begrijpen vertalen we bovenstaande naar modulo: we krijgen als eindresultaat na de twee ‘vertalingen’: (ae )d ≡ aed ≡ a1+tk ≡ a We moeten alleen nog even kijken hoe we die e en d verzinnen als k gegeven is. De eis is dus in feite dat ed − tk = 1 Als we nu e zo kiezen dat ggd(e, k) = 1, dan kunnen we volgens de bekende eigenschap van de grootste gemene deler d en t vinden zodat aan de eis voldaan is. De clou is nu, dat al het rekenwerk, met name het machtsverheffen modulo n, redelijk snel uitvoerbaar is dank zij moderne rekentrucs, maar dat worteltrekken modulo n een hopeloze zaak is. In feite is ‘de’ goede manier van worteltrekken nu juist de bovenstaande: tot de macht d verheffen. Maar om d te vinden moet je eerst k weten, dat is (p − 1)(q − 1) = n − p − q + 1. In feite zou je dus ook wel met p + q genoeg weten: de som van de beide priemfactoren van n. Probleem dus bij gegeven n en e: ?s ∈ N :
de som van de priemfactoren van n is s ggd(e, n − s + 1) = 1
In de praktijk kost het vinden van p + q op basis van die gegeven getallen n en e te veel computercapaciteit (tijd maal rekenvermogen) om uitvoerbaar te zijn. In feite helpt die tweede regel van het stelsel niet echt en kun je hier niet veel anders doen dan een enorm groot getal n in een product van twee priemgetallen ontbinden. Tot nu toe is dat nog steeds een te grote klus als n maar groot genoeg is. In december 2003 bijvoorbeeld is met heel veel rekentijd eindelijk het getal in 174 cijfers
90
4. Machtsverheffen in Z modulo m
1881 9881292060 7963838697 2394616504 3980716356 3379417382 7007633564 2298885971 5234665485 3190606065 0474304531 7388011303 3967161996 9232120573 4031879550 6569962213 0516875930 7650257059 gesplitst in twee factoren 3980750 8642406493 7397125500 5503864911 9906436234 2526708406 3851895759 4638895726 1768583317&cr
×
4727721 4610743530 2536223071 9730482246 3291469530 2097116459 8521711305 2071125636 3590397527 Al jarenlang was hiervoor een prijs uitgeloofd! In de praktijk worden vaak producten van twee priemgetallen gebruikt met nog veel meer cijfers. Om efficient te werken wordt normaal een kort bericht versleuteld met RSA, en dat korte bericht bevat dan de sleutel voor een snellere codering, zoals DES, SSL en TLS. Laten we eens een rekenvoorbeeld bekijken. Om het ons gemakkelijk te maken nemen we niet zo grote priemgetallen voor p en q: 23 en 41. Dan n = 943. dat getal is natuurlijk best te ontbinden in priemfactoren, maar laten we even doen alsof dat hopeloos is. Stel dat we een getal (bericht) kleiner dan 943, zeg a, willen versturen met dit systeem. Voor het geval dat ggd(a, 23) = 1 en ggd(a, 41) = 1 weten we uit de stelling van Euler: akgv(22,40) ≡ 1
(mod 943)
Neem k = kgv(22, 40) = 440. Dan dus a440 ≡ 1 a4 40t + 1 ≡ a
(mod 943) en voor ieder geheel getal t:
(mod 943)
We kiezen nu een e zodat ggd(e, 440) = 1, zeg e := 27. We zoeken nu getallen d en t zodat 27d + 440t = 1 Dat kan met het algoritme van Euclides, eventueel uit te voeren in een symbolisch rekenprogramma, bijvoorbeeld door de procedure igcdex van Maple. Resultaat: neem d := 163 en t := −10. Dus 163 · 27 = 1 + 10 · 440 De publieke sleutel is nu dus n = 943 en e = 27. Laten we een bericht, een natuurlijk getal kleiner dan 943 versleuteld versturen; dat doen we door rest(a 2 7, 943) te versturen. Bij aankomst wordt van dat getal de 163-ste macht modulo 943 berekend. We krijgen nu modulo 943 rekenend: (a27 )163 ≡ a27·163 ≡ a1+10·440 ≡ a · (a440 )10 ≡ a · 110 ≡ a
(mod 943)
4.15
91
RSA codering 2
Opgaven opgave 4.28 — oefening Maak een RSA-coderiung en decodering op basis van n = 13 · 31. opgave 4.29 — tentamen 2004 a. Geef alle mogelijkheden voor n ∈ Z, voor zover je die uit de theorie kunt berekenen, zodat voor minstens 1 op de 2 getallen k ∈ Z geldt dat kn ≡ k
(mod 21125)
b. Voor een zekere geheime codering, die ik probeer te kraken, weet ik al wel het type, maar ik moet nog de hoofdsleutel m ∈ Zt vinden. Ik heb wel ontdekt dat 597938 ≡ 1
(mod m)
Ga er verder maar van uit, dat 59n 6≡ 1 wat m zou kunnen zijn? Zo ja, graag!
(mod m) als 0 < n < 7938. Kun je me vertellen en uitleggen
opgave 4.30 — overzicht a. Leg uit hoe je een stelsel vergelijkingen in gehele x van type ( x ≡ a (mod m) x≡b
(mod n)
oplost voor het geval a, b, m, n ∈ Z en ggd(m, n) = 1 en m > 1, n > 1.
b. Hoe los je een stelsel van k congruenties modulo successievelijk m 1 , m2 , . . . , mk op voor het geval dat al die mi ’s onderling priem zijn? c. Wat betekent dat een rij objecten semiperiodiek is en wat zijn de periode en de preperiode van zo’n rij? d. Wat zegt de kleine stelling van Euler precies? e. Wat zegt de stelling van Euler? f. Wat is een nuldeler en wat voor rol speelt dat begrip bij machtsverheffen in
m?
g. Laat m een natuurlijk getal zijn met m > 1. Voor welke elementen x van Z bestaat een natuurlijk getal n > 0 zodat xn ≡ 1 (mod m)? Hoe bereken je een geschikt getal n bij een gegeven m?
h. Hoe bereken je effici¨ent bruikbare getallen n > 1 zodat a n ≡ a (mod m) voor de gehele getallen a waar dat kan? i. Hoe bereken je efficie¨ent een hoge macht van een getal a ∈ Z m voor het geval m een priemgetal is? j. Hoe bereken je efficie¨ent een hoge macht van een getal a ∈ Z m voor het geval m geen priemgetal is?
hoofdstuk 5
Veeltermen Veeltermen zijn overzichtelijke wiskundige structuren die op talloze plaatsen een nuttige rol vervullen, o.a. bij het cre¨eren van bijzondere getalverzamelingen en als z.g. genererende functies. Voor numerieke berekeningen met functies worden ze vaak gebruikt als handige benaderingen. Veeltermen vervullen een sleutelrol in symbolische rekenpaketten (computeralgebra) zoals Maple.
5.1 Veeltermen als abstracte objecten In dit hoofdstuk rekenen we met een aantal verschillende getallenverzamelingen, met name R: de re¨ele getallen, Q: de rationale getallen, Z: de gehele getallen en Z m : de restklassen in Z modulo m. In al die verzamelingen kun je optellen, aftrekken, vermenigvuldigen, machtsverheffen (met natuurlijke exponenten, dus in feite herhaald vermenigvuldigen) en in sommige ervan kun je ook delen (behalve door 0). Dan kun je ook veeltermfuncties maken. Voorbeelden voor getallenverzamelingen van type Z m heb je in het vorige hoofdstuk al gezien. Voor andere getallenverzamelingen ken je ze natuurlijk al. Voor de getallenverzameling zullen we in dit hoofdstuk telkens de letter A gebruiken. In het geval dat we willen kunnen delen zullen we als getallenverzameling alleen lichamen willen gebruiken. In zo’n geval zullen we de getallenverzameling aanduiden met een K (‘K¨orper’). Rekenen met veeltermen gaat vaak redelijk eenvoudig; dat maakt veeltermen aantrekkelijk in het gebruik. Voor het rekenen met veeltermen op een computer kan zo’n veelterm gerepresenteerd worden door alleen maar een rijtje co¨effici¨enten. Bijvoorbeeld 30 − x + 7x2 − 3x4 + 8x5 kan dan gerepresenteerd worden als: veelterm(30, −1, 7, 0, −3, 8) Als je nu bijvoorbeeld de bijbehorende veeltermfunctie gaat differenti¨eren, levert dat: veelterm(−1, 14, 0, −12, 40) Als je op een dergelijke wijze naar veeltermen wilt kijken, gebruiken we in de wiskunde vaak een notatie met hoofdletters voor de variabelen, dus bijvoorbeeld hier: 30 − X + 7X 2 − 3X 4 + 8X 5 Daarbij kijken we tegen die veelterm aan als een rijtje getallen, niet als een functievoorschrift, hoewel we daar intussen ook wel eens aan denken. (5.1) definitie: Met een veelterm of polynoom (Engels: polynomial) in X met co e¨ ffici¨enten in een getallenverzameling A bedoelen we een formele uitdrukking van de vorm a0 + a 1 X + a 2 X 2 + · · · + a n X n waarbij n ∈ N en a0 , . . . , an ∈ A. Men noemt X de onbepaalde. In plaats van een veelterm met co¨effici¨enten in A spreekt men ook wel van een veelterm over A.
5.1
Veeltermen als abstracte objecten
93
(5.2) definitie: Als an 6= 0, dan noemen we n de graad (Engels: degree) van die veelterm. De graad van de veelterm f noteren we als graad(f ). De nulveelterm 0 heeft geen graad. De veeltermen van graad 0 en de nulveelterm samen vormen de verzameling van de z.g. “constanten” of “scalairen” Je kunt de getallen ook opvatten als de verzameling constanten. (5.3) definitie:
Van een veelterm a0 + a1 X + a2 X 2 + · · · + an X n is de k-de co¨effici¨ent het getal ak
(voor 0 ≤ k ≤ de graad van die veelterm). De k-de term van die veelterm is a k X k . Een dergelijk object wordt wel een monoom genoemd. Een monoom kun je op een computer handig representeren als monoom(a k , k), dus als een tweetal bestaande uit de co¨effici¨ent en de graad. Natuurlijk kun je iedere veelterm ook zien als de som van de termen die niet nul zijn, dus als een rijtje van monomen. Voor het rekenen aan veeltermen met weinig co¨effici¨enten ongelijk aan 0 kan het voordelig een polynoom te representeren op die manier: als een rij monomen, dus als een rij tweetallen (co¨effici¨ent en graad). In de wiskundige notatie is het overigens gebruikelijk, maar niet noodzakelijk om termen met co¨effici¨ent nul weg te laten, zoals we boven al gedaan hebben. Anderzijds ligt het dan voor de hand een polynoom op te vatten als een oneindige rij getallen a 0 , a1 , a2 , · · ·, waarbij die rij vanaf een bepaald rijnummer (om precies te zijn: na het nummer dat de graad aangeeft) alleen nog maar nullen bevat. Dat idee ligt ook ten grondslag aan de volgende voor de hand liggende, maar formeel noodzakelijke afspraak: (5.4) definitie: We zeggen dat twee veeltermen over A gelijk zijn als al hun overeenkomstige co e¨ ffici¨enten gelijk zijn. Geheel overeenkomstig met wat je doet bij het normale rekenen met veeltermen defini¨eren we de som en het product van twee veeltermen: (5.5) definitie: Laat f en g twee veeltermen zijn over A, zeg f = a 0 + a1 X + a 2 X 2 + · · · + a n X n g = b 0 + b1 X + b 2 X 2 + · · · + b m X m dan defini¨eren we hun som, verschil en product door f + g := (a0 + b0 ) + (a1 + b1 )X + (a2 + b2 )X 2 + · · · f − g := (a0 − b0 ) + (a1 − b1 )X + (a2 − b2 )X 2 + · · · f · g := f g := a0 b0 + (a1 b0 + a0 b1 )X + (a2 b0 + a1 b1 + a0 b2 )X 2 + · · · De verzameling van alle veeltermen over A samen met de zojuist gedefinieerde optelling, aftrekking en vermenigvuldiging noteren we met A[X] . De vermenigvuldiging ziet er gecompliceerd uit maar is toch eenvoudig. Je berekent het product van twee veeltermen door de uitdrukking uit te vermenigvuldigen en daarna de overeenkomstige termen bij elkaar te nemen.
94
5. Veeltermen
(5.6) voorbeeld: Zij f := 3X 2 − X + 2 en g := −X + 5 dan f g = (3X 2 − X + 2)(−X + 5) = −(3X 2 − X + 2)X + 5(3X 2 − X + 2) = −3X 3 + X 2 − 2X + 15X 2 − 5X + 10 = −3X 3 + 16X 2 − 7X + 10. einde voorbeeld Met deze definities kunnen we rekenen met veeltermen alsof het een soort getallen is. Met een hoop saai gepeuter kun je bewijzen dat voor veeltermen over A geldt: als f, g en h veeltermen zijn: •f +g =g+f
• (f + g) + h = f + (g + h) •f ·g =g·f
• (f · g) · h = f · (g · h)
• f · (g + h) = f · g + f · h
Kortom, je rekent ermee zoals je gewend bent. Alleen delen is niet zomaar beschikbaar: als je een veelterm f en een veelterm g 6= 0 hebt, dan is er doorgaans niet een veelterm h zodat f = g · h, dus kun je niet over “de veelterm fg ” praten.
Opgaven opgave 5.1 — oefening a. Bereken in R[X] het product van 2X 3 − 10X + 6 en 9X 5 − 6X 2 .
b. Bereken in Q[X] het product van 2X 3 − 10X + 6 en 9X 5 − 6X 2 . c. Bereken in Z[X] het product van 2X 3 − 10X + 6 en 9X 5 − 6X 2 .
d. Bereken in Z18 [X] het product van 2X 3 − 10X + 6 en 9X 5 − 6X 2 . e. Bereken in Z12 [X] het product van 2X 3 − 10X + 6 en 9X 5 − 6X 2 .
opgave 5.2 — oefening Laat f en g veeltermen, beide ongelijk aan 0, zijn in A[X]. Geef commentaar op de volgende uitspraken voor A elk van de volgende mogelijkheden: R, Q, Z, Z m , dan a. graad(f + g) = het maximum van graad(f ) en graad(g) b. graad(f · g) = graad(f ) + graad(g) c. Als f · g = 0, dan f = 0 of g = 0.
5.2
Vermenigvuldigen van veeltermen over een lichaam
95
5.2 Vermenigvuldigen van veeltermen over een lichaam In opgave 5.2 heb je gezien wat een rare effecten co¨effici¨enten met nuldelers kunnen opleveren. Dat is een goede reden om liever niet te rekenen met veeltermen over getallensystemen met nuldelers. Verder zullen we verderop vaak delen nodig hebben. Vandaar: (5.7) afspraak: In de rest van dit hoofdstuk beperken we ons tot veeltermen over een lichaam, tenzij anders vermeld. Dat maakt rekenen met graad heel prettig: (5.8) stelling: Laat K een lichaam zijn. Laat f en g twee veeltermen zijn uit K[X], beide ongelijk aan 0. Dan • graad(f · g) = graad(f ) + graad(g) •f +g =0
of
graad(f + g) ≤ het maximum van graad(f ) en graad(g)
Het bewijs is flauw: kijk even naar de hoogste graads co¨effici¨enten. Het product daarvan kan niet 0 zijn omdat er geen nuldelers zijn. Gevolg: (5.9) setlling: Laat K een lichaam zijn. Laat f en g twee veeltermen zijn uit K[X]. Als f · g = 0, dan f = 0 of g = 0.
5.3 Delen met rest van veeltermen over een lichaam In deze paragraaf beperken we ons even tot veeltermen over een lichaam K. Zoals je weet kun je binnen de veeltermen niet (altijd) delen. Dat lijkt op de situatie van de gehele getallen, maar daar kunnen we wel delen met rest. Dat is iets dat te maken heeft met ordening: de rest moet kleiner zijn dan de absolute waarde van het deeltal. Zoiets kunnen we hier ook proberen te doen; we hebben namelijk ook zoiets als een ordening: de graad. Laten we maar eens een voorbeeld bekijken: neem f := 3X 5 + 2X 4 − X 2 − 2X + 3 g := 2X 2 + 1 We proberen nu een veelterm h te vinden zodat f − h · g ‘kleiner’ is dan g, om precies te zijn, zodat de graad van f − h · g kleiner is dan de graad van g, dus kleiner dan 2. Laten we eerst maar eens die vijfdegraads term wegwerken: 3 3 f − X 3 · g = 3X 5 + 2X 4 − X 2 − 2X + 3 − (3X 5 + X 3 ) = 2 2 3 = 2X 4 − X 3 − X 2 − 2X + 3 2 Van het resultaat kunnen we de vierdegraads term wegwerken door er X 2 · g van af te trekken; na nog eens twee stappen hebben we ook de tweedegraads term weggewerkt en houden we een eerstegraads veelterm
96
5. Veeltermen
over, precies wat we wilden. staartdeling:
De feitelijke berekening kun je overzichtelijk opschrijven als een soort
2X 2 + 1 / 3X 5 + 2X 4 +
3 3 2X
2X − 2X 4
3 3 2X
3X 5 4
− X 2 − 2X + 3 \ 23 X 3 + X 2 − 34 X − 1 − − X2 + X2
− − 23 X 3 − 2X 2 − 2X − 23 X 3 − 34 X −2X 2 − −2X 2
5 X 4
− +3 −1
− 45 X + 4
−
Conlusie: 3 3 5 3X 5 + 2X 4 − X 2 − 2X + 3 = ( X 3 + X 2 − X − 1)(2X 2 + 1) + (− X + 4) 2 4 4 Dus bij delen met rest van f door g is het quotient 32 X 3 + X 2 − 43 X − 1 en de rest is − 45 X + 4. —–? vraag: Zijn quotient en rest nu ook uniek: zijn er andere veeltermen q 0 en r 0 te vinden zodat f = q 0 · g + r 0 en graad(r 0 ) < graad(g) of r = 0?
antwoord: Dan zou r 0 dus hoogstens graad 1 hebben, dus zou het verschil met de gevonden rest − 45 X + 4
hoogstens van graad 1 zijn. Maar omdat
3 3 5 f = ( X 3 + X 2 − X − 1)g + (− X + 4) = q 0 · g + r 0 2 4 4 zien we dat het verschil een g-voud is, dus een veelterm keer een veelterm van graad 2; als dat niet 0 zou zijn, dan krijg je zo een veelterm van graad minstens 2. Conclusie: het verschil is 0, dus hier zijn quotient en rest uniek. —–¿ Dit algoritme kunnen we natuurlijk algemeen inzetten. Dit algoritme eindigt, en wel na minder dan graad(f ) − graad(g) stappen. V´oo´ r en na ieder stap geldt dat f = q ∗ g + r, dus dat geldt ook aan het eind. Dan is r = 0 of graad(r) < graad(g). In onderstaande opgaven kun je zelf nog bewijzen dat de veeltermen q en r volledig vastgelegd zijn door die twee formules: (5.10) stelling: Laat K een lichaam zijn en f, g ∈ K[X] met g 6= 0. Er is dan precies e´ e´ n stel veeltermen q en r zodat f =q·g+r
en
(r = 0
of
graad(r) < graad(g))
(5.11) notatie: We zullen de rest die je krijgt bij delen met rest van f door g noteren als polyrest(f, g).
5.3
Delen met rest van veeltermen over een lichaam
97
Opgaven opgave 5.3 — oefening Deel met rest in R[X] 21 X 5 + 2 21 X 4 + 21 X 3 + X 2 + 4X − 2 door X 2 + 1 opgave 5.4 — oefening Deel met rest in R[X]: X 6 + 3X 5 + 4X 2 − 3X + 2 door X 2 + 2X − 3. opgave 5.5 — oefening Bereken quotient en rest bij delen van X 5 + X 4 + X 3 + X 2 + X + 1 door 2X 2 − 1, waarbij de co¨effici¨enten in Z7 liggen. opgave 5.6 — oefening opgave 5.7 — oefening Bereken quotient en rest bij delen van 3X 5 − X 4 + 4X 2 + X − 2 door 2X 2 + 3, waarbij de co¨effici¨enten in Z7 liggen. opgave 5.8 — oefening Schrijf het algoritme DeelMetRest in C ++ voor veeltermen met co¨effici¨enten van type double. Bewijs dat je algoritme correct is, dus termineert en oplevert wat je wilt. opgave 5.9 — oefening Laat K een lichaam zijn. Bewijs in K[X]: als f en g veeltermen in K[X] zijn, dan is er precies e´ e´ n stel veeltermen q en r zodat f =q·g+r
en
(r = 0 of graad(r) < graad(g))
Bedenk daarbij, dat we al een algoritme hebben om dergelijke q en r te berekenen. Het enige dat we nog moeten doen is dus: laten zien dat er maar e´ e´ n mogelijkheid is. De normale aanpak van zo’n probleem is te doen alsof er nog een andere mogelijkheid is, dus hier: f = q0 · g + r0
en
(r 0 = 0 of graad(r 0 ) < graad(g))
en dan te bewijzen dat ze hetzelfde zijn, i.c. dat r 0 = r en q 0 = q. opgave 5.10 — oefening We rekenen in F7 [X]. Is er een veelterm v zodat w = 3X 5 + 2X 4 − X 2 − 2X + 3 + (2X 2 + 1) · v graad 1 heeft?
98
5. Veeltermen
5.4 Delers Net als bij de gehele getallen kent men bij veeltermen het begrip deler. (5.12) definitie: Laat f en g veeltermen zijn over een lichaam K. We zeggen dat g een deler is van f als er een veelterm h over K is zo dat f = gh. We noteren dat met g | f . Men zegt ook wel dat f een veelvoud is van g. Enkele eenvoudige eigenschappen van het begrip deelbaarheid sommen we hieronder op. De bewijzen laten we aan de lezer over. (5.13) lemma: Laat K een lichaam zijn. Zij gegeven dat f , g en h ∈ K[X]. Dan geldt: a. 1 | f
b. f | f c. f | 0
d. Als f | g en g | h, dan f | h
e. Als f | g en f | h, dan f | g + h
f. Als f | 1 dan is f een nuldegraads veelterm.
g. f | g
en
g|f
⇐⇒
er is een nuldegraads veelterm u zodat f = u · g
In Z konden we relatief gemakkelijk een getal ontbinden als een product van priemgetallen. Bij veeltermen ligt dat veel gecompliceerder. 60
40
20
x -3
-2
-1
1
2
3
-20
-40
Bijvoorbeeld, voor veeltermen in R[X] of C[X] van graad 5 en hoger bestaat er geen algemeen algoritme om die te ontbinden in een product van lagere-graads veeltermen en het is zelfs mogelijk te bewijzen dat zo’n algoritme niet te maken is. Zo heeft bijvoorbeeld de veelterm X 5 + 2X 4 − 10X 3 − 20X 2 + 9X + 20
theoretisch een ontbinding in een product van vijf eerstegraads veeltermen, maar je mag niet verwachten dat je die 5 4 3 2 Fig 5.1 x 7→ x +2x −10x −20x +9x+20 kunt vinden. -60
Opgave opgave 5.11 — oefening Is de veelterm v: v = X 6 + 3X 5 + 4X 2 − 3X + 2 deelbaar door de veelterm w?: w = X 2 + 2X − 3
Zo nee, kun je de co¨effici¨enten van graad 1 en 0 van v veranderen, zodat de nieuwe veelterm v 0 die je dan krijgt, wel deelbaar is door w?
5.3
Delen met rest van veeltermen over een lichaam
99
5.5 De grootste gemene deler Hoe zit het nu met zoiets als een grootste gemene deler? Eerst maar even vastleggen wat een gemene deler is: (5.14) definitie: Laat f en g veeltermen zijn over een lichaam K. We zeggen dat een veelterm d over K een gemene deler is van f en g als d | f en d | g. Voor “groot” en “klein” kunnen we nu gaan kijken naar de graad. Een grootste gemene deler zou dus een gemene deler moeten zijn met maximale graad. Als f 6= 0 of g 6= 0 en d is een gemene deler van f en g, dan is graad(d) ≤ graad(f ) en graad(d) ≤
graad(g). Hieruit volgt dat er gemene delers zijn van maximale graad.
—–? vraag: Zijn er meer gemene veeltermen van maximale graad? antwoord: Ja: als je er e´ e´ n hebt, dan zijn alle scalaire veelvouden, ervan, voor zover niet 0, ook gemene veeltermen van maximale graad. Uit stelling (5.19) op bldz. 101 zal echter blijken, dat er ook niet meer zijn. —–¿ Het volstaat nu e´ e´ n van die scalaire veelvouden uit te kiezen om tot DE ggd verheven te worden. Dat zullen we doen door te eisen dat de hoogste graads co¨effici¨ent gelijk is aan 1: (5.15) definitie: Een veelterm, waarvan de co¨effici¨ent van de hoogste-graads term gelijk is aan 1 noemen we monisch. Een monische veelterm is dus van de vorm X n + an−1 X n−1 + · · · + a0 (5.16) definitie: en g als
Als f 6= 0 of g 6= 0 dan heet een veelterm d ∈ A[X] een grootste gemene deler van f
a. d een gemene deler is van maximale graad, b. d is monisch. Afkorting: ggd, in het Engels: gcd (greatest common divisor). Het berekenen van de ggd gaat analoog met het Euclides algoritme voor de berekening van de ggd van twee gehele getallen in Z. Daarbij zullen we gebruik maken van de functie polyrest: die levert de rest op bij deling van twee veeltermen; zie notatie (5.11) op bldz. 96. Die functie polyrest gebruiken we in het kader van het volgende lemma, een analogon van lemma (1.17) op bldz. 17: (5.17) lemma: Als f , g en h polynomen zijn over een lichaam K, dan ggd(f − gh, g) = ggd(f, g) en in het bijzonder geldt: ggd(polyrest(f, g), g) = ggd(f, g) Een bewijs voor dit lemma kun je vast zelf wel geven. Zo nodig kun je het min of meer afkijken van het bewijs van lemma lemma (1.17) op bldz. 17.
100
5. Veeltermen
(5.18) voorbeeld: We berekenen ggd(X 5 − 3X 4 + X 2 + 3, X 3 − X).
Eerst delen we X 5 − 3X 4 + X 2 + 3 door X 3 − X (met een staartdeling). We vinden daarbij
quoti¨ent X 2 − 3X + 1 en rest −2X 2 + X + 3, dus ggd(X 5 − 3X 4 + X 2 + 3, X 3 − X) =
ggd(X 5 − 3X 4 + X 2 + 3 − (X 2 − 3X + 1)(X 3 − X), X 3 − X) = ggd(−2X 2 + X + 3, X 3 − X) = ggd(X 3 − X, −2X 2 + X + 3) Kortom, we vervangen X 5 − 3X 4 + X 2 + 3 door de rest van de deling: ggd(X 5 − 3X 4 + X 2 + 3, X 3 − X) = ggd X 3 − X, rest(X 5 − 3X 4 + X 2 + 3, X 3 − X)
Nu gaan we X 3 − X delen door −2X 2 + X + 3; dat levert rest 43 X + 43 op. Als we nu −2X 2 + X + 3 delen door 43 X + 34 krijgen we rest 0. Blijkbaar is de ggd een scalair veelvoud van 34 X + 43 . We moeten om de ggd te vinden 34 X + 43 dus vermenigvuldien met een getal zodat we een monische veelterm krijgen. Vermenigvuldig met 43 . Dus de ggd is X + 1. In het bovenstaande kunnen we iets handiger te werk gaan: niet gaan rekenen met 43 X + 34 , maar deze veelterm meteen vervangen door 43 keer die veelterm, dus door X + 1. In het algemeen is het voor het rekenen handig telkens meteen de breuken in de co¨effici¨enten weg te werken. Bovendien is het verstandig een veelterm te delen door de ggd van co¨effici¨enten. Beide trucs worden doorgaans ook in computeralgoritmen ingebouwd. einde voorbeeld Op het eind van het algoritme moet je delen door de hoogstegraads co¨effici¨ent om een monische veelterm te krijgen. Het bovenstaande algoritme is puur theoretisch bruikbaar. In de praktijk leidt het tot gigantische co¨effici¨enten; dat kun je voorkomen door geschikte modificaties, zoals al eerder aangeduid.
5.6 * Een bewijs voor de hoofdstelling over de grootste gemene deler
van twee veeltermen
101
(5.19) stelling: Laat f , g ∈ K[X] zijn met f 6= 0 of g 6= 0 en K een lichaam. Dan is er precies e´ e´ n veelterm d die voldoet aan • d is een deler van f en g • iedere deler van f en g heeft graad kleiner of gelijk aan graad d • d is monisch
d.w.z. er is precies e´ e´ n grootste gemene deler van f en g. Als d de grootste gemene deler van f en g is, dan geldt a. Iedere gemene deler van f en g is een deler van d. b. d is een veeltermcombinatie van f en g, d.w.z. er zijn veeltermen a 0 en b0 zodat d = a0 · f + b 0 · g c. De elementen ongelijk aan 0 en van minimale graad in de verzameling V := {a · f + b · g |
a
en
b ∈ K[X]}
zijn scalaire veelvouden van d. Opgaven opgave 5.12 — oefening Bereken in R[X]: ggd(X 2 − 1, 2X 7 − 4X 5 + 2)
5.6 * Een bewijs voor de hoofdstelling over de grootste gemene deler van twee veeltermen Laat d maar eens zo’n element van de gemene delers van f en g zijn van maximale graad. 1. d is deler van f en g, en alle andere gemene delers hebben hoogstens graad gelijk aan de graad van d. Als we inspiratie willen halen uit het verleden, dan denken we natuurlijk eraan dat de grootste gemene deler in de gehele getallen van a en b het kleinste positieve getal is uit de verzameling van gehele combinaties van a en b. Als we nu twee veeltermen f en g hebben, dan kunnen we gaan kijken naar hun veeltermcombinaties: 2. V := {a · f + b · g | a en b ∈ K[X]} Natuurlijk bevat V de nulveelterm; van de overige veeltermen kun je de graden bepalen. Neem nu een veelterm met minimale graad, zeg c: 3. c = ao · f + b0 · g en alle andere combinaties ongelijk aan 0 hebben dezelfde graad of hoger. Dan is c zeker een veelvoud van alle gemene delers van f en g, dus zeker van d: 4.
d|c
Daaruit volgt ook dat 5.
graad(d) ≤ graad(c)
Bij de gehele getallen geldt, dat het kleinste positieve element van de verzameling van gehele combinaties van a en b juist ggd(a, b) is. Het ligt daarom voor de hand te vermoeden, dat hier c juist ‘grootste’ gemene
102
5. Veeltermen
deler van f en g is. Laten we maar eens nagaan, of c een gemene deler van f en van g is. Om te testen of c een deler van f is gaan we de deling met rest door f uitvoeren: f =q·c+r
met
r=0
of
graad(r) < graad(c)
Vullen we formule (1) in dan vinden we dat f = q(a0 · f + b0 · g) + r r = f − q(a0 · f + b0 · g) r = (1 − qa0 )f + (−qb0 )g Dus r ∈ V en omdat graad(r) < graad(c) en de graad van c minimaal is, is r = 0, dus is f = q · c. Net zo kun je zien dat g een veeltermvoud van c is. Dus c is een gemene deler van f en g en in het bijzonder is 6.
graad(c) ≤ graad(d)
Uit (5) en (6) volgt dan graad(c) = graad(d) en omdat d | c volgens (4) is c een scalair veelvoud van d. Conclusie: We vinden dat ieder element van V met minimale graad een veelvoud van d is, en omgekeerd dat iedere gemene deler met maximale graad is scalaire deler, dus een scalair veelvoud van c is. Om een veelterm als de grootste gemene deler vast te leggen moeten we nog die extra eis stellen: het moet een monische veelterm zijn. Vraag: Is een gemene deler van f en g nu ook een deler van d? Antwoord: Ja: een gemene deler is zeker ook deler van a0 f + b0 g, dus van d. *opgave 5.13 — voor de goede rekenaar Beredeneer dat het algoritme van Euclides voor veeltermen inderdaad de grootste gemene deler oplevert. (Advies: maak gebruik van de recursiestap voor een inductieredenering; gebruik daarbij ook stelling (5.19) op bldz. 101.) bij iedere stap opgave 5.14 — oefening Gegeven in F5 : f = 3X 5 + 2X 4 − X 2 − X + 3,
g = 3X 3 + 1. Bereken ggd(f, g).
opgave 5.15 — tentamenopgave Gegeven zijn de veeltermen f, g en h in Q[X]. Bewijs of weerleg: als ggd(f g, h) = 1
en
ggd(f, gh) = 1
dan ggd(f h, g) = 1 opgave 5.16 — programmeer Programmeer het algoritme van Euclides voor veeltermen in C ++ .
5.6 * Een bewijs voor de hoofdstelling over de grootste gemene deler
103
van twee veeltermen
5.7 * Een hulpmiddel voor berekeningen met de ggd Zoals je weet kun je de grootste gemene deler van de veeltermen f en g schrijven als veeltermcombinatie ggd(f, g) = r · f + s · g met r en s veeltermen. Je kunt dergelijke r en s door gewoon terugrekenen in het algoritme van Euclides bepalen, maar het kan ook wat handiger. In deze paragraaf kun je een overzichtelijke manier vinden om zulke r en s met de hand te berekenen. De basis hiervoor kun je vinden in paragraaf 1.10 op bldz. 23. De idee¨en daar kun je met de hand verwerken met een tabel. Zet in de eerste kolom de veeltermen t k , in de tweede kolom de quoti¨enten en in de derde kolom de veeltermen s k : k
tk
qk
sk 3 X3 37
1 X 6 + X 5 + 5X 4 + 5X 3 − X 2 − 5 2
X 4 + 2X 2 − 15
3
3X 3 + 8X 2 + 15X + 40 37 2 9 X
4
+
X2 + X + 3
185 9
−
5 X2 37
+
3 − 37 X+
1 3X
−
8 9
9 37
27 37 X
+
72 37
0
1 X 37
−
15 37
8 37
Een element in de tk -kolom krijg je dus door de rest te nemen van het element twee plaatsen hoger gedeeld door het element e´ e´ n plaats hoger. Een element in de q k -kolom krijg je als quoti¨ent van de veelterm linksboven gedeeld door de veelterm links ervan. De s k -kolom wordt als volgt gemaakt: rechts onder zet je 0. Daarboven zet je de factor om van de laatste t k een monische veelterm te maken, dus het omgekeerde van de hoogste-graads co¨effici¨ent, in dit geval
9 . 37
Nu kun je omhoog werken met de formule
sk−1 := sk+1 − qk sk Tenslotte het resultaat: d = s 2 · t1 + b1 · t2 In dit geval, na buiten haakjes halen van X2 + 5 =
1 : 37
1 ((−3X + 8)(X 6 + X 5 + 5X 4 + 5X 3 − X 2 − 5) + (3X 3 − 5X 2 + X − 15)) 37
104
5. Veeltermen
Dat buiten haakjes halen van k
1 37
kun je ook van te voren doen, dan krijg je een prettiger tabel: tk
qk
sk
1 X 6 + X 5 + 5X 4 + 5X 3 − X 2 − 5 2
X 4 + 2X 2 − 15
3
3X 3 + 8X 2 + 15X + 40 37 2 9 X
4
+
185 9
3X 3 − 5X 2 + X − 15 X2 + X + 3
−3X + 8
1 3X
−
8 9
9
27 37 X
+
72 37
0
Let op: Nu moet je nog wel het eindresultaat door 37 delen. De methode die hier wordt gegeven voor veeltermen kun je in feite vrijwel net zo gebruiken voor gehele getallen, als je wilt. Opgaven opgave 5.17 — oefening Gegeven zijn twee veeltermen f en g: f := X 2 − 1
en
g := 2X 7 − 4X 5 + 2
Bepaal veeltermen a en b zodat ggd(f, g) = a · f + b · g. opgave 5.18 — oefening Gegeven zijn twee veeltermen f en g: f := X 6 − 1
en
g := X 8 − 1
Bepaal veeltermen a en b zodat ggd(f, g) = a · f + b · g. opgave 5.19 — uitdager Bestaat er een veelterm f in R[X] zodat (X 3 − 1) · f + X 2 − 1 deelbaar is door X 2 + 5X − 6 ? Zo ja, geef er een; zo nee, waarom niet? opgave 5.20 — overzicht a. Wat is een veelterm in X over een getallenverzameling A? b. Wat zijn de verbanden van het begrip graad met het optellen, aftrekken en vermenigvuldigen van veeltermen? c. In welke gevallen is delen met rest beschikbaar? d. Wat levert delen met rest precies als resultaat? e. Hoe is de grootste gemene deler van twee veeltermen gedefinieerd? f. Hoe bereken je de grootste gemene deler van twee veeltermen? g. Wat is de belangrijkste eigenschap van de grootste gemene deler van twee veeltermen? En hoe bereken je de bijbehorende zaken?
5.6 * Een bewijs voor de hoofdstelling over de grootste gemene deler
van twee veeltermen
105
5.8 * Quotienten van veeltermen Net zo als je van gehele getallen rationale getallen kunt maken door paren gehele getallen te nemen, waarbij het tweede getal niet nul is en op deze structuur functies als IsEqual te defini¨eren, kun je ook bij veeltermen quoti¨enten van veeltermen construeren. We maken dan een datastructuur van tweetallen veeltermen, waarvan de tweede niet de nulveelterm is en defini¨eren voor a, b, c en d veeltermen in X over een getallenverzameling A: IsEqual( [a,b], [c,d], ’poly(X,A)’) := [ Functie Test a*d=b*c Endtest ] Ook hier representeren oneindig veel tweetallen hetzelfde object; wiskundig gezien wordt dat object juist gevormd door die oneindige verzameling van tweetallen veeltermen die in combinatie met elkaar onder IsEqual True opleveren. De eigenschappen die we gezien hebben van IsEqual bij de rationale getallen zij hier eveneens van toepassing. In feite kun je praktisch die hele paragraaf overschrijven als je de gehele getallen vervangt door veeltermen. Alleen bij het vereenvoudigen moet je zorgen dat in het resultaat de noemer monisch is (in plaats van een positief getal). Opgaven opgave 5.21 — tentamenopgave Zijn er veeltermen f en g in Z7 [X] zodat f X +5 g + = 4 2 4 + 2 (X + 2)(X + X + 4) X +X +4
X2
? Zo ja, bereken een goede combinatie van f en g en lever ook je berekening er bij; zo nee, beredeneer waarom niet. Gebruik de gereedschappen van het college! opgave 5.22 — tentamenopgave Zijn er veeltermen f en g in R[X] zodat f g X = 2 + ? (X 2 + 1)(X 4 + 1) X + 1 X4 + 1 Zo ja, bereken een goede combinatie van f en g; zo nee, beredeneer waarom niet.
106
5. Veeltermen
5.9 * Veeltermen modulo een veelterm Net als bij de gehele getallen geldt het volgende: (5.20) stelling: Laat K gelijk zijn aan R of Q of F p met p een priemgetal, of een ander getallenlichaam. Dan kun je dus delen met rest in K[X]. Twee veeltermen leveren bij delen met rest door een veelterm v dezelfde rest precies wanneer ze onderling een veeltermvoud van v verschillen. Het bewijs gaat net als bij stelling (2.2) op bldz. 42. Daarmee kunnen we net als bij de gehele getallen restklassen gaan defini¨eren en modulo een veelterm gaan rekenen. Alles gaat precies als daar. (5.21) definitie: Laat f en v veeltermen over een lichaam K. De restklasse modulo v van de veelterm f is dan gedefinieerd als de verzameling van veeltermen g zodat rest(g, v) = rest(f, v) endvox Uit de vorige stelling volgt nu: (5.22) stelling: a. De restklasse modulo v van f (als f en v veeltermen zijn) is de verzameling {f + u · v |
u
veelterm
}
b. Twee veeltermen hebben dezelfde restklasse modulo v precies als ze een veeltermvoud van v verschillen. (5.23) notatie: Als je wilt zeggen dat twee veeltermen a en b onderling een veeltermvoud van v verschillen, kun je ook zeggen: “a en b zijn congruent modulo v.” Dat wordt z´o genoteerd: a≡b
(mod v)
Of anders gezegd: a ≡ b (mod v) precies dan als rest(a − b, v) = 0 oftewel als rest(a, v) = rest(b, v), dus als a en b dezelfde restklasse modulo v hebben. Net als voor het rekenen in Zm kun je gemakkelijk bewijzen: (5.24) stelling: We rekenen modulo de veelterm v. Laat a, a 0 , b en b0 veeltermen zijn met a ≡ a0 Dan a. b. c.
(mod v)
a + b ≡ a 0 + b0
a − b ≡ a 0 − b0 0
a·b ≡a ·b
0
en
b ≡ b0
(mod v)
(mod v) (mod v) (mod v)
(5.25) notatie: We zullen de verzameling van restklassen van veeltermen in X over A modulo de veelterm v noteren als A[X]/(v). De restklasse van een veelterm f zullen we noteren als f .
5.6 * Een bewijs voor de hoofdstelling over de grootste gemene deler
van twee veeltermen
107
(5.26) definitie: We defini¨eren een optelling en een vermenigvuldiging op A[X]/(v) door f + g := f + g a · b := ab (5.27) voorbeeld: In R[X]/(X 2 + 1): X + 2 · X + 3 = X 2 + 5X + 6 = X 2 + 5X + 6 − (X 2 + 1) = 5X + 5 einde voorbeeld Opgaven *opgave 5.23 — oefening We gaan werken in C = R[X]/(X 2 + 1). a. Laat zien dat je ieder element van C kan schrijven als de restklasse van precies e´ e´ n eerste- of nuldegraads veelterm of 0. Die veelterm zullen we de hoofdrepresentant van die restklasse noemen. b. Geef de hoofdrepresentant van X 2 . c. Geef de hoofdrepresentant van X 3 . d. Geef de hoofdrepresentant van X 4 . e. Laat a, b, c en d re¨ele getallen zijn. Geef nu de hoofdrepresentant van a + bX · c + dX. f. Zijn er nuldelers in C ? Om die vraag te beantwoorden zijn hier een paar hulpvragen: - Heeft de functie op R gedefinieerd door x 7→ x 2 + 1 nulpunten? - Laat zien dat x2 + 1 niet ontbonden kan worden.
- Laat zien: als voor de veelterm f geldt dat f 6= 0 in R[X]/(X 2 + 1), dan ggd(f, X 2 + 1) = 1. - Laat zien: als ggd(f, X 2 + 1) = 1 dan is er een veelterm u zodat u · f = 1.
- Laat zien, dat een deler van 1 geen nuldeler kan zijn. g. Voor welke re¨ele getallen c en d geldt dat 1 + X · c + dX restklasse is van een nuldegraads veelterm? h. Kun je c en d vinden zodat 1 + X · c + dX restklasse is van de veelterm 1 ?
i. Laat a + bX een veelterm in R[X] zijn die niet 0 is. Voor welke re¨ele getallen c en d geldt dat a + bX · c + dX restklasse is van een nuldegraads veelterm?
j. Laat a + bX weer een veelterm in R[X] zijn die niet 0 is. Kun je c en d vinden zodat a + bX · c + dX restklasse is van de veelterm 1 ? √ k. Kun je c en d vinden zodat 3 + X · c + dX restklasse is van de veelterm 1 ? *opgave 5.24 — oefening We gaan werken in D = R[X]/(X 2 − 2). Net als in de vorige opgave zou je kunnen laten zien dat je ieder element van D kan schrijven als de restklasse van precies e´ e´ n eerste- of nuldegraads veelterm of 0. Die veelterm zullen we weer de hoofdrepresentant van die restklasse noemen.
108
5. Veeltermen
a. Geef de hoofdrepresentant van X 2 . b. Geef de hoofdrepresentant van X 3 . c. Geef de hoofdrepresentant van X 4 . d. Laat a, b, c en d re¨ele getallen zijn. Geef nu de hoofdrepresentant van a + bX · c + dX. e. Zijn er nuldelers in D ?
f. Laat a + bX een veelterm in R[X] zijn die niet 0 is. Voor welke re¨ele getallen c en d geldt dat a + bX · c + dX restklasse is van een nuldegraads veelterm? g. Laat a + bX weer een veelterm in R[X] zijn die niet 0 is. Kun je c en d vinden zodat a + bX · c + dX restklasse is van de veelterm 1 ? *opgave 5.25 — oefening We gaan werken in E = Q[X]/(X 2 − 2). Ook hier kun je ieder element van E schrijven als de restklasse van precies e´ e´ n eerste- of nuldegraads veelterm of 0. Die veelterm zullen we weer de hoofdrepresentant van die restklasse noemen. De berekening van de hoofdrepresentant van a + bX · c + dX gaat natuurlijk net als in de vorige opgave, alleen zijn de getallen a, b, c en d nu breuken, rationale getallen. a. Zijn er nuldelers in E ? b. Laat a + bX een veelterm in Q[X] zijn die niet 0 is. Voor welke rationale getallen c en d geldt dat a + bX · c + dX restklasse is van een nuldegraads veelterm? c. Laat a + bX weer een veelterm in R[X] zijn die niet 0 is. Kun je c en d vinden zodat a + bX · c + dX restklasse is van de veelterm 1 ?
hoofdstuk 6
Complexe getallen In de re¨ele getallen kun je optellen, aftrekken, vermenigvuldigen en delen (behalve door 0 natuurlijk), maar worteltrekken kan alleen met getallen groter of gelijk aan 0. Dat maakt het oplossen van kwadratische vergelijkingen zo’n gehannes met het onderscheid tussen discriminant groter, kleiner of gelijk aan 0. In wezen missen we een getal waarvan het kwadraat −1 is. Het vorige hoofdstuk biedt een uitweg: we stellen
zogezegd de veelterm X 2 + 1 gelijk aan 0; dat betekent dat we gaan rekenen in R[X] modulo X 2 + 1. Dan is X een object geworden waarvan het kwadraat gelijk is aan −1. Zo als je al gezien hebt kun je met veeltermen rekenen alsof het getallen zijn; als je veeltermen modulo een zekere veelterm neemt, kun je ook ’gewoon’ er mee rekenen. In feite is dat al gedaan aan het eind van het vorige hoofdstuk: daar hebben we in R[X] de verzameling van restklassen modulo X 2 + 1 genomen. In die verzameling van restklassen konden we ook weer optellen en vermenigvuldigen door telkens representanten op te tellen c.q. te vermenigvuldigen en van het resultaat de restklasse te nemen. Als we rekenen met die restklassen zijn er geen nuldelers, dank zij het feit dat X 2 + 1 niet te ontbinden is, dus geen echte delers heeft. Zelfs heeft ieder element ongelijk aan de restklasse van 0 een omgekeerde; het resultaat. Opmerkelijk is dat X 2 + 1 = 0, dus X 2 = −1: hier is dus −1 een kwadraat. Dat is ook het geval in Z10 bijvoorbeeld, maar het aardige is hier, dat je de re¨ele getallen zelf ook als restklassen kunt zien van nuldegraads veeltermen en dan reken je met die restklassen precies zoals je dat normaal doet met re¨ele getallen. Die verzameling van restklassen met de bijbehorende manier van rekenen (optellen, aftrekken, vermenigvuldigen) zullen we de complexe getallen C noemen. De complexe getallen spelen in de wiskunde en in zeer veel toepassingen een heel belangrijke rol. We gaan deze in dit hoofdstuk nader bestuderen. Daarbij zullen we een iets andere notatie gebruiken: de gangbare notatie voor complexe getallen. Daarin is de X vervangen door i. (Sommige anderen, met name elektrotechnici, gebruiken een j in plaats van een i en in Maple wordt de hoofdletter I gebruikt.) Voor computergebruik is nog een verwant soort getallen belangrijk: de rationale complexe getallen: Q[X]/(X 2 + 1). Het rekenen gaat net als met de gewone complexe getallen.
6.1 Notatie van complexe getallen (6.1) definitie: De verzameling van de complexe getallen , genoteerd als C, is de verzameling van alle a + bi, waarbij a en b re¨ele getallen zijn. We defini¨eren een optelling en een vermenigvuldiging door: (a + bi) + (c + di) := (a + c) + (b + d)i (a + bi)(c + di) := (ac − bd) + (ad + bc)i Voor het element i geldt dus dat i2 = (0 + i)(0 + i) = (0 · 0 − 1 · 1) + (0 · 1 + 1 · 0)i = −1
110
6. Complexe getallen
De vermenigvuldiging is gemakkelijker te onthouden door een product formeel uit te vermenigvuldigen en daarbij i2 = −1 te gebruiken. (6.2) voorbeeld: (2 − 3i)(4 + 2i) = 2(4 + 2i) − 3i(4 + 2i) = 8 + 4i − 12i − 6i2 = 8 − 8i + 6 = 14 − 8i einde voorbeeld (6.3) definitie: Voor een complex getal z = a + bi, heet a het re e¨ le deel van z (notatie a = Re(z)) en b het imaginaire deel (notatie b = Im(z)). Als Re(z) = 0 noemen we z een zuiver imaginair getal. De verzameling van complexe getallen waarvoor het imaginaire deel nul is samen met de operaties optellen en vermenigvuldigen van de complexe getallen kunnen we identificeren met de verzameling van de re¨ele getallen, en het rekenen ermee gaat op identieke wijze. Met andere woorden een complex getal z is re¨eel, “zit in R”, als Im(z) = 0. We noteren a + 0i dan ook gewoon als a. Enkele eigenschappen van C zijn: (6.4) stelling: In de verzameling C met de gedefinieerde optelling en vermenigvuldiging heeft ieder element ongelijk aan 0 een omgekeerde: 1 1 · (x − iy) = 2 x + iy x + y2
als x, y ∈ R en niet x = y = 0.
We kunnen dus delen door ieder complex getal ongelijk 0. bewijs: Stel u = a + bi met a en b re¨ele getallen. Uit u 6= 0 volgt a 6= 0 of b 6= 0 en dus
a2 + b2 6= 0. Het re¨ele getal
1 a2 +b2
bestaat dus en dan ook het complex getal
b a 1 − 2 i. := 2 2 u a +b a + b2 Je rekent nu snel na dat u ·
1 u
= 1.
Het bovenstaande laat ook zien hoe je in de praktijk delingen kunt uitwerken. (6.5) voorbeeld: 2 + 3i (2 + 3i)(5 + 2i) 4 + 19i 4 19 = = = + i 5 − 2i (5 − 2i)(5 + 2i) 29 29 29 einde voorbeeld
6.2
111
Het complexe vlak
Opgaven opgave 6.1 — oefening Bereken a. (3 + 2i) + (−7 − i) b. (2 − i)(−3 + 2i) c.
3 − 2i −1 + i
*opgave 6.2 — oefening Zij Q[i] := { a+bi ∈ C | a, b ∈ Q }. Binnen die verzameling kun je ook rekenen: als je twee elementen van die verzameling bij elkaar optelt of met elkaar vermenigvuldigt (volgens de rekenregels van de complexe getallen), dan krijg je ook weer een element van Q[i]. Bewijs dat en bewijs ook dat je binnen die verzameling kunt delen.
6.2 Het complexe vlak Meetkundig kun je het complexe getal z = a + bi voorstellen als het punt (a, b) in het platte vlak.
Im-as z
b
θ Re-as 0
a Fig 6.1 het complexe vlak
De x-as en de y-as van het complexe vlak noemen we respectievelijk de re e¨ le en √ imaginaire as. De afstand van het punt z tot de oorsprong is a2 + b2 . Dat is dus de absolute waarde van het complexe getal z, doorgaans genoteerd als |z|. De hoek θ, gemeten vanaf de positieve re e¨ le as tot aan z, met een waarde groter dan −π en hoogstens π, heet het argument van z. Voor het complexe getal 0 is het argument niet gedefinieerd. Dus als z = a + ib en θ is het argument van z, dan (6.6) terminologie:
z = |z|(cos θ + i sin θ) We kunnen het complexe getal z dus vastleggen door zijn absolute waarde en zijn argument. Die twee getallen samen noemen we de poolcoo¨ rdinaten van dat complexe getal.
112
6. Complexe getallen
We hebben nu dus twee manieren om een complex getal te beschrijven: • a + bi waar a en b re¨ele getallen zijn;
• r · (cos(ϕ) + i sin(ϕ)), waar r > 0 en ϕ een re¨eel getal is; r is de afstand van 0 tot het complexe getal, en als −π < ϕ ≤ π dan is ϕ het argument van het complexe getal.
Het beschrijven van een complex getal in poolco¨ordinaten, dus in de vorm van r · (cos ϕ + i sin ϕ) is in de praktijk, met name bij vermenigvuldigen en machtsverheffen, vaak erg handig. Als je alleen vermenigvuldigt en machten neemt met als exponent een geheel getal, maakt de keuze voor ϕ niet uit, omdat dat in de uitkomst ook alechts verschillen van een heel aantal keren 2π levert, maar verderop gaan we o.a. rekenen met machten, waarvan de exponent niet geheel is en dan maakt het wel verschil uit! De afspraak is nu dat ϕ het argument genoemd wordt als −π < ϕ ≤ π. Als dus z = r · cos(ϕ) + i sin(ϕ) , dan zeggen we dat het argument van z congruent met ϕ modulo 2π: arg r · (cos(ϕ) + i sin(ϕ)) ≡ ϕ (mod 2π)
6.3 Het berekenen van het argument van een complex getal Als je de complexe getallen wilt implementeren in een softwarepakket, is het doorgaans belangrijk meteen effici¨ente procedures te maken voor het omrekenen tussen gewone en poolco¨ordinaten. Voor het berekenen van het argument wordt vaak de verhouding tussen de imaginaire en de re¨ele component gebruikt: dat is de tangens van het argument, maar helaas wordt door de tangens van een hoek tussen −π en π radialen die hoek niet vastgelegd: er zijn precies twee mogelijkheden, die π verschillen; daartussen moet nog gekozen worden door te kijken naar het teken van het re¨ele deel of, als dat 0 is, het teken van het imaginaire deel. Opgave opgave 6.3 — oefening Bereken exact, dus niet benaderend, |z| en het argument van z in de volgende gevallen, en teken z in het √ √ complexe vlak. a. z = 1 − i b. z = −1 + i 3 c. z = − 3 − i opgave 6.4 — oefening Bereken in decimale benadering in 4 cijfers nauwkeurig, |z| en het argument van z in de volgende gevallen, en teken z in het complexe vlak. a. z = −2 + 5i b. z = −3 − 2i c. z = 1 − 5i opgave 6.5 — oefening Beschrijf een algoritme waarmee je van een complex getal z = a + bi, waar a en b gegeven re¨ele getallen zijn, het argument van z kunt berekenen, gebruik makend van de functie arctan. Programmeer dit in C ++ .
6.5
113
Optellen meetkundig
6.4 De complex geconjugeerde (6.7) definitie: Met de complex geconjugeerde van z = a+bi bedoelen we het complexe getal z := a−bi. Als z = a + bi dan is zz = a2 + b2 en dat is een positief re¨eel getal. De absolute waarde van z, genoteerd √ √ als |z|, is gedefinieerd als |z| := zz. Of anders gezegd: als z = a + bi dan is |z| = a2 + b2 . Als z 6= 0 dan is |z| 6= 0 en uit zz = |z|2 volgt dat 6= 0 een omgekeerde heeft.
z 1 = 2 . We zien dus nog eens dat elk complex getal z |z|
(6.8) lemma: Voor alle z, w ∈ C geldt: a. (z) = z b. z + w = z + w c. zw = z w d. z + z = 2 Re(z) e. z − z = 2i Im(z) (6.9) voorbeeld: Zij z := 3 + 2i. Dan z = 3 − 2i; zz = 9 + 4 = 13 en |z| =
√ 13. Verder is
1 z
=
1 (3 13
− 2i).
einde voorbeeld Opgaven opgave 6.6 — oefening Zij z = 3 + 4i. Bereken in standaardvormen teken: a. z
b. |z|
c.
1 z
opgave 6.7 — oefening Geef formules voor het omgekeerde van een complex getal z 6= 0 en voor het quoti¨ent van twee complexe getallen w en z met z 6= 0 m.b.v. de absolute waarde en de geconjugeerde.
6.5 Optellen meetkundig In allerlei situaties zijn die meetkundige voorstellingen van complexe getallen inspirerend voor de intu¨ıtie. Dat komt vooral doordat optelling en vermenigvuldiging gemakkelijk meetkundig ge¨ınterpreteerd kunnen worden. Gegeven z = a + bi en w = c + di. Dan is de som z + w = (a + c) + (b + d)i en die vind je in het plaatje door een parallellogram te tekenen.
114
6. Complexe getallen
Im-as
Aan dat plaatje kun je van alles aflezen, bijvoorbeeld zie je met behulp van de driehoek (0, z, z + w) dat |z + w| ≤ |z| + |w|. We zeggen ook wel dat de absolute waarde aan de zogenaamde driehoeksongelijkheid voldoet. Dat is ook met wat formulegepeuter te bewijzen. Dat mag je zelf doen, als je wilt.
z+w w
Re-as
z 0
Fig 6.2 complexe getallen optellen Bij het optellen krijg je de re¨ele component van de som door de re¨ele componenten van de termen op te tellen; en zo eveneens voor de imaginaire componenten.
6.6 Vermenigvuldigen meetkundig Voor het vermenigvuldigen blijkt het soms handiger in poolco¨ordinaten te rekenen: Stel dat z = r(cos(ϕ)+ i sin(ϕ)) en w = s(cos(ψ). Dan is z · w = rs cos(ϕ) cos(ψ) − sin(ϕ) sin(ψ)) + i(sin(ϕ) cos(ψ) + cos(ϕ) sin(ψ)) = rs cos(ϕ + ψ) + i sin(ϕ + ψ) Dus |zw| = |z||w| en het argument van zw is de som van de argumenten van z en van w modulo 2π. (6.10) stelling: Je kunt twee complexe getallen z en w met elkaar vermenigvuldigen als volgt • de absolute waarde van het product is het product van de absolute waarden van z en u
• het argument van het product is de som van de argumenten van z en w of eventueel die som plus of min 2π. Dat komt neer op de volgende formule: z · w = |z| · |w| · (cos(arg(z) + arg(w)) + i sin(arg(z) + arg(w))) Im-as
zw
w ϕ ψ 0
z ϕ
Re-as 1
Fig 6.3 complexe getallen vermenigvuldigen Met andere woorden:
6.6
115
Vermenigvuldigen meetkundig
In het plaatje kun je z · w construeren doordat de driehoek (0, w, z · w) gelijkvormig is met de driehoek (0, 1, z). Opgave opgave 6.8 — oefening In deze opgave gaan we even oefenen met bovenstaande stelling. In feite zul je zien dat het gebruik van deze stelling hier omslachtig is, en bovendien, nodeloze onnauwkeurigheid kan opleveren. In het vervolg bij machtsverheffen zul je echter zien dat deze stelling daar onmisbaar is. Gegeven zijn z = 2 − 3i en u = −3 − 4i. a. Bereken de argumenten van z en u.
b. Bereken nu z · u m.b.v. bovenstaande stelling.
c. Bereken z · u met de methode die je eerder geleerd hebt (dus met de definitie van vermenigvuldigen in deze tekst). Kloppen de beide uitkomsten met elkaar?
6.7 Machtsverheffen met natuurlijke exponenten Machtsverheffen met natuurlijke exponenten is natuurlijk een bijzonder geval van vermenigvuldigen. Uit het voorgaande leid je gemakkelijk af: (6.11) Stelling van de Moivre:
Zij n een natuurlijk getal en zij
z = r(cos(θ) + i sin(θ)) met r een positief getal. Dan z n = r n cos(nθ) + i sin(nθ) Opgaven
opgave 6.9 — oefening Schrijf in standaardvorm (a + bi) en teken in het complexe vlak √ a. 1 + i 3 √ b. 1 − i 3 c. d.
√ 1+i √3 1−i 3
√ 10 1+i √3 1−i 3
opgave 6.10 — oefening a. Bepaal alle complexe getallen z waarvoor z 2 = 6i, en teken ze in het complexe vlak. b. Bepaal alle complexe getallen z waarvoor z 2 = −6i, en teken ze in het complexe vlak.
116
6. Complexe getallen
opgave 6.11 — uitdager Teken de verzameling van alle complexe getallen z die voldoen aan z − 3 z + 3 ≥ 2
Advies: schrijf z = x + iy met x en y re¨ele getallen en werk dan de ongelijkheid uit. opgave 6.12 — uitdager Teken de verzameling van alle complexe getallen z die voldoen aan |z − i| ≤ 1 |z + 2| ≥ 3
6.8 De e-macht Laten we nu eens gaan kijken naar beweging op de eenheidscirkel. Neem de functie c : t 7→ cos(πt) + i sin(πt) Als je die functie in de meetkundige interpretatie van de complexe getallen opvat als een functie naar het platte vlak, dus als de functie c2 : t 7→ cos(πt), sin(πt) dan kun je hier ook een snelheidsvector bij berekenen: c02 (t) = −π sin(πt), π cos(πt)
Omgerekend naar complexe getallen, waarbij we nu even net doen alsof we complexe functies kunnen differenti¨eren (hetgeen mooi werkt, maar dat is nu een zijpad), krijgen we: c0 (t) = −π sin(πt) + i π cos(πt) = i π cos(πt) + i sin(πt)) = i π c(t)
Dat is een opmerkelijk resultaat: c 0 = i πc. Het doet denken aan de functie exp: exp : x 7→ ex
Die functie is gelijk aan zijn afgeleide. Je zou denken: als c(z) = e i πt , dan (volgens de kettingregel) c0 (t) = i πc(t). Natuurlijk is dit hier alleen maar een wilde fantasie zonder dat we over differenti¨eren van complexe functies beschikken, maar het is wel een goede achtergrond om te defini¨eren: als t een re¨eel getal is, dan ei πt := cos(πt) + i sin(πt) of, als y een re¨eel getal is: eiy := cos(y) + i sin(y)) En wat zou nu ex+iy moeten zijn? Je mag hopen dat we de eigenschap e a+b ook hier houden. Dan zou ex+iy = ex · eiy . Op hoop van zegen defini¨eren we dus: (6.12) definitie: Als x en y re¨ele getallen zijn, dan ex+iy := ex · (cos(y) + i sin(y)
We noteren ez ook als exp(z).
6.6
117
Vermenigvuldigen meetkundig
We kunnen een complex getal nu dus op twee manieren in poolco¨ordinaten schrijven: • z = r · (cos(φ) + i sin(φ)) • z = eρ+iϕ
waarbij ϕ in beide formules hetzelfde is, namelijk het argument of iets dat daarvan een geheel aantal keren 2π verschilt, en r = eρ . We kunnen met die notatie van een complex getal prima vermenigvuldigen: volgens de regel dat je dan de lengtes met elkaar moet vermenigvuldigen en de hoeken bij elkaar moet tellen krijg je: 0
0
0
0
eρ+iϕ · eρ +iϕ = e(ρ+ρ )+i(ϕ+ϕ ) (6.13) stelling: Als z1 en z2 complexe getallen zijn, dan ez1 +z2 = ez1 · ez2 bewijs: Volgens definitie (6.12) is de absolute waarde van e x1 +y1 i+x2 +y2 i gelijk aan ex1 +y1 = ex1 · ey1 =| ex1 +y1 i | · | ex2 +y2 i | Verder is het argument van ex1 +y1 i+x2 +y2 i congruent met met y1 + y2 modulo 2π, dus congruent aan de som van de argumenten van e x1 +y1 i en ex2 +y2 i , dus gelijk aan het argument van het product van beide. Machtsverheffen met natuurlijke exponenten sluit daar natuurlijk op aan: (6.14) stelling: Als n een positief geheel getal is, dan n
(r · (cos(ϕ) + i sin(ϕ))) = r n · (cos(nϕ) + i sin(nϕ)) (eρ+iϕ )n = enρ+inϕ (ez )n = enz Voor de e-macht in de re¨ele getallen is er een bekende machtreeksontwikkeling. Die werkt ook voor de complexe getallen. Zonder bewijs krijg je: (6.15) stelling: Als z een complex getal is, dan ez =
∞ X zk
k=0
k!
Opgaven opgave 6.13 — oefening π
Bereken in de notatie a + bi met a en b re¨ele getallen: a. e 5iπ b. e−6πi c. ei 2 d. ei
π 4
π
e. ei 3
118
6. Complexe getallen
6.9 Eenheidswortels Het bovenstaande is natuurlijk een prima hulpmiddel om oplossingen te zoeken van vergelijkingen van type ?z ∈ C : z n = a. We nemen hier allereerst het belangrijkste geval: a = 1. We zoeken alle complexe getallen z die voldoen aan z n = 1. Stel z = eρ+iϕ dan z n = en·ρ+in·ϕ = 1 = e0+i·0 We lezen af: ρ=0
n·ϕ ≡0
en
(mod 2π)
Dat laatste beteken dat er een k ∈ Z is zodat n · ϕ = k · 2π
k · 2π n De oplossingen zijn dus van de vorm ϕ=
k
e n ·2π oftewel k k · 2π) + sin( · 2π) n n We krijgen zo precies n verschillende oplossingen, omdat een verschil in ϕ van een geheel veelvoud van 2π niet uitmaakt: neem 1 1 − n
(6.16) voorbeeld: Bijvoorbeeld als n = 3 krijg je
ω 2π/3 0
1
Re-as
1 1 √ 1 1 √ 1, − + i 3, − − i 3 2 2 2 2 √ Stellen we ω := − 12 + 12 i 3 dan zijn de oplossin-
gen dus: ω
2
Fig 6.4 de 3-de eenheidswortels einde voorbeeld
ω, ω 2 , ω 3 = 1 De oplossingen van z 3 = 1 noemt men de 3-de eenheidswortels.
6.6
119
Vermenigvuldigen meetkundig
(6.17) voorbeeld: Los op: ?z ∈ C :
z 3 = 8i.
√ 3 8i te berekenen en het resultaat √ 3 te combineren met de derde eenheidswortels. Nu heeft 8i als absolute waarde 2 en als argument 13 · 12 π = 16 π. We krijgen de argumenten van de twee andere oplossingen door We kunnen dit probleem gemakkelijk oplossen door eerst
daar de argumenten van de derde eenheidswortels 6= 1 bij op te tellen, dus de veelvouden van 2 3 π.
De argumenten van de oplossingen zijn dus
oplossingen zijn dus
1 1 6 π, 6 π
+ 23 π =
5 1 6 π, 6 π
− 23 π = − 21 π. De
√ 1 1 2(cos( π) + i sin( π)) = 3 + i 6 6 √ 5 5 2(cos( π) + i sin( π)) = − 3 + i 6 6 1 1 2(cos(− π) + i sin(− π)) = −2i 2 2 einde voorbeeld Opgaven opgave 6.14 — oefening a. Bepaal alle complexe getallen z waarvoor z 4 = 1, schrijf ze in de standaardvorm a + bi met a, b ∈ R en teken ze in het complexe vlak. b. Ontbind z 4 − 1 in factoren.
c. Bepaal alle complexe getallen z waarvoor z 4 = −3, schrijf ze in de standaardvorm a + bi met a, b ∈ R en teken ze in het complexe vlak.
opgave 6.15 — oefening a. Los op: ?z :
z 5 = −1 − i
b. wat is de som van de oplossingen? opgave 6.16 — oefening Los op: z ∈ C :z 3 = i. Schrijf de oplossingen in de vorm van a + bi met a en b re¨ele getallen opgave 6.17 — uitdager Bewijs dat de som van alle 100-ste eenheidswortels gelijk aan 0 is. Tip: Gebruik het idee van invariant, zoals we dat ook gedaan hebben bij de stelling van Euler: vermenigvuldig de som van alle 100-ste eenheidswortels met e´ e´ n van die eenheidswortels, het doet er niet toe welke, als je maar niet de 1 neemt. Denk intussen ook even aan het plaatje!
120
6. Complexe getallen
6.10 Machten van complexe getallen met re¨ ele exponenten Bekijk nu eens complexe getallen op de eenheidscirkel om de 0. Daarvan is de absolute waarde 1, dus kun je zo’n getal z schrijven als z = cos(ϕ) + i sin(ϕ) of als z = eiϕ Als n een natuurlijk getal is, dan (cos(ϕ) + i sin(ϕ))n = cos(nϕ) + i sin(nϕ) oftewel ei ϕ
n
= ei n ϕ
volgens de Moivre. Het ligt nu voor de hand te defini¨eren voor ieder re¨eel getal t: (cos(ϕ) + i sin(ϕ))t = cos(tϕ) + i sin(tϕ) Oftewel met de e-macht: t ei ϕ = e i t ϕ
Maar nu hebben we een probleem: in principe kun je voor ϕ een keuze maken, en de keuzes verschillen onderling een veelvoud van 2π, maar voor tϕ scheelt dat dan een veelvoud van t · 2π en dat hoeft geen veelvoud van 2π te zijn! De definitie die we hebben gegeven deugt niet! Het redmiddel is: de keuze vastleggen van die ϕ: we moeten voor deze operatie ϕ gelijk nemen aan het argument, dus −π <ϕ ≤π We doen het nu algemeen voor alle complexe getallen behalve 0: (6.18) definitie: Voor r > 0, −π < ϕ ≤ π en t ∈ R:
(r · (cos(ϕ) + i sin(ϕ)))t = r t · (cos(tϕ) + i sin(tϕ))
Gevolg: (6.19) stelling: Voor ρ ∈ R, −π < ϕ ≤ π en t ∈ R: t eρ+iφ = et ρ+i t φ
(6.20) Let op!: Ook al neem je voor ϕ het echte argument, dan is het best mogelijk dat t · ϕ niet tussen −π en π ligt, dus bovenstaande formules leveren in het algemeen niet het argument van de macht! Voor het berekenen van machten van een complexe getal, zeker als de exponent niet geheel is, moet je dus dat complexe getal in poolco¨ordinaten beschrijven en er op letten dat je als hoek het echte argument kiest. Opgave opgave 6.18 — oefening 1
1
1
3
Bereken (geschreven in de vorm a + bi): a. i 2 , b.(−i) 2 , c.i− 2 , d.(−1) 4
6.11
121
Wortels van complexe getallen
6.11 Wortels van complexe getallen In het voorgaande kwam al de term “eenheidswortel” voor. Dat suggereert worteltrekken. Van de re¨ele getallen ben je gewend verband te leggen met machten met gebroken exponenten. √ Wat zouden we bijvoorbeeld moeten verstaan onder −1 ? Dat zou een getal moeten zijn waarvan het kwadraat −1 is. Zulke getallen hebben we: i en −i. In de vorige paragraaf hebben we gedefini¨eerd: 1
(−1) 2 = i 1 p −1 = i en zelfs algemeen, als z 6= 0 (x) := z 2 . Dat gaat wel goed, je kunt √ ook gemakkelijk bewijzen met deze definitie dat ( z)2 = z. Als je echter ook bijvoorbeeld derdemachtswortels wilt gebruiken in de complexe getallen, krijg je vreemde √ 1 effecten. Als je bijvoorbeeld 3 −8 zou willen defini¨eren als (−8) 3 krijg je Je zou kunnen defini¨eren:
√
1
(−8) 3 = 8 · (cos(π) + i sin(π))
31
=
1 1 1 = 8 3 · (cos( π) + i sin( π) = 3 3 √ √ 1 1 = 2( + i 3) = 1 + i 3 2 2 Maar van de re¨ele getallen ben je gewend te nemen √ 3 −8 = −2
Om verwarring te voorkomen zullen we daarom geen hogeremachtswortels gebruiken in de complexe getallen. Je mag er wel aan denken, maar noteer wat je denkt dan met gebroken exponenten! Opgaven opgave 6.19 — oefening 1
a. Bereken in numerieke benadering (−7 − i) 3 .
b. Bereken van de uitkomst van bovenstaand onderdeel de derde macht. 1 c. Bereken (−7 − i)3 3 . Vergeet niet je uitkomst te controleren!
opgave 6.20 — oefening
1
a. Bereken in numerieke benadering (−24 − 7i) 2 b. Los ?z :
z 4 + 24 + 7i = 0 op in numerieke benadering.
*opgave 6.21 — voor de goede rekenaar 1
Bereken precies, dus zonder numerieke benadering, (−24 − 7i) 2 .
122
6. Complexe getallen
6.12 Complexe getallen en wortels Bij het rekenen met machten van re¨ele getallen heb je vroeger al geleerd dat bij niet gehele exponenten alleen positieve grondtallen toegelaten zijn. Daar is een goede reden voor: volgens de definitie √ p x q = q xp zou je anders kunnen rekenen als volgt: p √ √ 1 2 6 − 2 = 3 −8 = (−8) 3 = (−8) 6 = 6 (−8)2 = 64 = 2 Om dergelijke dingen te vermijden is afgesproken
(6.21) definitie: Als x ∈ R en x > 0 en p, q ∈ Z met q > 0, dan √ p x q := q xp Let op: dit werkt alleen voor positieve x. De definitie van machten van complexe getallen is hiermee compatibel, want een re¨eel getal kun je opvatten als een complex getal met argument 0 en bij het berekenen van de macht krijg je vanzelf weer argument 0, en de lengte wordt de macht van dat re¨ele getal. We hebben nu echter plotseling wel machten van negatieve re¨ele getallen ter beschikking, maar daarmee krijg je i.h.a. geen re¨ele getallen als resultaat! Zoals je al gezien hebt: √ 1 (−8) 3 = 1 + i 3
Notaties met het wortelteken van machten van complexe getallen zijn verwarrend en kunnen beter worden vermeden.
Dat neemt niet weg dat deze wortelnotaties vaak gebruikt worden en soms ook op kladpapier heel handig kunnen zijn.
6.13 De gevaren van machten
(6.22) voorbeeld: 1
We gaan (i3 ) 2 berekenen, keurig volgens de definitie van machten. Daartoe berekenen we eerst lengte en argument van i, die zijn respectievelijk 1 en
1 2 π,
dus
1 3 3 1 i3 = 13 · (cos(3 · π) + i sin(3 · π) = cos( π) + i sin( π 2 2 2 2 Om nu van dit tussenresultaat de waarde en het argument; die zijn 1
1 2 -de macht en 32 π − 2π
te nemen, berekenen we hiervan de absolute = − 21 π. We krijgen zo:
6.13
123
De gevaren van machten 1 1 1 1 1 1 (i3 ) 2 = 1 2 · (cos( · (− ⊂)) + i sin( · (− ⊂))) = 2 2 2 2 1 1 = cos(− π) + i sin(− π) = 4 4 √ √ 1 1 2−i 2 = 2 2 Je zou wellicht gedacht kunnen hebben, dat je de exponenten met elkaar kunt vermenigvuldigen, zoals je bij machten van positieve re¨ele getallen gewend bent, maar 3 3 3 1 3 1 i 2 = 1 2 · (cos( · π) + i sin( · π) = 2 2 2 2 3 3 = cos( π) + i sin( π) = 4 4 1√ 1√ =− 2+i 2 2 2 Dat is dus wat anders! Je ziet: 1
3
(i3 ) 2 6= i 2 einde voorbeeld
Je ziet aan bovenstaand voorbeeld: (6.23) Let op: Bij machtsverheffen in de complexe getallen zijn i.h.a. de bekende rekenregels voor machten van positieve re¨ele getallen niet van toepassing! Bij het berekenen van een macht moet je telkens eerst het argument berekenen. In de praktijk betekent dat: de hoek reduceren tot een getal ϕ met −π < ϕ ≤ π. opgave 6.22 — oefening 1
a. Bereken (−1) 2 . 1
1
b. Bereken (−1) 2 · (−1) 2 . 1
c. Bereken ((−1) · (−1)) 2 .
d. Welke bekende regel voor machtsverheffen met positieve re¨ele grondtallen geldt blijkbaar niet algemeen bij complexe grondtallen? opgave 6.23 — oefening Onderzoek of er geldt: als z een complex getal is en s en t re¨ele getallen zijn, dan z s · z t = z s+t Zo ja, beredeneer dat m.b.v. de definitie, zo nee, geef een tegenvoorbeeld en misschien kun je dan ook nog gevallen noemen dat de formule wel geldt.
124
6. Complexe getallen
opgave 6.24 — uitdager Onderzoek of er geldt: als z een complex getal is, dan 1
a. (z 2 ) 2 = z 1
b. (z 2 )2 = z Zo ja, beredeneer dat m.b.v. de definitie, zo nee, geef een tegenvoorbeeld en misschien kun je dan ook nog gevallen noemen dat de formule wel geldt. opgave 6.25 — uitdager Onderzoek of nu geldt: als z een complex getal is en s en t re¨ele getallen zijn, dan (z s )t = z s·t Zo ja, beredeneer dat m.b.v. de definitie, zo nee, geef een tegenvoorbeeld en misschien kun je dan ook nog gevallen noemen dat de formule wel geldt.
6.14 De verschillende manieren om complexe getallen te representeren We hebben nu in principe twee manieren om complexe getallen te respresenteren: a. De standaardmanier: a + bi met a, b ∈ R. Die manier is perfect voor optellen en aftrekken, en is is ook best bruikbaar voor een vermenigvuldiging en een deling. b. Met lengte en argument: • r · (cos(ϕ) + i sin(ϕ)) waarbij r de lengte van het getal is (de afstand tussen 0 en dat getal), dus positief en ϕ een aantal radialen is dat de hoek meet tussen de positive re¨ele as en de richting vanuit 0 naar het getal. In principe kies je hiervoor een getal ϕ zodat −π < ϕ ≤ π, maar voor de hier gegeven formule hoeft dat niet. • exp(ρ + iϕ) = eρ+iϕ waarbij ρ een re¨eel getal is en eρ de lengte van het betreffende complexe getal is en ϕ hoek net als zojuist. Hier moet je voorzichtig zijn: > Als r > 0 en r 0 > 0 zoals het hoort, dan r · (cos(ϕ) + i sin(ϕ)) = r 0 · (cos(ϕ0 ) + i sin(ϕ0 ))
precies als r = r 0 en ϕ − ϕ0 is een geheel veelvoud van 2π. Dat laatste noteren we ook als ϕ ≡ ϕ0
(mod 2π)
> Net zo: als ρ en ϕ re¨ele getallen zijn, dan 0
0
eρ+iϕ = eρ +iϕ ⇔ ρ = ρ0
en
ϕ ≡ ϕ0
(mod 2π)
Deze representatie van complexe getallen werkt niet echt voor het complexe getal 0, is onbruikbaar voor optellen en aftrekken, maar prima geschikt voor vermenigvuldigen en delen en noodzakelijk voor machtsverheffen.
6.15
125
Kwadratische vergelijkingen
Vermenigvuldigen: r · (cos(ϕ) + i sin(ϕ) · r 0 · (cos(ϕ0 ) + i sin(ϕ0 ) = = r · r 0 · (cos(ϕ + ϕ0 ) + i sin(ϕ + ϕ0 )) 0
0
eρ+iϕ · eρ +iϕ = 0
0
= e(ρ+ρ )+i(ϕ+ϕ ) Machtsverheffen met natuurlijke exponenten sluit daar natuurlijk op aan: als n een positief geheel getal is, dan (r · (cos(ϕ) + i sin(ϕ))) n = r t · (cos(nϕ) + i sin(nϕ)) (eρ+iϕ )n = enρ+inϕ Bij machtsverheffen moet i.h.a. de hoek tussen −π en π genomen worden, anders krijg je vaak verkeerde uitkomsten! Als je dat doet, werkt het weer heel simpel: > Als −π < ϕ ≤ π en r > 0 en t ∈ R, dan t
(r · (cos(ϕ) + i sin(ϕ))) = r t · (cos(tϕ) + i sin(tϕ))
Let wel op: tϕ is dan wellicht niet het argument van het resultaat: het kan een geheel aantal keren 2π schelen! Doorrekenen met dit resultaat kan dus gevaarlijk zijn. > Als −π < ϕ ≤ π en r ∈ R en t ∈ R, dan (eρ+iϕ )t = etρ+itϕ
Let weer op: tϕ kan een geheel aantal keren 2π van het argument van het resultaat verschillen! Doorrekenen met dit resultaat kan dus gevaarlijk zijn.
6.15 Kwadratische vergelijkingen Omdat we kunnen delen in de complexe getallen is het oplossen van eerstegraads vergelijkingen simpel. Interessanter is het oplossen van tweegraads vergelijkingen, omdat we nu beschikken over een element waarvan het kwadraat −1 is, zodat de vergelijking ?Z ∈ C : maar eens een voorbeeld bekijken.
z 2 + 1 = 0 oplossingen heeft. Laten we
(6.24) voorbeeld: Bepaal alle complexe getallen z zo dat z 2 = 2 − 3i. Oplossing: we gebruiken De Moivre. Dus eerst moeten we uitrekenen: p √ | 2 − 3i | = 22 + 32 = 13 arg(2 − 3i) =
Kijk naar het plaatje!!
Inderdaad: − π < −0.98 ≤ π
arctan(
3 −3 ) = − arctan( ) ≈ −0.98 2 2
126
6. Complexe getallen
Dus q √ (2 − 3i) ≈ 13(cos(−0.49) + sin(−0.49)i) 1 2
E´en oplossing is dus q √ z≈ 13(cos(−0.49) + sin(−0.49)i)
De andere oplossing is natuurlijk het tegengestelde hiervan; je kunt ook zeggen: de oplossing met argument −0.49 + π: q √ 13(cos(−0.49) + sin(−0.49)i) z ≈= − einde voorbeeld
We gaan nu nog naar een kwadratische vergelijking kijken waar ook een term . . . z in voorkomt. (6.25) voorbeeld: Los op in C: 9z 2 − 30z + 23 + 3i = 0 We gebruiken de bekende abc-formule:
√ b2 − 4ac ax + bx + c = 0 oplossen met x = 2a Die formule werkt natuurlijk alleen bij echte kwadratische vergelijkingen: a 6= 0. Bovendien mag de discriminant niet negatief zijn als je alleen maar met re¨ele getallen rekent, maar die beperking hebben we hier niet. Toepassen levert: p 30 ± (−30)2 − 4 · 9 · (23 + 3i) z= 18 √ 30 ± 72 − 108i = 18 Nu zitten we natuurlijk met die vreemde wortel uit een complex getal. Daarvoor lezen we ‘tot −b ±
2
1
de macht 21 ’. We gaan even apart die (72 − 108i) 2 berekenen. Net als zojuist moeten we de √ √ absolute waarde berekenen: 16848, of, als je even handig rekent: 36 13 (maar je mag het eerste ook laten staan). Het argument is weer ongeveer −0.98. Dus we krijgen door invullen: 1
30 ± (16848) 4 (cos(−0.49) + i sin(−0.49)) z= 18 Dus 1
30 + (16848) 4 (cos(−0.49) sin(−0.49)) z= +i 18 18 of 1
z=
30 − (16848) 4 (cos(−0.49) sin(−0.49)) −i 18 18
einde voorbeeld
6.15
127
Kwadratische vergelijkingen
Opgaven opgave 6.26 — oefening a. Bepaal benaderingen in 4 decimalen nauwkeurig van alle oplossingen in C van de vergelijking z 2 + (3 − 2i)z + (5 − i) = 0 Aan de hand van de berekening vermoed je wellicht dat je een geheel preciese uitkomst kunt geven. Controleer dat je vermoeden klopt door die twee vermoede uitkomsten in te vullen in de vergelijking. b. Ontbind nu z 2 + (−3 + 2i)z + (5 − i) in factoren. opgave 6.27 — oefening Los met numerieke benadering in 4 decimalen nauwkeurig de vergelijking ?z ∈ C :
Schrijf de oplossingen in de vorm a + bi met a en b re¨ele getallen.
z−2 =
17−12i z
op.
*opgave 6.28 — oefening Los de vergelijking ?z ∈ C :
b re¨ele getallen.
z −2 =
17−12i z
exact op. Schrijf de oplossingen in de vorm a + bi met a en
opgave 6.29 — samenvatting a. Op welke twee standaardmanieren kun je een complex getal vastleggen? b. Hoe kun je beide manieren in elkaar omrekenen? (beide kanten uit!) c. Hoe is het argument van een complex getal precies gedefinieerd? d. Hoe is de geconjugeerde van een complex getal gedefinieerd? e. Wat zegt de stelling van de Moivre precies? f. Hoe bereken je sommen en verschillen van complexe getallen? g. Hoe bereken je producten van complexe getallen? (Twee manieren!) h. Hoe bereken je quotienten van complexe getallen? (Twee manieren!) i. Hoe bereken je machten met re¨ele exponenten van complexe getallen? j. Hoe bereken je wortels van complexe getallen? k. Hoe is de e-macht van een complex getal gedefinieerd? l. Hoe los je de vergelijking z n = c in de complexe getallen op (met c ∈ C)?
128
6. Complexe getallen
6.16 * Logaritme en machten van complexe getallen met complexe exponenten De formule ex+iy := ex · (cos(y) + i sin(y)) doet denken aan poolco¨ordinaten: als t en ϕ gehele getallen zijn, dan et+i ϕ := et · (cos(ϕ) + i sin(ϕ)) Dus t, de re¨ele component van het origineel, is de logaritme van de absolute waarde van het beeld: als r een positief getal is, dan elog(r)+i ϕ := r · (cos(ϕ) + i sin(ϕ)) Verder is de imaginaire component van het origineel, ϕ, gelijk aan het argument van het beeld modulo 2π. Dat laatste maakt het defini¨eren van de natuurlijke logaritme van een complex getal een beetje vervelend: op de re¨ele getallen geldt: ex1 = ex2 ⇒ x1 = x2 , en zo kun je de logaritme defini¨eren als inverse van exp, maar doordat cos en sin periodiek zijn krijg je op de complexe getallen: e z1 = ez2 ⇒ z1 en z2 verschillen een geheel aantal keren 2πi. Daarom moet je met de logaritme een keuze maken: (6.26) definitie: Als z een complex getal ongelijk aan 0 is, dan log(z) := log(| z |) + i arg(z) Hiermee kunnen we nu ook de complexe machten algemeen defini¨eren: (6.27) definitie: Als z en u complexe getallen zijn met z 6= 0, dan
z u := eu·log(z) Door de bovenvermelde problemen met de logaritme is het rekenen met complexe machten een gevaarlijke bezigheid: allerlei vertrouwde formules van rekenen met machten werken hier alleen beperkt tot speciale gevallen.
hoofdstuk 7
Veeltermen ontbinden, nulpunten
In het hoofdstuk over veeltermen hebben we opzettelijk doorgaans ‘vergeten’ dat een veelterm te zien is als een functievoorschrift. Een typisch truc van wiskundig denken: concentreer je op wat relevant is en vergeet de rest. Voor berekeningen van de grootste gemene deler en voor het werken met een veeltermring modulo een veelterm is dat heel handig. Nu gaan we kijken naar veeltermfuncties en met name ook naar nulpunten van veeltermfuncties. In dat verband gaan we ook kijken naar het ontbinden van veeltermen. In het hoofdstuk over complexe getallen heb je vast al het idee gekregen, dat een veeltermfunctie over de complexe getallen in het algemeen twee nulpunten heeft: die kun je berekenen met kwadraatafsplitsen of met de bekende formule; dankzij het feit dat je uit ieder complex getal de wortel kunt trekken, krijg je dan oplossingen. Daarmee kun je ook iedere tweedegraads veelterm in de complexe getallen ontbinden als een product van twee eerstegraads veeltermen. Deze eigenschappen en verdergaande versies daarvan maken de complexe getallen aantrekkelijk. Ook al bestaan er nulpunten van een veeltermfunctie, ook al weet je dat een veelterm een product is van veeltermen, hoe je de betreffende objecten kunt uitrekenen is vaak verre van simpel. Sterker nog, je kunt bewijzen dat voor het vinden van de (exacte) nulpunten van een veeltermfunctie van graad 5 of hoger over de re¨ele of de complexe getallen geen algoritme bestaat. Voor het vinden van benaderingen zijn er echter allerlei zeer bruikbare algoritmen geconstrueerd. Voor ontbindingen van veeltermen over Q, Z en Fp (met p priem) zijn er met name de laatste jaren goede algoritmes geconstrueerd. In dit hoofdstuk komen de elementaire zaken op het gebied van nulpunten en ontbinden in factoren van veeltermen aan de orde.
7.1 Veeltermfuncties Om van een ‘abstracte’ veelterm een functie te maken, gebruiken we in dit hoofdstuk de ad hoc notatie, die je al eerder bent tegengekomen: (7.1) notatie: F(f, domein, X).
Als f een veelterm in X is, dan zullen we de bijbehorende functie noteren als
(7.2) voorbeeld: Neem de veelterm 3X 2 + 5X − 7 F(3X 2 + 5X − 7, R, X) =
de functie van R naar R :
x 7→ 3x 2 + 5x − 7
In veel gevallen, waarin toch duidelijk is wat de onbepaalde is in een uitdrukking, zullen we het laatste argument weglaten; in dit geval zouden we dan F(3X 2 + 5X − 7, R) schrijven. En in gevallen waarin het domein van de functie uit de context ook duidelijk is, kan
130
7. Veeltermen ontbinden, nulpunten
eventueel ook het tweede argument wegvallen en kun je schrijven F(3X 2 + 5X − 7) schrijven. Dus je kunt dan noteren: F(3X 2 + 5X − 7)(10) = 3 · 100 + 5 · 10 − 7 = 343 einde voorbeeld opgave 7.1 — oefening Laat zien dat de functie F(X 7 + 1, F7 , X) hetzelfde is als de functie F(X + 1, F7 , X) omdat bij ieder origineel beide functies dezelfde functiewaarde geven. opgave 7.2 — oefening Laat zien dat de functie F(X 4 , Z4 , X) hetzelfde is als de functie F(X 2 , Z4 , X)
7.2 Nulpunten en ontbinding We zullen in het vervolg veelvuldig gebruik maken van het volgende idee: laat K een lichaam zijn en f een veelterm over dat lichaam. Als je f kunt schrijven als een product van veeltermen f = g · h waarbij g een eerstegraads veelterm is, dan kun je een nulpunt van de bijbehorende veeltermfunctie F(f, K, X) aflezen. Dat is volkomen duidelijk, maar hier is een bijbehorende redenering om even aan de notatie te wennen. Stel maar dat g = aX + b
dus
f = (aX + b) · h
met a 6= 0 (anders zou het geen eerstegraads veelterm zijn), dan bestaat het getal − ab in K (want K is een
lichaam) en
b b b F(f, K, X)(− ) = F(g, K, X)(− ) · F(h, K, X)(− ) a a a b b = (a · (− ) + b) · F(h, K, X)(− ) a a b = 0 · F(h, K, X)(− ) = 0 a Nu omgekeerd: stel dat je een nulpunt hebt, kun je dan ook een eerstegraads deler vinden? Je zou zo denken: als a een nulpunt is van een veelterm in X, dan is vast X − a een deler van die veelterm. Dat vermoeden gaan we beredeneren:
7.3
Delers van veeltermen over de complexe getallen
131
bewijs: Laat f een veelterm in X zijn over een lichaam K en laat F(f, K, X)(a) = 0 We kunnen f delen met rest door X − a; dat levert f = q · (X − a) + r waarbij r = 0 of r is van graad 0, want de graad van X − a is 1. We combineren beide formules: 0 = F(f )(a) = F(q · (X − a) + r)(a) = 0 + r = r want F(r) is een constante functie met functiewaarde r. Dus f = q · (X − a) Resultaat: (7.3) stelling: Laat f een veelterm in X over een lichaam K zijn en a een element van K. Dan is X − a een deler van f dan en slechts dan als a een nulpunt van de functie F(f, K, X) is. Opgave opgave 7.3 — oefening a. Los op in Z16 : ?x ∈ Z16 :
x2 − 1 = 0
Tip: er zijn maar 16 mogelijkheden. Probeer ze allemaal! b. Geef twee ontbindingen van de veelterm x 2 − 1 in Z16 . opgave 7.4 — uitdager a. Los op in Z65 : ?x ∈ Z65 :
x2 + 1 = 0
Als je alle elementen van Z65 wilt uitproberen, kun je dat misschien sneller doen via programmeren. b. Geef twee verschillende ontbindingen van de veelterm x 2 + 1 in Z65 . opgave 7.5 — tentamenopgave Ontbind X 16 − 1 in Z17 in zo veel mogelijk factoren.
7.3 Delers van veeltermen over de complexe getallen We hebben al gezien dat iedere tweedegraads functie over de complexe getallen nulpunten heeft. Twee eeuwen geleden, in 1799, heeft de grote wiskundige Gauss voor het eerst beredeneerd dat iedere veeltermfunctie met graad minstens 1 over de complexe getallen een nulpunt heeft. Die stelling wordt de hoofdstelling van de algebra genoemd. Er zijn sindsdien talloze bewijzen voor deze stelling verschenen, maar we laten hier een bewijs achterwege: het benodigde goochelen met algebra¨ısche uitbreidingen voert hier wat ver. Uit
132
7. Veeltermen ontbinden, nulpunten
deze stelling volgt meteen, dat iedere complexe veelterm een eerstegraads deler heeft. Als je daardoor deelt, krijg je weer een veelterm over de complexe getallen. Als die niet nuldegraads is, dan heeft die volgens de stelling ook weer een nulpunt en kun je dus weer door een eerstegraads veelterm delen. Zo kun je doorgaan tot je op een nuldegraads veelterm uitkomt. Daarmee krijgen we het volgende resultaat als uitgebreide versie van de al genoemde stelling: (7.4) hoofdstelling van de algebra: Zij f een veelterm over C van graad n met n ≥ 1. Dan heeft de bijbehorende functie F(f, C) een nulpunt. Gevolg: (7.5) stelling: Iedere veelterm over de complexe getallen met graad n ≥ 1 is te ontbinden in een product van n eerstegraads veeltermen. De bewijzen van deze stelling zijn niet constructief: ze vertellen niet hoe je zo’n nulpunt echt kunt berekenen. De stelling is dan ook niets anders dan een (belangrijk) theoretisch stuk gereedschap. Sterker nog: er kan worden bewezen dat er geen algoritme bestaat waarmee je de nulpunten van veeltermen van graad 5 en hoger exact kunt berekenen.
7.4 * Delers van veeltermen over de re¨ ele getallen Zoals je al lang weet, kun je sommige tweedegraads veeltermen over de re¨ele getallen ontbinden en andere niet: dat hangt ervan af of de discriminant groter of gelijk dan wel kleiner dan 0 is. (7.6) definitie: Een veelterm die geen delers met graad groter dan 0 heeft, noemen we irreducibel. Bij derdegraads veeltermen geldt dat de bijbehorende functie voor heel grote of heel negatieve originelen gedomineerd wordt door de derdegraads term: laat f de functie op R zijn: f : x 7→ a3 x3 + a2 x2 + a1 x + a0 met ai ∈ R en a3 6= 0. Als | x | heel groot is (zeg: aanzienlijk groter is dan
ai a3
voor elke i < 3), dan
kun je procentueel f (x) aardig goed benaderen met a 3 x3 . Als a3 dan bijvoorbeeld negatief is, dan is a 3 x3
positief voor x negatief en a3 x3 is negatief voor x positief. Voor a3 positief is het net andersom. Je ziet daarmee dat de functie ergens positieve en ergens negatieve functiewaarden heeft. Omdat de functie continu is, dus doorlopend, is er ook ergens ertussenin een nulpunt. Dus een derdegraads veelterm over R heeft een eerstegraads deler. Het quotient is dan een tweedegraads veelterm; die kan irreducibel zijn of het product van twee eerstegraads veeltermen. Laten we nu eens een vierdegraads veelterm over R bekijken: f = a 4 X 4 + a3 X 3 + a2 X 2 + a1 X + a 0 Als de bijbehorende re¨ele functie een (re¨eel) nulpunt heeft, dan heeft f een eerstegraads deler (en het quotient is derdegraads, dus ook die heeft nog weer een eerstegraads deler). Stel nu maar eens dat die bijbehorende re¨ele functie geen nulpunten heeft. Dan kunnen we natuurlijk wel de bijbehorende complexe functie maken: F(f, C, X) : C → C : z 7→ a4 z 4 + a3 z 3 + a2 z 2 + a1 z + a0 Volgende de hoofdstelling van de algebra heeft die wel een nulpunt, zeg z 0 : a4 z0 4 + a 3 z0 3 + a 2 z0 2 + a 1 z0 + a 0 = 0
7.5 * Delers van veeltermen over de rationale getallen
133
We weten dat alle co¨effici¨enten re¨eel zijn, dus dat hun complexe geconjugeerden eraan gelijk zijn. Dat gaan we gebruiken; we nemen de complexe geconjugeerde van de hele uitdrukking: dat levert: a4 z0 4 + a 3 z0 3 + a 2 z0 2 + a 1 z0 + a 0 = 0 Dus blijkbaar is z0 ook een nulpunt van die functie. Daarmee vinden we dat X − z 0 en X − z0 beiden delers
zijn van de complexe veelterm a4 X 4 + a3 X 3 + a2 X 2 + a1 X + a0 , dus ook (X − z0 ) · (X − z0 ) is een deler van die complexe veelterm. Maar (X − z0 ) · (X − z0 ) = X 2 − (z0 + z0 X + z0 · z0 ) = X 2 − 2Re(z0 )+ | z0 |2 en dat is een veelterm met re¨ele co¨effici¨enten, die dus deler is van de complexe veelterm a 4 X 4 + a3 X 3 + a2 X 2 + a1 X + a0 . We werken nu met complexe veeltermen, dus het quotient is een complexe veelterm, maar doordat de a4 X 4 +a3 X 3 +a2 X 2 +a1 X +a0 en die tweedegraads deler ervan alleen re¨ele co¨effici¨enten heeft, heeft het quotient ook alleen re¨ele co¨effici¨enten; dat mag je hieronder even gaan bewijzen. Daarmee vinden we dus een re¨ele tweedegraads deler van f . Algemeen: (7.7) stelling: Iedere re¨ele veelterm is het product van eerste- en tweedegraads veeltermen. Opgaven opgave 7.6 — uitdager Gebruik de idee¨en en resultaten van bovenstaande paragraaf om de bovenstaande stelling te beredeneren. opgave 7.7 — oefening Ontbind in R[X] de veelterm X 4 + 1. opgave 7.8 — oefening Ontbind in factoren in R[X]: X 8 + (8X)2 . opgave 7.9 — uitdager Laat f een veelterm zijn in Q[X]. Beredeneer of de volgende uitspraak waar is: f is irreducibel ⇒ de functie F(f, Q) heeft geen nulpunten. voor de volgende gevallen: a. f heeft graad 2 b. f heeft graad 3 c. f heeft graad 4
7.5 * Delers van veeltermen over de rationale getallen Voor veeltermen in Q[X] zijn er algoritmes die een ontbinding in irreducibele factoren opleveren. De eerste, vrij simpele stap is het omzetten van zo’n probleem in een probleem om een veelterm in Z[X] te ontbinden in irreducibele factoren. Die omzetting is gemakkelijk te begrijpen: Stel dat f , g en h veeltermen in Q[X] zijn zodat f = g · h. Er is een geheel getal m zodat de co¨effici¨enten van m · g allemaal geheel zijn en geen andere gemene delers dan −1 en 1 hebben. We kunnen m · g gaan opvatten als een veelterm over Z; die zullen we gZ noemen. Het feit dat de grootste gemene deler van alle co¨effici¨enten 1 is drukken we uit door
134
7. Veeltermen ontbinden, nulpunten
te zeggen dat gZ primitief is. Zo kunnen we eveneens een geheel getal n vinden zodat n · h alleen gehele co¨effici¨enten heeft, waarvan de ggd 1 is, dus zo krijgen we een primitieve veelterm h Z . Nu is gZ · hZ een veelterm in Z[X]. Het is zelfs een primitieve veelterm: stel maar eens dat de grootste gemene deler van de co¨effici¨enten van gZ · hZ niet 1 is. Dan is er dus zeker een priemgetal p zodat alle co¨effici¨enten modulo p gelijk aan 0 zijn, Laten we ook de co¨effici¨enten van g Z en hZ modulo p nemen. Dan krijgen we veeltermen gp en hp in Fp [X], waarvan het product 0 is. Maar omdat p priem is, zijn er geen nuldelers in F p en dus is de hoogstegraads term van e´ e´ n van beide veeltermen 0. Dus g p = 0 of hp = 0, dus van e´ e´ n van de twee veeltermen gZ of hZ zijn alle co¨effici¨enten deelbaar door p. Dat is in strijd met de aanname. Gevolg: gz · hZ is eventueel op het teken na precies de primitieve veelterm die je kunt krijgen door f met een geheel getal te vermenigvuldigen. Gevolg: als je een veelterm f met rationale co¨effici¨enten wilt ontbinden, dan kun je die veelterm met een geheel getal vermenigvuldigen, zodat je een primitieve veelterm f Z krijgt; als f te ontbinden is in Q[X], dan is fZ te ontbinden is Z[X]. En als f niet te ontbinden is in Q[X], dan is vanzelfsprekend fZ zeker niet te ontbinden in Z[X]. Daarmee hebben we gezien dat we alleen maar hoeven te kijken naar ontbinden in Z[X].
7.6 * Het ontbinden van veeltermen in Z[X] en Fp [X] Voor het ontbinden in irreducibele factoren van veeltermen in Z[X] was al lang een algoritme bekend dat gebaseerd was op het ontbinden in factoren van de co¨effici¨enten van die veelterm (Kronecker, 1823-1891). Als die co¨effici¨enten een beetje groot zijn moeten er zoveel mogelijkheden worden onderzocht dat het niet leuk meer is, zelfs op snelle computers. De laatste jaren zijn er snelle methodes ontwikkeld (met name het algoritme van Berlekamp (1970) en verdere ontwikkelingen) om veeltermen met co¨effici¨enten in F p en andere, nog niet behandelde eindige lichamen te ontbinden en die ontbindingen weer te gebruiken om ontbinding in factoren van veeltermen over Z te benutten. Het zijn gecompliceerde, maar in de praktijk effici¨ente algoritmes, die in computer algebra systemen als Maple ook ge¨ımplementeerd zijn (commando factor).
Antwoorden en aanwijzingen
Antwoorden en aanwijzingen van hoofdstuk 1 1.1 a. 3, 11 b. −4, 2 c. −3, 11 d. 4, 2 1.2
Correcties: rest(a + b , c) = rest(rest(a , c) + rest(b , c) , c) rest(n · a , c) = rest(n · rest(a, c)) , c)
Om dit te beredeneren: schrijf a = a0 + ic en b = b0 + jc met i en j geheel en 0 ≤ a0 < c en 0 ≤ a0 < c en werk daarmee de formules uit. 1.3 b. Een getal is deelbaar door 4 als het getal gevormd door de laatste 2 cijfers in 10-tallige schrijfwijze deelbaar is door 4. De cijfers in de notatie geven van rechts naar links gelezen de enen, de tientallen, de honderdtallen, de duizendtallen, enz. . Nu zijn honderdtallen, duizendtallen, enz. veelvouden van 100, dus van 4. Je hoeft dus alleen naar de laatste twee cijfers te kijken: als je het getal dat gevormd wordt door de laatste twee cijfers deelt door 4, dan krijg je als rest precies het gevraagde. d. Een getal is deelbaar door 9 als de som van de cijfers in 10-tallige schrijfwijze deelbaar is door 9. Nu 1457 = 1000 + 400 + 50 + 7. Verder is 1000 = 999 + 1, dus een 9-voud plus 1. En 400 = 4 · (99 + 1) = 4 · 99 + 4, dus een 9-voud plus 4. Verder is 50 natuurlijk een 9-voud plus 5: het is 5 · (9 + 1) = 5 · 9 + 5. Tenslotte is 7een 9-voud plus 7. Samen: een 9-voud plus 1 + 4 + 5 + 7 = 17, dus een 9-voud plus 8. Generaliseer deze redenering nu maar zelf! e. Een getal is deelbaar door 3 als de som van de cijfers in 10-tallige schrijfwijze deelbaar is door 3. Redenering gaat als bij het vorige onderdeel. f. Een getal is deelbaar door 11 als de som van de cijfers op oneven plaatsen in 10-tallige schrijfwijze min de som van de cijfers op de even plaatsen deelbaar is door 11. 1.5
Als b = pa en c = qa, neem t := np + mq, dan a | n · b + m · c = ta.
1.10 a. Nee: 301 = 7 · 43 b. Ja. c. Nee: 1001 = 7 · 11 · 13 1.12 a. 59 b. p = −29, q = 13 c. 26 d. p = 501, q = −1346
136 1.13
Antwoorden en aanwijzingen
. . . is n een veelvoud van ggd(a, b).
1.16 a. 14 b. 14 = 7 · 546 − 16 · 238 c. Nee: bijvoorbeeld 14 = 7 · 546 + 9282 − 16 · 238 − 9282 = (7 + 17) · 546 − (16 + 39) · 238 1.17 a. 442 = 2 × 170 + 102, 170 = 1 × 102 + 68, 102 = 1 × 68 + 34, 68 = 2 × 34 + 0 Dus ggd(170, 442) = 34 b. 34 = 102 − 68 = 102 − (170 − 102) = 2 × 102 − 170 = 2 × (442 − 2 × 170) − 170 = 2 × 442 − 5 × 170 Dus 34 = −5 · 170 + 2 · 442 c. Nee, bijvoorbeeld 34 = 8 · 170 − 3 · 442. 1.20
Er zijn gehele getallen p en q zodat d = pa + qb
We delen door d. dan krijgen we: 1=p·
a b +q· d d
Gebruik nu stelling (1.23) op bldz. 24, dan volgt hieruit dadelijk dat
a d
en
b d
relatief priem zijn.
1.21 a. We gebruiken, dat er gehele getallen p en q zijn zodat pa + qb = 1
(1)
Verder vertalen we het deler zijn: er zijn gehele getallen r en s met c = ra
en
c = sb
(2)
We moeten nu er naartoe werken dat c een veelvoud van ab is. Om in die richting te komen vermenigvuldigen we formule (1) met c: pac + qbc = c En nu moeten we met formule (2) van de linkerkant een veelvoud van ab proberen te maken: pasb + qbra = c (ps + qr)ab = c Inderdaad zien we dat c veelvoud van ab is. b. Nee: neem a = 3, b = 2, c = 6. 1.22
Er zijn getallen p, q, r en s zodat pa + qc = 1
en
rb + sc = 1
137
Antwoorden en aanwijzingen
We willen iets met ab construeren. Dat kan o.a. zo: pa = 1 − qc
en
rb = 1 − sc
dus
parb = (1 − qc)(1 − sc)
(pr)(ab) = 1 − sc − qc + qsc2 (pr)(ab) + (s + q − qsc)c = 1 Dus ab en c zijn relatief priem. 1.23
Eerst zoeken we via Euclides ggd(238, 770) = 14
en terugrekenen 14 = 13 · 238 − 4 · 770 een oplossing: vermenigvuldig met 8: 112 = 104 · 238 − 32 · 770 We nemen nu een algemene oplossing en trekken daar deze speciale van af: 238 · x 238 · 104 238 · (x − 104)
+ 770 · y + 770 · (−32) + 770 · (y + 32)
= 112 = 112 = 0
Dus 238 · (x − 104) = −770 · (y + 32) We willen hier gebruik maken van stelling (1.25) op bldz. 25, maar daartoe moeten we eerst nog 238 en 770 delen door hun ggd: 17 · (x − 104) = −55 · (y + 32) Nu zijn 17 en 55 relatief priem en 17 is deler van 55 · (y + 32), dus y + 32 is 17-voud, dus er is een k ∈ Z met y + 32 = 17k, dus y = −32 + 17k. Dat invullen en uitwerken levert x = 104 − 55k. Conclusie: als x en y voldoen aan de vergelijking, dan is er een geheel getal k zodat x = 104 − 55k, y = −32 + 17k Omgekeerd, als k ∈ Z dan 238(104 − 55k) + 770(−32 + 17k) = 24752 − 13090k − 24640 + 13090k = 112 dus voor alle k ∈ Z krijgen we zo een oplossing. Oplossingen dus x = 104 − 55k, y = −32 + 17k
met
k∈Z
1.24
p = 501 + k · 3223, q = −1346 − k · 8659
1.25
Bereken eerst ggd(21, 78): 78 = 3 ∗ 21 + 15 21 = 1 ∗ 15 + 6 15 = 2 ∗ 6 + 3 6=2∗3
met
k∈Z
138
Antwoorden en aanwijzingen
dus ggd(21, 78) = 3. Terug rekenen: 3 = 15 − 2 · 6 = 15 − 2 · (21 − 15) = 3 · 15 − 2 · 21 = 3 · (78 − 3 · 21) − 2 · 21 = 3 · 78 − 11 · 21 Dus 3 = 3 · 78 − 11 · 21 12 = 12 · 78 − 44 · 21 Een oplossing is dus: n = −44, k = 12.
Dat vullen we in bij de formule van stelling (1.28) op bldz. 29: n = −44 + 26t, k = 12 − 7t
met
t∈Z
1.26 20 + 150s = een 211-voud, zeg = t · 211 Dat doet denken aan de ggd: 211t − 150s = 20 Gebruik Euclides voor ggd(211, 150) en reken terug, dat levert s = 1660. Omdat ggd(211, 150) = 1 kun je hier volgens stelling (1.28) nog een 211-voud bijtellen: s = −1660 + k · 211 1.27
met k geheel
Lees de zin goed, dan krijg je de vraag of er gehele m en n bestaan zodat 308 · n = 42 + 182 · m
oftewel 308 · n − 182 · m = 42 We bepalen de ggd: ggd(308, 182) = 14 en door terugrekenen vinden we: 14 = 3 · 308 − 5 · 182
(3)
42 = 9 · 308 − 15 · 182 Met de stelling (1.28) vinden we: 182 308 · k, m = 15 − ·k |t∈Z 14 14 Terug naar de feitelijke vraag! De gevraagde veelvouden van 308 zijn dus 308·(9+t·13), dus 2772+4004t met t ∈ Z. Let op: hier komt een vaak gemaakte FOUTE oplossing. Vanuit formule (3) kun je met behulp n=9−
van bijvoorbeeld stelling (1.21) op bldz. 22 opschrijven: 14 = (3 + 13t) · 308 − (5 + 22t) · 502 Dat vermenigvuldigen met 3 levert: 42 = (9 + 39t) · 308 − (15 + 66t) · 502 en hier kun je als oplossingen gemakkelijk aflezen: n = 9 + 39t | t ∈ Z
maar dat is ONVOLLEDIG!
We krijgen zo wel goede oplossingen, maar NIET ALLE mogelijkheden. Deze aanpak levert dus een on-
139
Antwoorden en aanwijzingen
volledige oplossing. De volledige oplossing vind je dus door stelling (1.28) toe te passen of door te stellen dat je nog een andere oplossing hebt en dan over het verschil te gaan redeneren. 1.28 a. 777 000 b. 1575 1.30 b. Je moet in ieder geval beredeneren dat jouw algoritme termineert en dat het een goed resultaat oplevert. Dat laatste gaat ook hier weer eens handig door naar iets invariants te kijken, zoiets als: in iedere stap is het gegeven (te ontbinden) getal gelijk aan . . . (vul zelf in wat past bij jouw algoritme). Daarmee kun je invoer en uitvoer van de benodigde functies specificeren. 1.32 Stel dat a | b, dan is er een geheel getal c zodat b = ac en dus is de graad van p in b de som van de graden van p in a en c, dus is de graad van p in b minstens even groot als de graad van p in a. 1.33 a. 22 · 32 b. 23 · 3 · 5 c. 24 · 32 · 5 · 7
1.34 Neem de priemfactorontbinding van c en daarvan e´ e´ n van de priemfactoren, dus laat p een priemgetal zijn dat deler is van p. Dan is p volgens het gegeven ggd(a, c) = 1 geen deler van a en zo ook geen deler van b. De (eenduidig vastliggende) priemfactorontbinding van ab kun je krijgen door de priemfactorontbindingen van a en b te combineren. Daarin komt die p dus niet voor. Hieruit zie je dat geen van de priemfactoren van c voorkomen in de priemfactorontbinding van ab, dus dat ab en c geen gemene factoren hebben. 1.35
De graad van p in ggd(a, b) is het minimum van de graden in a en in b van p.
1.36 a. We krijgen r door delen met rest: n = qk + r
met r < k of r = 0
Verder geldt dat n een veelvoud is van a volgens de gegevens en dat k een veelvoud van a is (kleinste gemene veelvoud!), dus is r een veelvoud van a. Net zo voor b. b. r is volgens het voorgaande onderdeel een gemeen veelvoud van a en van b, maar - k is het kleinste gemene veelvoud van a en b dat niet 0 is - r is rest bij deling door k, dus r < k of r = 0 Er blijft maar e´ e´ n mogelijkheid: r = 0. c. We hebben gevonden: rest(n, k) = 0 d.w.z. n is deelbaar door k. Dus ieder getal dat zowel deelbaar is door a als door b is deelbaar door kgv(a, b).
Antwoorden en aanwijzingen van hoofdstuk 2 2.1
a. 31457 + 34564326 = 3145 × 10 + 7 + 3456432 × 10 + 6 = een 10-voud + 13, dus cijfer 3.
140
Antwoorden en aanwijzingen
b. 31457 × 34564326 = (3145 × 10 + 7) × (3456432 × 10 + 6) = een 10-voud + 42, dus cijfer 2. c. 31457 × 31457 × 31457 = (3145 × 10 + 7) × (3145 × 10 + 7) × (3145 × 10 + 7) = een 10-voud + 343, dus cijfer 3. enz. 2.2 m is deler van 101 − 5 = 96, dus m = 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 96 2.3 a. rest(6 + rest(10, 23), 23) = rest(16, 23) = 16 b. rest(6 + rest(50, 23), 23) = rest(10, 23) = 10 c. rest(6 + rest(90, 23), 23) = rest(6 + 21, 23) = 4 d. rest(6 + rest(−10, 23), 23) = rest(6 + 13, 23) = 19 e. rest(2 × 6, 23) = 12
f. rest(4 × 6, 23) = 1 g. rest(10 × 6, 23) = 14 h. g. rest(rest(1000 000, 23) × rest(1000 000, 23), 23) = rest(36, 23) = 13 2.4 a0 = a + i · m b0 = b + j · m Dus a0 + b0 =(a + i · m) + (b + j · m) = =a+b+i·m+j ·m= = a + b + (i + j)m dus a + b en a0 + b0 verschillen een m-voud en hebben dus dezelfde restklasse. 2.6
We gaan rekenen modulo 23. Uit het gegeven lezen we: 1 000 000 = 6
a. 1 000 010 = 1 000 000 + 10 = 6 + 10 = 16 enz. 2.7 Hier komt een redenering voor delen door 11: Noem de cijfers van rechts naar links c 0 , c1 , c2 , . . .. We kijken dus naar het getal n = c0 + c1 · 101 + c2 · 102 + c1 · 103 + c4 · 104 + . . . We gaan nu modulo 11 rekenen, dan 10 = −1 10 = 1 10 = −1 10 = 1 ... Dus
141
Antwoorden en aanwijzingen
n = c 0 − c1 + c2 − c3 + c4 − c5 + . . . Dus rest(n, 11) = rest(rest(c0 − c1 + c2 − c3 + c4 − c5 + . . . , 11), 11) Kortom: tel de cijfers met om en om verschillend teken bij elkaar en neem daarvan de rest bij delen door 11. Als die 0 is, is het een 11-voud. 2.8 a. Vertaal onmiddellijk naar een probleem in Z: laat x = n. Dan wordt het nieuwe probleem: ?n ∈ Z : 12 · n = 20
in
Z63
oftewel: ?n, k ∈ Z
: 12n = 20 + 63k
?n, k ∈ Z :
12n − 63k = 20
Geen oplossingen: links staat een 3-voud, rechts niet. b. Vertaal onmiddellijk naar een probleem in Z: laat x = n. Dan wordt het nieuwe probleem: ?n, k ∈ Z :
12n = 20 + 64k
?n, k ∈ Z :
12n − 64k = 20
Deel door 4: ?n, k ∈ Z :
3n − 16k = 5
Door terugrekenen met Euclides (of even proberen) krijg je een oplossing: n = 5 · (−5) = −25, k = 5 · (−1) = −5. Omdat ggd(3, 16) = 1 krijgen we als oplossingen n = −25 + 16t, k = −5 + 3t. Voor x in Z64 krijgen we zo x=7
of
x = 23
of
x = 39
of
x = 55
c. Laat x = n met n ∈ Z. De vergelijking in Z 65 levert de volgende vergelijking in Z: ?n, k ∈ Z :
12n − 65k = 20
Met het Euclidesalgoritme en terugrekenen vinden we: 5 · 65 − 27 · 12 = 1 100 · 65 − 540 · 12 = 20 omgeschreven naar de vorm van formule (4) op bldz. 141: 12 · (−540) − 65 · (−100) = 20 We lezen af: n = −540. Omdat ggd(12, 65 = 1 krijgen we: n = −540 + 65t
met
t∈Z
x = 45 . 2.9 a. Onmiddellijk omgezet naar Z met x = n:
(4)
142
Antwoorden en aanwijzingen
?n, k ∈ Z :
78n − 2366k = 182
(5)
Euclides levert ggd(78, 2366) = 26 en terugrekenen levert: 26 = −30 · 78 + 1 · 2366 Maal 7: 182 = −210 · 78 + 7 · 2366
(6)
Een oplossing is dus n = −210, k = −7. De algemene oplossing is n = −210 +
2366 t = −210 + 91t ggd(78, 2366
Terug naar x: x = −210 + 91 · t met x = 63 2.10
of
x = 154
t∈Z of
x = 245 . . .
of
x = 2338
Omgezet in een vergelijking in Z: ?n, k ∈ Z :
21n − 35k = 27
Links staat een 7-voud, rechts niet. Dus er is geen oplossing. 2.11 a. x = 5 + een 11-voud b. x = 138 2.12
a. 2, 3, 4, 5, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28.
b. 3, 6, 9, 12, 15, . . . , 72, 75, 78 2.13
a. Die zijn er niet.
b. 2, 4, 6, 7, 8, 10, 12 c. 2, 4, 5, 6, 8, 10, 12, 14, 15, 16, 18 d. 5, 10, 15, 20 e. 3, 6, 9, 12, 15, 18, 21, 24, 27 2.14 2.15
3 8 = 13n + 151k
Met Euclides en terugrekenen: n = 140 + een 151-voud Resultaat: 140. 2.17 a. We moeten laten zien dat er precies e´ e´ n getal k is zodat k · 5 = 2. We zoeken gehele getallen k zodat er een geheel getal i is zodat 5k + 136i = 2 Als we de ggd van 5 en 136 berekenen (die is natuurlijk 1) en terugrekenen krijgen we 1 = 1 · 136 − 27 · 5
143
Antwoorden en aanwijzingen
We zien als oplossing k = −27 · 2 = −54, i = 1 · 2 = 2. We passen nu stelling (1.28) op bldz. 29 toe: k = −54 + 136t
met
t∈Z
Omzetten naar modulo 136 levert (wegens 136 = 0) dat: k = −54 = 82 Er is dus precies e´ e´ n getal k dat voldoet. b. We moeten bewijzen dat er precies e´ e´ n getal k is zodat k · a = 2. Gegeven is dat ggd(n, 136) = 1 We zoeken nu gehele getallen k zodat er een geheel getal i is zodat n · k + 136 · i = 2 Uit stelling (1.28) op bldz. 29 weten we dat er zo’n oplossing bestaat en dat alle oplossingen voor k onderling een 136-voud verschillen. Als we modulo 136 gaan rekenen krijgen we dus dat k vastligt. 2.19 a. Als k in Zn·m een eenheid is, dan ggd(k, n · m) = 1, dus zeker ggd(k, m) = 1, dus k in Z m is een eenheid. 2.20
Stel dat a · b = 0 en dat a 6= 0. Dan heeft a een inverse a −1 (eigenschap h.) en dus a−1 · (a · b) = a−1 · 0
Volgens eigenschappen f. en g.: (a−1 · a) · b = a−1 · 0 1 · b = a−1 · 0 b = a−1 · 0 We moeten nu nog even beredeneren dat a −1 · 0 = 0. Dat kan bijvoorbeeld z´o: a−1 · 0 = a−1 · (0 + 0) = a−1 · 0 + a−1 · 0
Trek links en rechts a−1 · 0 af (met eigenschap b. en d.):
a−1 · 0 − a−1 · (0 + 0) = a−1 · 0 + a−1 · 0 − a−1 · 0 0 = a−1 · 0
2.21 a. a2 = 1 a2 − 1 = 0 (a + 1)(a − 1) = 0 Er zijn geen nuldelers, dus a + 1 = 0 of a − 1 = 0, dus a = −1 of a = 1.
b. Reken maar na: 1, −1, 3, −3
144
Antwoorden en aanwijzingen
2.22 a. Er staat in feite: 4x = 3 + 9k
met
k∈Z
4x − 9k = 3
met
k∈Z
Met Euclides (of even proberen) vind je een oplossing: x = 3 Omdat ggd(4, 9) = 1 krijg je algemeen x = 3 + 9t oftewel x ≡ 3 b. Vertaald:
met
t∈Z
(mod 9)
20x = 4 + 30k 20x − 30k = 4 Links staat een 5-voud, rechts niet. Geen oplossingen c. Vertaald: 20x − 4k = 36 Een oplossing is x = 1, n = −4, alle oplossingen krijg je met x=1+
4 t = 1 + t met ggd(20, 4)
t∈Z
Oplossing: x ∈ Z: ieder geheel getal voldoet. d. x ≡ 4 (mod 7) (Let op: niet modulo 35!!) 2.23 a. x ≡ 64 (mod 89) b. Geen oplossingen. c. x ≡ 9 (mod 13) 2.24 a. Gewoon testen: 02 ≡ 0
(mod 4)
12 ≡ 1
(mod 4)
22 ≡ 0
(mod 4)
32 ≡ 1
(mod 4)
en meer hoeven we niet te testen. b. Dat getal eindigt op 71 en dus ≡ 3 2.25
(mod 4), dus het is geen kwadraat.
Tip: reken modulo 7.
Antwoorden en aanwijzingen van hoofdstuk 3 3.1
1000100bin , 1010101bin , 10110bin , 1bin , 1110110001bin
145
Antwoorden en aanwijzingen
3.4 a. 111100bin + 011001bin = 010101bin = 21dec b. Je zou het in principe z´o kunnen doen: 000100 bin − 011001bin ≡ 101010bin
(mod 1000000bin ) maar
je zou ook 4 + (−25) kunnen berekenen: 000100 bin + 100110bin + 101010bin d. Overflow! h. Overflow! 3.5 Voorbeeld: in 8-bits gehele getallen: het tegengestelde van 0010 1101 is 1101 0011, want als je die bij elkaar optelt krijg je precies 1 0000 0000 en omdat het 9-de cijfer wegvalt wordt dat in 8 bits: 0000 0000. Jij krijgt in feite het tegengestelde door eerst alle bits om te zetten: een 0 wordt een 1 en omgekeerd, en dan nog eens 1 er bij op te tellen. 3.6 Typen: int, short int, long int. Voor natuurlijke getallen (dus niet-negatieve gehele getallen) zijn er de typen unsigned int, unsigned short int, unsigned long int. Het bereik is afhankelijk van de implementatie. Mogelijk vindt je met behulp van sizeof: • int: 32 bits: −231 tot 231 − 1 = 2 147 483 647
• short: 16 bits: −215 tot 215 − 1 = 32 767
• long: 64 bits: −263 tot 263 − 1 = 9 223 372 036 854 775 807
• unsigned int: 32 bits: 0 tot 232 − 1 = 4 294 967 295
• unsigned short: 16 bits: 0 tot 216 − 1 = 65 535
• unsigned long: 64 bits: 0 tot 264 − 1 = 18 446 744 073 709 551 715
Antwoorden en aanwijzingen van hoofdstuk 4 4.1 a. x ≡ 33
(mod 52)
b. n = 1325
(mod 4480)
4.2 a. Geen oplossing: je krijgt zoiets als 15p − 39q = −8 Links staat een 3-voud, rechts niet. b. x = 13 + 15p
en
x = −5 + 39q
We lossen eerst op 15p − 39q = −18 Dat levert (let op de getallen 13 en 5 in onderstaande!): p = 4 + 13k, q = 2 + 5k Invullen levert dan x ≡ 73
(mod 195)
146
Antwoorden en aanwijzingen
4.3
We lossen eerst op: ( x ≡ 3 (mod 4) x≡4
(mod 5)
Dat levert x ≡ 19 (mod 20) Nu combineren we dit met de laatste vergelijking: ( x ≡ 19 (mod 20) x≡3
(mod 7)
Resultaat: x ≡ 59
(mod 140)
4.4 Eerst lossen we het stelsel bestaande uit de eerste twee vergelijkingen op. Dat levert: n ≡ 400 (mod 45 ∗ 98). We krijgen zo het stelsel ( n ≡ 400 (mod 4410) n ≡ 60
(mod 109)
Dat stelsel levert: n = 66550
(mod 45 · 98 · 109).
Dat getal is 23 plus een 105-voud.
4.5
4.6 a. a = 8, b = 10, c = 11, d = 3 b. 51, 45, −8
c. (3, −6), (−37), (8, −8) d. 3 · (−5) · 19 + (−6) · (6 · 16 = −861 = 51 (−3) · (−5) · 19 + 7 · (6 · 16 = 957 = 45 8 · (−5) · 19 + (−8) · (6 · 16 = −8 4.7
1, 1, 1, 3
4.8
Als je de rij van machten uitrekent, blijkt 6
3 =1 Dus ook 3
96
6
= (3 )1 6 = 1
16
=1
Daarmee: 3
100
4
=3 =4
4.9 0
1
2
3
4
a. 2 = 1, 2 = 2, 2 =≤ 4, 2 = 1, 2 = 2, . . . Exponent een 3-voud levert 1, exponent een 3-voud +1 levert 2, exponent een 3-voud +2 levert 4. Dat kun je gemakkelijk bewijzen met volledige inductie, met als inductiehypothese voor k ∈ Z: 2
3k
= 1,
2
3k+1
= 2,
2
3k+2
= 4.
147
Antwoorden en aanwijzingen
b. Exponent 5 plus een 6-voud. 4.10
Zeg: n = c · m met c een natuurlijk getal groter dan 1.
a. Onwaar: 24 ≡ 1 (mod 15) maar 24 6≡ 1 (mod 30). b. Zeg: n = c · m met c een natuurlijk getal groter dan 1.
Stel dus dat ak = 1 + sn met s een geheel getal. Dan ak = 1 + scm, dus ak = 1 4.12
(mod m).
ggd(e1 , m) = 1 en ggd(a, m) = 1, dus er zijn getallen p, q, r, s met pe1 + qm = 1 ra + sm = 1
Vermenigvuldig: (pe1 + qm)(ra + sm) = 1 pr · ae1 + (pse1 + qra + qsm) · m = 1 Dus ae1 en m zijn relatief priem, dus ae1 is een eenheid in Zm . 4.13
Stel aei = aej . Omdat a een eenheid is, bestaat b met b · a = 1. Dus b · aei = b · aej ai = e j
dus i = j. Omdat we zodoende N verschillende elementen krjgen van de verzameling van eenheden, die N elementen bevat, krijgen we ze allemaal. 4.14
Volgens Fermat: 796 ≡ 1
(mod 97), dus 7100 ≡ 74 ≡ 2401 ≡ 73
(mod 97).
4.15 a. 8 − 4 = 4 b. 9 − 3 = 6 c. 81 − 27 = 54
4.16 a. k een veelvoud van kgv(11 − 1, 27 − 9) = 90. b. k = 1 plus een positief veelvoud van 90. c. Nee: een macht van 11 is kan niet een 297-voud plus 1 zijn, want 297 is een 11-voud. Stel immers maar dat 11 = 1 + t · 11, dan (1 − t) · 11 = 1, maar 1 is geen 11-voud.
d. We proberen k en t vinden zodat 11k = 11 + t · 297, dus 11k−1 = 1 + t · 27, dus 11k−1 ≡ 1 (mod 27). Volgens de theorie lukt dat: neem k − 1 een veelvoud van 27 − 9, dus k gelijk aan 1 plus een 18-voud. e. Nee: voor k ≥ 2 is 3k een 9-voud, en dat kan niet gelijk zijn aan 3 plus een 297, want 297 is ook een 9-voud. Zie eerder ondedeel voor details. 4.17 a. Laat x = 3t. Stel dat toch x ≡ 1 (3t)k = 1 + 297s
(mod 297). Dan is er dus een s ∈ Z met
(3t)k − 297s = 1 Omdat k ≥ 1 staat er links een 3-voud, maar 1 is geen 3-voud. Strijdig. Aanname dus fout.
148
Antwoorden en aanwijzingen
b. Stel dus m = 1 + s · 297, dan dus m = 1 + 11s · 27, dus m ≡ 1 (mod 27). Net zo: m = 1 + 27s · 11, dus m ≡ 1 (mod 11). c. m = 1 + 27s = 1 + 11t. Dus 27s = 11t. Dus 27|11t, bovendien zijn 11 en 27 relatief priem, dus 27|t, zeg t = r · 27. (Zie stelling (1.25) op bldz. 25.) Dan m = 1 + 11 · r · 27 = 1 + 297r, dus m ≡ 1
(mod 297).
d. Gebruik stelling (4.14) op bldz. 81. Daaruit volgt dat in ieder geval voldoet k = een veelvoud van 27 − 9 = 18. e. Kleine stelling van Fermat: neem k een 10-voud. f. Volgens twee bovenstaande onderdelen kunnen we de eis n k ≡ 1 k
(mod 297) omzetten in de dubbele
k
eis n ≡ 1 (mod 27) en n ≡ 1 (mod 11), en volgens twee andere onderdelen is daar aan voldaan als k een 18-voud en een 10-voud is, dus als k een veelvoud van kgv(18, 10) = 90 is. Neem k een veelvoud van 90. g. 1 plus een 90-voud voldoet. 4.18 250614 = 351 × 714 = 33 · 13 × 2 · 3 · 7 · 17 = 2 · 34 · 7 · 13 · 17 We nemen voor k het kleinste gemene veelvoud van 1, 54, 6, 12, 16, dus k = 432 4.19
rest(546 , 47) = 1. Nu 1200 = 26×46+4, dus rest(5 1200 , 47) = rest(54 , 47) = rest(625, 47) = 14.
4.20 207 = 32 × 23. Bij exponent kgv(9 − 3, 22) = 66 of een veelvoud daarvan krijg je als macht een getal equovalent met 1, dus door de exponent nog 1 meer te nemen, krijg je weer iets congruent met x. Neem dus n = 66 · k + 1 met k een positief natuurlijk getal. 4.21 a.
Net als boven kun je berekenen dat 13 300 ≡ 1
(mod 5250), en dus 131000 ≡ 131000−900
(mod 5250), maar dat is nog steeds niet leuk. Het is handiger precieser te kijken: 5250 = 2 · 3 · 7 · 5 3 .
Modulo 2, 3 en 7 is 131000 equivalent met 1, dat zie je heel snel. En modulo 5 3 krijg je ook 1 omdat 1000 een veelvoud is van 125 − 25. En met de bekende redenering krijg je zo ook dat 131000 ≡ 1
(mod 5250)
b. Neem a eenheid in Z5250 : een echte macht van een nuldeler is een nuldeler; die kan niet 1 zijn. Uit de theorie volgt dat we als exponent een veelvoudn van het kleinste gemene veelvoud van 2 − 1, 3 − 1, 7 − 1 en 125 − 25, dus van 300 kunnen nemen. 4.23 a. We kunnen de bovenstaande techniek gebruiken, want ggd(59, 77) = 1. in Z7 : in Z11 :
59
65
59
5
=3 =5
65
5
=4 =1
Gebruik nu de techniek van de Chinese reststelling, dat levert in Z77 :
12
b. We kunnen de bovenstaande techniek gebruiken, want ggd(35, 1144) = 1. Eerst ontbinden: 1144 = 23 ∗ 11 ∗ 13
149
Antwoorden en aanwijzingen
Met behulp van de stelling van Euler krijgen we: in Z8 :
35
1143
in Z11 :
35
in Z13 :
35
4
=3 =3
1143 1143
3
=2 =8 3
=9 =1
Nu eerst terug naar modulo 88: dat levert 351143 ≡ 19
(mod 88)
Nu dit combineren met het laatste: 351143 ≡ 1
(mod 13)
levert: 351143 ≡ 547
(mod 1144)
oftewel in Z1144 :
35
1143
= 547
4.24 a. 34000 = 24 ·53 ·17. Verder ggd(4001, 340000) = 1 (dat kun je met Euclides berekenen, maar je ziet ook zo dat 2 en 5 geen deler van 4001 zijn en je berekent snel dat 17 er ook geen deler van is. Dis zo’n n bestaat. De berekening ervan gaat apart door te rekenen modulo 2 5 , modulo 53 en modulo 17. Volgens de theorie kun je hier n gelijk aan het kleinste gemene veelvoud van 2 4 − 23 , 53 − 52 en 17 − 1, dus n = 400 nemen, maar als je even goed kijkt, zie je dat 4001equiv1
(mod 2)000, dus 4001 ≡ 1
(mod 5)3 , dus hoeven we alleen een n te berekenen zodat 4001 n ≡ 1
(mod 2) 4 en 4001 ≡ 1
(mod 1)7. n = 16 voldoet dus al.
b. 2 is een gemene deler van 24498 en 340000, dus ze hebben niet grootste gemene deler 1, dus 24498 is nuldeler in Z34000 , dus een macht daarvan kan niet 1 zijn. Nee dus. c. We bereken die macht eerst modulo 2 4 , 35 en 17. - Modulo 24 : die macht bevat een factor 2707 , dus modulo 16 komt er 0 uit. - Modulo 125: 24498 is eenheid in Z125 , dus een exponent 125 − 25 = 100 levert 1, de exponent reduceert zo tot 7. Verder 24498 ≡ −2 −3.
(mod 125), dus modulo 125 krijgen we (−2) 7 = −128, dus
- Modulo 17: 24498 is eenheid in Z17 , dus een exponent 17 − 1 = 16 levert 1, de exponent reduceert zo tot 707 − 44 · 16 = 3. Verder 24498 ≡ 1
We moeten nu dus oplossen: G ≡ 0 (mod 16) G ≡ −3 (mod 125) G ≡ 1 (mod 17)
Dat is een standaardprobleem. Resultaat: G ≡ 7872
(mod 34000)
(mod 17), dus modulo 17 krijgen we 1 3 = 1.
150
Antwoorden en aanwijzingen
4.25
n = 3, 5, 7, 13, 15, 17, 19, 21: ggd(w, 22) = 1.
4.26
We zoeken x ∈ Z zodat x3 = 5. Nu is voor iedere x ∈ Z: x10 ≡ 1. Nu 7 · 3 = 21, dus zo krijgen 7
we 1 + een veelvoud van 10. Dus we krijgen x = 5 = 3. Dus x ≡ 3 4.27
(mod 11).
Nu moeten we kgv(6, 10) = 30 berekenen: voor iedere eenheid a van Z 77 geldt: a30 = 1. Dus
a1+30t = a. Voor de nuldelers gaat dat niet goed. (Dat je dan niet kunt worteltrekken, gaan we hier niet echt bewijzen.) Om nu de 7-de machts wortel te berekenen moeten we d zoeken zodat 7d = 1 + 30t
voor zekere t
We moeten dus d en t vinden (met het uitgebreide Euclides algoritme) zodat 7d − 30t = 1. Dat lukt: neem d = 13 en t = 3. Dus door de 13-de macht te berekenen krijg je van iedere eenheid in Z 77 de 7-de machts wortel. 4.29 a. Zie methode (4.18) op bldz. 84. Eerst ontbinden we 21125 in een product van machten van priemgetallen: 21125 = 53 × 132 . Voor alle gehele getallen k die geen veelvoud van 5 zijn geldt kn ≡ 1
(mod 53 ) ⇔ 100|n
volgens stelling (4.14) op bldz. 81. Uit k kunnen we precies op e´ e´ n manier 1 krijgen: delen door k, dus k n ≡ k ⇔ 100|n − 1 Net zo: kn ≡ k
(mod 132 ) ⇔ 156|n − 1
We combineren beide volgens propositie (4.16) op bldz. 83, dus we zien dat we n − 1 als een veelvoud
van het kleinste gemene veelvoud van 1100 en 156 moeten nemen, dus van 3900. Dus n = t · 3900 + 1 met t ∈ Z. b. Net als in bovenstaande is 7938 blijkbaar het kleinste gemene veelvoud van een stel getallen van type pq − pq−1 waarbij p een priemgetal is.
7938 = 2 · 34 · 72 . Je zou zo denken dat die priemgetallen 3 en 7 zijn, en misschien ook nog 2. Verder is
pq −pq−1 in ieder geval een veelvoud van pq−1 , dus kun je een gokje wagen: zou 7938 misschien (kleinste?)
gemene veelvoud van 35 − 34 en 73 − 72 zijn, dus van 162 en 294? Ja, inderdaad! Dan kan m dus best
73 · 35 zijn. Als je tot hier gekomen bent, heb je het prima gedaan, dan heb je een mogelijke waarde voor m gevonden.
Maar er zijn nog veel meer mogelijkheden! Voor de die-hards: er kan nog bijvoorbeeld een factor 2 of 2 2 bij in, maar bijvoorbeeld ook een factor 19. Kun je er nog meer verzinnen? Als je er nog e´ e´ n factor voor m er bij kunt verzinnen, zou je vast alle mogelijkheden door een computer kunnen laten berekenen.
Antwoorden en aanwijzingen van hoofdstuk 5 5.1 a. 18X 8 + 42X 5 − 90X 6 + 60X 3 − 36X 2
151
Antwoorden en aanwijzingen
b. c. d. e.
18X 8 + 42X 5 − 90X 6 + 60X 3 − 36X 2 18X 8 + 42X 5 − 90X 6 + 60X 3 − 36X 2 6X 5 + 6X 3 6X 8 + 6X 5 + 6X 6
5.2 a. Onwaar: neem bijvoorbeeld f = X 3 − X + 1 en g = X 3 + 2X − 3. b. Onwaar: zie opgave 5.1. c. Onwaar: neem bijvoorbeeld in Z12 f = 6X 3 en g = 4X 2 + 10. 5.3
quotient 21 X 3 + 2 12 X 2 − 1 12 , rest 4X −
5.4
quotient X 4 + X 3 + X 2 + X + 5, rest −10X + 17
5.5
Quoti¨ent 4X 3 + 4X 2 − X − 1, rest X.
1 2
Quoti¨ent 5X 3 + 3X 2 + 3X + 1, rest −X − 5.
5.7
Als f = q · g + r = q 0 · g + r 0 , dan
5.9
q · g − q0 · g = r0 − r
dus r 0 − r is een veeltermvoud van q: r 0 − r = g · (q − q 0 )
Volgens stelling (5.8) op bldz. 95 is de graad van r dus de som van de graden van g en q − q 0 , dus minstens de graad van q, tenzij e´ e´ n van beide factoren 0 is.
Maar ook volgens stelling (5.8) op bldz. 95 is de graad van q − q 0 hoogstens het maximum van de graden
van q en q 0 , en die zijn beide minder dan de graad van g. Conclusie: e´ e´ n van beide factoren is 0; maar dat kan dan alleen q − q 0 zijn. Dus q = q 0 , en daarmee ook r = r0. 5.10
Deel w met rest door 2X 2 + 1: w = (2X 2 + 1)(5X 3 + X 2 + X − 1) + 4X + 5 Ja; neem dus
v = 5X 3 + X 2 + X − 1. 5.11
Deel v door w met rest: v = (5X 4 + X 3 + 3X 2 + 2) · w + 6X + 3
Dus v − 6X − 3 = X 6 + 3X 5 + 4X 2 − 2X − 1 is deel baar door w. 5.12 X − 1
5.13 Beredeneer dat het algoritme termineert m.b.v. de daling van de graad (die ≥ 0 is), tot het geval at g = 0. Verder moet je dan bewijzen dat • iedere gemene deler van f en g ook een gemene deler van g en f − q · g is als q ook een veelterm is • iedere gemene deler van g en f − q · g ook een gemene deler van f en g.
Daarmee zie je gemakkelijk dat ggd(f, g) = ggd(g, polyrest(f, g)). 5.14
ggd(f, g) = ggd(3X 3 + 1, 3X 2 + 3) = X + 3
152 5.15
Antwoorden en aanwijzingen
Uit ggd(f g, h) = 1 volgt dat er veeltermen a en b zijn zodat af g + bh = 1
Uit ggd(f, gh) = 1 volgt dat er veeltermen c en d zijn zodat cf + dgh = 1 We willen toe naar zoiets als pf h + qg = 1. Om weer een 1 te krijgen vermenigvuldigen we op de gok beide vergelijkingen met elkaar: links maal links en rechts maal rechts: (af g + bh)(cf + dgh) = 1 × 1 af gcf + af gdgh + bhcf + bhdgh = 1 acf 2 g + adf g 2 h + bcf h + bdgh2 = 1 Is dat van de gewenste vorm? Ja: (adg + bc) · f h + (acf 2 + bdh2 ) · g = 1 Dus ggd(f h, g) = 1. 5.17
g = f · (2X 5 − 2X 2 − 2X) + (−2X + 2), deel die rest 2X + 2 eerst even door −2; rest(2X 5 −
2X 3 − 2X, X − 1) = 0, dus de ggd is X − 1. (Denk er aan: monisch! dus −2x + 2 is niet de ggd!)
Terugrekenen: X − 1 = − 21 (g − f · (2X 5 − 2X 3 − 2X)) = (X 5 − X 3 − X) · f − 5.18
ggd(f, g) = X 2 − 1 = −X 2 f˙ + 1 · g
5.19
De vraag is in feite: bestaan er veeltermen f en g zodat
1 2
· g.
(X 3 − 1) · f + X 2 − 1 = g · (X 2 + 5X − 6) Dat doet denken aan veeltermcombinaties en dus aan ggd: f · (X 3 − 1) − g · (X 2 + 5X − 6) = −X 2 + 1 We moeten dus ggd(X 3 −1, X 2 +5X −6) berekenen; als dat een veelvoud van X 2 −1 is, dan kan het m.b.v. terugrekenen etc.; anders kan het niet. Om straks overzichtelijk te kunnen rekenen, geven we de veeltermen namen: v := X 3 − 1,
w := X 2 + 5X − 6
We beginnen Euclides: v = (X − 5) · w + (31X − 31) Nu blijkt w deelbaar te zijn door X − 1 , dus ggd is X − 1. En ja, −X 2 + 1 is deelbaar door X − 1: − X 2 + 1 = (−X − 1)(X − 1)
dus het kan. Terugrekenen in Euclides levert: 1 1 v − (X − 5)w = X − 1 31 31 Neem dus voor f : f :=
1 −X − 1 31
153
Antwoorden en aanwijzingen
5.21
De vraag komt neer op: zijn er f en g zodat f · (X 4 + X + 4) + (X + 5) = g · (X 2 + 2) f · (X 4 + X + 4) − g · (X 2 + 2) = X + 5
Dat is te reduceren tot de vraag of ggd(X 4 + X + 4, X 2 + 2) een veeltermvoud is van X + 5. We geven weer namen: v := X 4 + X + 4,
w := X 2 + 2
Dan v = (X 2 − 2) · w + (X + 1) w = (X − 1)(X + 1) + 3 Dus ggd is 1, maar we rekenen eerst nog even met 3: 3 = w − (X − 1)(X + 1) = w − (X − 1)(v − (X 2 − 2) · w) = (1 + (X − 1)(X 2 − 2))w + (−X + 1)v = (X 3 − X 2 − 2X + 3)w + (−X + 1)v Om niet 3 maar X + 5 te krijgen moeten we nog vermenigvuldigen met 2(X + 5) = 2X + 3: f = (2X + 3)(−X + 1), 5.22
g = −(2X + 3)(X 3 − X 2 − 2X + 3)
f = 12 X, g = 12 (X 2 − 1)
Antwoorden en aanwijzingen van hoofdstuk 6 6.1 a. −4 + i b. −4 + 7i c. −2 12 − 12 i 6.2
Als a, b, c, d ∈ Q, dan (a + bi) + (c + di) = (a + c) + (b + d)i ∈ Q[i]
want
a + c ∈ Q en
b+d ∈Q
(a + bi) − (c + di) = (a − c) + (b − d)i ∈ Q[i]
want
a − c ∈ Q en
b−d ∈Q
(a + bi) · (c + di) = (ac − bd) + (ad + bc)i ∈ Q[i]
want
ac − bd ∈ Q
en
ad + bc ∈ Q
a + bi (ac + bd) + (−ad + bc)i = c + di c2 + d 2 (ac + bd) −ad + bc + 2 i =∈ Q[i] c2 + d 2 c + d2 dat laatste alleen voor het geval dat niet c = d = 0. =
want
ac + bd ∈Q c2 + d 2
en
−ad + bc ∈Q c2 + d 2
154
Antwoorden en aanwijzingen
√ 2, − 41 π, b. 2, 23 π, c. 2, − 56 π
6.3
a.
6.4
a. 5.385, 1.951, b. 3.606, −2.554, c. 5.099, −1.373
6.6
3 − 4i, 5,
6.7
1 z
=
3 25
−
4 25 i
z |z|2
6.8 a. −0.9827937232 en −2.214297436 b. Het argument van het product is de som van beide voorgaande uitkomsten modulo 2π, dus −3.197091159 + 2π = 3.086094149. Als je dat invult in de formule krijg je: √ √ 13 · 25 · (cos(3.086094149) + i sin(3.086094149)) Op mijn rekenmachine levert dat ≈ −18.000000000+0.999999882i. Ergens in die buurt moet je uitkomen. c. −18 + i. Ja, het verschil zit in afrondproblemen. 6.9 √ c. 21 (−1 + i 3) √ d. 12 (−1 + i 3) 6.10 √ √ √ √ a. 3 + 3i en - 3 − 3i √ √ √ √ b. 3 − 3i en − 3 + 3i 6.11
z − 3 | z − 3 | z + 3 = | z + 3 | p (x − 3)2 + y 2 =p ≥2 (x + 3)2 + y 2
Links en rechts van het ongelijkteken staan positieve getallen, we kunnen dus gerust kwadrateren: (x − 3)2 + y 2 ≥4 (x + 3)2 + y 2 (x − 3)2 + y 2 ≥ 4((x + 3)2 + y 2 ) 3x2 + 30x + 27 + 3y 2 ≤ 0 x2 + 10x + 9 + y 2 ≤ 0 (x + 5)2 + y 2 ≤ 16 Getekend: het gebied binnen de cirkel (compleet met rand) om het punt −5 = −5 + 0i en straal 4.
6.12 Teken de cirkel met straal 1 om het punt i en neem het binnengebied compleet met rand. Teken de cirkel met straal 3 om het punt 2 en neem het buitengebied compleet met rand. Neem van beide nu de gemeenschappelijke punten. √ √ √ 6.13 a. −1 b. 1 c. i d. 21 2 + 12 2i e. 12 + 21 3 6.14
155
Antwoorden en aanwijzingen
a. 1, −1, i, −i
√ Gebruik dat de absolute waarden van de oplossingen 4 3 zijn √ en dat de argumenten 14 π plus een veelvoud van 21 π zijn. Dat levert als oplossingen 4 3(cos( 14 π) + √ √ √ i sin( 41 π)), 4 3(cos( 34 π) + i sin( 34 π)), 4 3(cos(− 14 π) + i sin(− 41 π)), 4 3(cos(− 34 π) + i sin(− 34 π)) Met je
b.
(z − 1)(z + 1)(z − i)(z + i)
rekenmachine kun je dit verder gemakkelijk uitwerken. 6.15 a. We berekenen eerst √ √ 3 3 10 5 −1 − i = 2 · (cos(− π) + i sin(− π)) 20 20 Nu tellen we bij het argument hiervan een veelvoud van 25 π op. Zo krijgen we als oplossingen: √ 3 3 10 2 · (cos(− π) + i sin(− π)) 20 20 √ 1 1 10 2 · (cos( π) + i sin( π)) 4 4 √ 13 13 10 2 · (cos( π) + i sin( π)) 20 20 √ 11 11 10 2 · (cos(− π) + i sin(− π)) 20 20 √ 19 19 10 2 · (cos(− π) + i sin(− π)) 20 20 b. De som is 0. Immers, als je alle oplossingen vermenigvuldigt met een 5-de eenheidswortel, dan krijg je weer dezelfde getallen, alleen in een andere volgorde, dus met dezelfde som. dat betekent: als je de som met een 5-de eenheidswortel vermenigvuldigt, krijg je weer de som. Maar als je een getal ongelijk aan 0 vermenigvuldigt met een 5-de eenheidswortel ongelijk aan 0 krijg je alleen maar hetzelfde getasl als dat getal 0 is. De som is dus 0. √ √ 6.16 Argumenten: 16 π, 65 π, − 12 π. Oplossingen: 21 3 + 12 i, − 21 + 21 3, −i. 6.17
Die som noem ik S: S=
99 X
k
ei 100 2π
k=0 1
Als we die vermenigvuldigen met ei 100 2π krijgen we 1
1
ei 100 2π S = ei 100 2π
99 X
k=0
want e
100 i 100 2π
e
=1=e
1 2π i 100 1
0 i 100 2π
. Dus
S=S
(ei 100 2π − 1)S = 0 en omdat
k
ei 100 2π =
99 X
k=0
ei
(k+1) 100 2π
=
99 X
k=0
k
ei 100 2π
156
Antwoorden en aanwijzingen 1
(ei 100 2π − 1) 6= 0 volgt S = 0. √ √ √ √ √ √ √ √ 6.18 a. 21 2 + 12 2i, b. 12 2 − 12 2i, c. 12 2 − 12 2i, d. − 21 2 + 12 2i 6.19 √ a. We gebruiken hier absolute waarde 50 ≈ 7.0710678 en argument ongeveer −3.000. Daarmee vinden we 1.037 − 1.615i. b. Hier moet je ongeveer weer −7 − i krijgen, maar natuurlijk spelen afrondfouten een rol. c. Ongeveer 4.366 − 5.562i. Let op: als je netjes stap voorstap rekent, krijg je dus niet −7 − i, zoals je wellicht wel had verwacht. 6.20 a. 0.7071067810 − 4.949747467i b. −2.230 − 0.1585i, −0.1585 + 2.230i, 0.1585 − 2.230i, 2.230 + 0.1585i 6.21 − 21 π, we
Aan de gegevens (maak maar een plaatje) zie je dat het argument van −24 − 7i ligt tussen −π en √ dus de halve hoek ligt tussen − 12 π en − 41 π. Laat α het argument van −24 − 7i zijn, dan krijgen
24 25 en via de halve-hoek-formule: 1√ 7√ cos(α) = 2, sin(α) = − 2 10 50 Resultaat: √ 1√ 7√ −24 − 7i = 5 · ( 2− 2i) 10 50 cos(2α) = −
6.22 a. i b. −1 c. 1 d. (x · y)n = xn · y n 6.23
Ja: je vindt de absolute waarde van z s · z t als
| z s | · | z t |=| z |s | z |t =| z |s+t =| z s+t |
Het argument is de som van de argumenten van de factoren: arg(z s ) + arg(z t ) = s · arg(z) + t · arg(z) = (s + t)arg(z) = arg(z s+t ) 6.24 a. Nee: neem z = −1.Dan krijg je links 1. b. Ja: 1
1
• De absolute waarde van (z 2 )2 is per definitie (| z | 2 )2 =| z | want | z | is gewoon een positief re¨eel getal. 1
• Het argument van z 2 is per definitie congruent met de helft van het argument van z modulo 2π, maar
157
Antwoorden en aanwijzingen 1
de helft van iets tussen −π en π is een getal tussen − 12 π en 21 π, dus het argument van z 2 is gelijk aan 21 arg(z). Bij het vervolgens kwadrateren moeten we dit weer verdubbelen en dan zo nodig ±2π
corrigeren, maar dat corrigeren hoeft niet, want we verdubbelen iets > − 21 π en ≤ 21 π. We krijgen dus
weer arg(z). 6.25
Nee: zie opgave 6.24 op bldz. 124, het eerste deel. Het klopt wel als z een positief re¨eel getal is, of
als −1 < s < 1 en −1 <
t s
≤ 1 en ook als t ∈ Z.
6.26 a. −2.000 + 3.000i, −1.000 − 1.000i b. (z + 2 − 3i)(z + 1 + i) 6.27 Zet de vergelijking om in: z 2 − 2z − 17 + 12i = 0 met z 6= 0. Oplossing: −3.452 + 1.348i, 5.452 − 1.348i
Antwoorden en aanwijzingen van hoofdstuk 7 7.3 a. 1, −1, 7, −7
b. (x − 1)(x + 1) en (x − 7)(x + 7) 7.4 a. Resultaat: 8, −8, 18, −18
b. (x − 8)(x + 8) en (x − 18)(x + 18) 7.5
Omdat 17 een priemgetal is geldt volgens de kleine Fermat stelling: in Z 17 : voor ieder x 6= 0:
x17−1 = 1. Zo krijgen we 16 nulpunten: 1, 2, 3, . . . , 16 en daarmee krijgen we 16 delers van type X − k
van X 16 − ol1. Daarmee kunnen we deze veelerm meteen ook geheel ontbinden: X 16 − 1 = (X − 1)(X − 2)(X − 3) . . . (X − 16)
Trefwoorden absolute waarde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111, 113 algoritme van Euclides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 associatief . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 A[X] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Chinese reststelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 co¨effici¨ent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 common divisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16, 99 commutatief . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 complex geconjugeerde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 complexe getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 complexe vlak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 congruent modulo geheel getal m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 congruent modulo veelterm v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 congruent modulo 2π . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 decimale notatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 degree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 delen met rest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 deler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 98 distributief . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 divisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 98 driehoeksongelijkheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 echte delers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 eenelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 eenheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 eenheidswortels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 eindig lichaam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Euclides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 exponenti¨ele functie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Fp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 gcd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16, 99 ggd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16, 99 gehele getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 gehele quoti¨ent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 gemene deler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 gemene deler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 getallen, complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 getallen, gehele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 getallen, natuurlijke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 GF (p) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 ggd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Trefwoorden
159
graad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35, 93 greatest common divisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16, 99 grootste gemene deler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16, 99 hoofdstelling van de algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 hoofdstelling van de rekenkunde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 imaginaire as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 imaginaire deel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 irreducibel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 lichaam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 modulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Moivre, stelling van de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 monisch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 monoom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 98 natuurlijke getallen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 nulelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 omgekeerde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 periode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 periodiek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 polynomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 polynoom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 poolco¨ordinaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 preperiode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 priem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 priemfactoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 priemgetal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 prime number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 quoti¨ent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 re¨ele as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 re¨ele deel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 relatief priem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 representant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 rest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 restklasse modulo geheel getal m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 restklasse modulo veelterm v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 semiperiodiek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 stelling van de Moivre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 tegengestelde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 veelterm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 veelvoud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 98 Zm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45