Hvorfor er der kvaternioner i mit computerspil?

Der er kvaternioner i computerspil, i flysimulatorer og i styring af robotter, der skal rotere. Hvad mon de laver der?

Kvaternionerne blev opdaget af den irske matematiker og fysiker, W.R. Hamilton. Han fik den fundamentale indsigt om dem, da han spadserede langs Royal Canal i Dublin og der sidder nu en

Mindepladen på Broome Bridge.

Mindepladen på Broome Bridge.

mindeplade på den bro, Broome Bridge hvor han efter sigende skriblede ligningerne

ij=k ,jk=i , ki=j ,  i^2=j^2=k^2=-1.

Kvaternioner er tal, på formen a+bi+cj+dk, hvor a, b, c, d er reelle tal og i,j,k er symboler, som  kan lægges sammen som vektorer med 4 koordinaterog ganges sammen efter reglerne ovenfor. altså samme system som med de komplekse tal, men der er nu kommet j og k med. Eksempel:

(2+3i-5j+k)+(6-2i+j-3k)=8+i-4j-2k og (2+3i-5j+k)(1+i+j)=2+3i-5j+k+(2+3i-5j+k)i+(2+3i-5j+k)j=2+3i-5j+k+2i+3i^2-5ji+ki+2j+3ij-5j^2+kj =2+3i-5j+k +2i -3 +5k+j+2j+3k+5-i =4+4i -2j+9k hvor jeg brugte reglerne ovenfor, da jeg gangede i,j og k med hinanden. Bemærk, at ji=(ki)i=ki^2=-k=-ij og tilsvarende for de andre produkter, der ikke er nævnt ovenfor.  i,j og k antikommuterer.

Kvaternionerne er en divisionsalgebra eller et skævlegeme. I får ikke regnereglerne for divisionsalgebraernes addition og multiplikation, men jeg har brugt mange af dem ovenfor. De reelle tal og de komplekse tal er også divisionsalgebraer (med kommutativ multiplikation). Tager man udgangspunkt i addition af vektorer og forsøger at finde en multiplikation, der “matcher”, kan man kun gøre det for R, R^2 og \;R^4 for R^8 har man en multiplikation, der giver  Cayleytallene, men der er multiplikation ikke associativ: (ab)c er ikke nødvendigvis a(bc).

Hvad har det med computerspil og jagerfly at gøre?

En rotation i det 3-dimensionale rum kan beskrives ved en rotationsakse og en vinkel. Har man valgt sig et koordinatsystem, kan alle rotationer beskrives som en kombination af rotation om x-aksen, derefter om y-aksen og derefter om z-aksen. Man kan altså beskrive det ved de tre vinkler.

Roll, Pitch og Yaw

Roll, Pitch og Yaw

For jagerpiloter hedder det “roll”, pitch” og “yaw”, når man roterer om flyets egne interne akser. Man kan lege med Roll Pitch og yaw her (klik på Euler angles i øverste højre hjørne). Det er naturligvis ikke det samme som at vælge nogle faste akser, som ikke følger med flyet, men der er omregninger frem og tilbage mellem diverse systemer af vinkler og akser. Man er i øvrigt (heller) ikke enige om, hvilken akse, der roteres om først, så man skal være vågen, hvis man henter formler flere steder fra. Orienteringen  af et objekt i  rummet kan altså beskrives med tre vinkler, som siger, hvordan objektet er roteret i forhold til nogle faste x,y,z akser.De kaldes også Eulervinkler. Samme position kan svare til flere forskellige vinkler – hvis vi måler i radianer, gentager de sig for hver 2\pi;  i grader er perioden 360. Bemærk, at det drejer sig om orienteringen af et 3-dimensional objekt, ikke bare den retning, eksempelvis næsen på flyet peger i.

Så den rotation, der er lavet for at bringe flyet i en bestemt position, kan beskrives med tre vinkler, altså et punkt (u,v,w) i R^3. Og man skal ikke bruge mere end de vinkler, der er i kassen, som er afgrænset af

-\pi \leq u < \pi, -\pi \leq v < \pi,-\pi \leq w < \pi

for at være sikker på, man har alle rotationer med. Kunne man mon nøjes med færre vinkler – giver nogle vinkler de samme rotationer? (Svar: Ja) Hvordan er kassen “limet sammen”? Hvordan svarer punkter i den ene ende til dem i den anden, top til bund og front til bagside? Hvordan ser det ud, når et fly ændrer sin position og går via “ydervinklerne”. M.a.o. hvordan ser det ud i vinkler, når et fly laver loop, barrel roll og andre luftakrobatiske manøvrer? Hvordan laver man en kontinuert rotation, der bringer flyet til en bestemt position i rummet, altså en kontinuert kurve i mængden af rotationer. Det er der, det bliver interessant. Og hvor beskrivelsen med Eulervinkler må give op.

Matrixbeskrivelse.

En rotation kan beskrivesmed en 3×3 matrix, hvis første søjle er koordinaterne for vektoren [1,0,0] efter rotation, anden søjle er koordinaterne for [0,1,0] efter rotation og tredje søjle er koordinaterne for [0,0,1] efter rotation. Som udgangspunkt er der 9 tal i en 3×3 matrix, men en rotations matrix skal opfylde en stribe ligninger, som kommer udfra at søjlerne har længde 1, står vinkelret på hinanden og udgør et højrehåndssystem. (Da de jo er resultatet af at rotere basisvektorerne). Rotationsmatricerne udgør delmængden SO(3) af 3×3 matricerne. Det er en 3-dimensional delmængde af det 9-dimensionale rum, som svarer til de 9 tal i en 3×3-matrix. Enhver rotationsmatrix kan skrives som et

Rotationsmatricer for rotaton om x,y,z aksen.

Rotationsmatricer for rotation om x,y,z aksen. Billede fra Wikipedia.

produkt af matricer, der svarer til rotation om x,y,z akserne. Altså udfra tre vinkler.

 

 

 

 

Produktet AzAyAx

Produktet AzAyAx

Med vinklen \vartheta=\pi/2 bliver den samlede rotation

A= \left(\begin{array}{ccc} 0&\sin(\varphi+\psi)& -\cos(\varphi+\psi)\\0&\cos(\varphi+\psi)&\sin(\varphi+\psi)\\1&0&0\end{array}\right)

Jeg har brugt additionsformler for sinus og cosinus. Bemærk, at rotationen ikke afhænger af \varphi og \psi hver for sig, men kun af deres sum. Altså at eksempelvis \theta=\pi/2, \varphi+\psi=0 giver samme rotationsmatrix uanset hvad \varphi, \psi er hver for sig. Det betyder, at beskrivelsen med vinkler er fejlagtig. Det ser ud somom, der kun er to “retninger” at vælge imellem, når man skal rotere væk fra positioner med \theta=\pi/2, men der skal være 3.

Dimensionen af mængden af rotationer er 3. Det er et ægte praktisk problem, som får robotter til at gøre pludselige skift på 180 grader eller (mindre alvorligt) computerspil til at se mystiske ud, når jagerfly kommer i position med eksempelvis næsen opad. (Den ubestemthed, der er i situationen, hvor man ikke kan se, hvad de to vinkler er, kan have sære effekter.) Så der er en god grund til at gøre noget ved det.

Man kan tænke på en lidt analog situation, hvor man nærmer sig Nordpolen langs en meridian, altså med fast længdegrad. man har altså breddegrad, der vokser mod \pi/2. Kigger man i systemet af længdegrader og breddegrader, vil man ikke kunne se, at en kurve op til Nordpolen langs Greenwichmeridianen (længdegrad =0) og væk fra Nordpolen langs en meridian med vinkel 10^0, slår et knæk på Nordpolen. Eller at kurven, der går op langs Greenwichmeridianen og væk langs datolinjen faktisk ikke knækker. Det skyldes, at systemet med længde- og breddegrader klemmes sammen i Nordpolen, så breddevinkel \pi/2 og længdegrad hvadsomhelst, er samme punkt, nemlig Nordpolen.

Kvaternionerne er bedre: 

Kvaternioner med længde 1 beskriver rotationer. Til en sådan kvaternion q=w+xi+yj+zk svarer rotationsmatricen

\left(\begin{array}{ccc} 1-2y^2-2z^2&2xy-2wz&2xz+2wy\\2xy+2wz&1-2x^2-2z^2&2yz-2wx\\2xz-2wy&2yz+2wx&1-2x^2-2y^2\end{array}\right)Som man kan se, giver kvaternionen -q samme rotation, men det er den eneste “sammenlimning”, der sker, når man afbilder fra enhedskvaternionerne til rotationerne. Enhedskvaternionerne udgør en 3-dimensional kugleflade – det er jo vektorer med 4 koordinater af længde 1. Effekten af at bruge kvaternioner til at beskrive rotationer er, at man har den rigtige dimension og i analogi med eksemplet med Nordpolen, nu kan se forskel på, om kurver af rotationer knækker eller ej, men der er andre gevinster: Skal man beskrive en kurve af rotationer, altså rotere fra en position til en anden gennem mellempositioner, så er det meget let at gøre med kvaternioner – man laver en kurve r(t) i R^4, som starter i q1 og ender i q2 og ikke passerer 0. Nu skal man sikre sig, den holder sig indenfor kvaternioner med længde 1, men det er let. Man bruger bare r(t)/|r(t)|, altså dividerer med længden hele vejen. Skulle man gøre det med rotationsmatricer, var det ikke så let – en matrix, der ikke er en rotationsmatrix kan ikke med et snuptag korrigeres ind til rotationsmatricerne.

Turingprisen til Diffie og Hellman

I tirsdags annoncerede ACM, at Turingprisen for 2015 går til Whitfield Diffie og Martin E. Hellman. De får prisen for noget, vi idag betragter som ganske selvfølgeligt, nemlig “public key kryptering”, kryptering med offentlig nøgle. Kryptering har været kendt i mange former igennem historien, læs for eksempel Simon Singhs Kodebogen.

Merkle, Hellman og Diffie i 1975.

Merkle, Hellman og Diffie i 1975.

Men indtil Diffie og Hellman skrev artiklen New directions in Cryptography i 1976, kunne man kun sende hemmelige beskeder til hinanden, hvis man først var blevet enige om en nøgle, altså, hvordan man ville kryptere og dekryptere. Og nøglen skulle være hemmelig. Så man skulle altså først have en form for hemmelig kommunikation, før man kunne udveksle mere hemmelig information. (Ralph Merkle tabte kapløbet om at komme først, men han havde mange af de samme ideer. Desuden har man senere fundet ud af, at det britiske GCHQ havde tilsvarende ideer, men holdt dem hemmelige. Det kan de jo sagtens sige… Historien om kryptering var og er fuld af skæg og blå briller, hemmeligheder, trusler,… og kamp mellem privatliv og mulighed for at kigge “the bad guys” i kortene, Hellman beretter om sit liv i kryptering her.). Både Diffie og Hellman har været meget aktive i kampen for privatliv og også nedrustning. Her er Hellmans blogindlæg, fra i går. Han vil bruge pengene på et nedrustningsinitiativ.

Tilbage til det, de fik Turingprisen for:

Diffie og Hellman forudså i artiklen ovenfor, at man i fremtiden ville have et meget stort behov for hemmelig kommunikation: “The development of computer controlled communication networks promises effortless and inexpensive contact between people or computers on opposite sides of the world, replacing most mail and many excursions with telecommunications. For many applications these contacts must be made secure against both eavesdropping and the injection of illegitimate messages. At present, however, the solution of security problems lags well behind other areas
of communications technology. Contemporary cryptography is unable to meet the requirements, in that its use would impose such severe inconveniences on the system users, as to eliminate many of the benefits of teleprocessing.

Og det havde de jo ret i. De forudså både behovet for kryptering med henblik på at undgå, andre læser med, og behovet for en digital signatur, så man er sikker på, beskeden kommer fra den, man tror, den er fra. Det ville ikke være smart, hvis vi skulle cykle et sted hen og hente en hemmelig nøgle, før vi kunne handle på nettet. I artiklen foreslår de den løsning, vi bruger idag, nemlig en kryptering, som er asymmetrisk: Man kan ikke udfra den nøgle, der bruges til at kryptere, gætte den, der skal bruges til at dekryptere. Eller rettere: Det skal være meget svært at gætte/regne det ud. De skriver. “In a public key cryptosystem enciphering and deciphering are governed by distinct keys, E and D, such that computing D from E is computationally infeasible (e.g., requiring 10^100 instructions). The enciphering key E can thus be publicly disclosed without compromising the deciphering key D. Each user of the network can, therefore, place his enciphering key in a public directory.”

Umiddelbart lyder det jo sært: Kryptering og dekryptering er to sider af samme sag, den ene er den inverse til den anden, så at forestille sig, at man kan kende D uden at kunne finde E på en superhurtig computer, kræver fantasi. Og matematik.

Diffie-Hellman protokol til udveksling af nøgler

I artiklen giver de en protokol  til hemmelig udveksling af nøgler over en offentlig kanal. Alice og Bob vil gerne bestemme sig til en fælles nøgle.

De vælger et (stort) primtal q (dem kan man finde ganske effektivt) og arbejder nu i det endelige legeme GF(q) med q elementer. Eksempel. q=11, som ikke er stort, men alligevel. Der er 11 elementer i GF(11) og vi kan kalde dem 0,1,2,3,…,10. Dem kan man lægge sammen og gange sammen: modulo 11. 1+3=4, som ventet, men 3+8=0 eftersom 11=1×11+0. Og 3×8=2, da 24=2×11+2 og altså giver 2, når vi dividerer med 11 og ser, hvad resten er.

Elementerne 1,2,3,4,5,6,7,8,9,10 har allesammen en multiplikativ invers, en makker man kan gange med og få 1. For eksempel er 10×10=1 modulo 11, da 100=9×11+1, så 10 er sin egen invers. Og 4×3=1, da 12=11+1. Disse 10 elementer udgør den multiplikative gruppe i GF(11)

I Diffie Hellman protokollen skal man desuden bruge et element, som frembringer den multiplikative gruppe. Altså et element, som når man ganger det med sig selv et antal gange, når rundt til alle de 10 elementer (Der er altid  q-1 elementer i den multiplikative gruppe for GF(q))

Lad os prøve med 2: 2^2=4, 2^3=8, 2^4=5, 2^5=10, 2^6=9, 2^7=7, 2^8=3, 2^9= 6, 2^{10}=1, hvor vi hele tiden tager udregner rest ved division med 11. Så vi nåede gennem alle 10 elementer.

Med 3 går det ikke. 3^2=9, 3^3= 5, 3^4=4, 3^5=1, 3^6=3 og så starter man forfra.

Kun 2, 6, 7 og 8 er frembringere.

Nu tager vi et hemmeligt tal X, primtallet q og frembringeren a og udregner

Y=a^X  modulo q. Og fortæller hele verden, hvad Y er.

Det diskrete logaritmeproblem består i at finde X, når man kender a^X modulo q. For et stort primtal q (og det skal mindst være større end tallet X), er dette problem vanskeligt – der er mange step i en computer.

I eksemplet ovenfor kunne vi kryptere beskeden X=6 med q=11 og a=2. Da er Y=2^6 modulo 11. Og det har vi regnet ud ovenfor. Y=9.

Man kan få et indtryk af, at det er svært at udregne eksponenten, altså at finde X udfra Y, når man ser på udregningen 2^2=4, 2^3=8, 2^4=5, 2^5=10, 2^6=9, 2^7=7, 2^8=3, 2^9= 6, 2^{10}=1 – rækkefølgen 2,4,8,5,10,9,7,3,6,1 indikerer, at det ikke er helt simpelt.

Men hvad skal Alice og Bob gøre? De kan vel heller ikke løse det diskrete logaritmeproblem. Nej, men de gør som følger: De vælger hver sit hemmelige tal n og m. Alice kende n, Bob kender m, hele verden kender q og frembringeren a (her q=11 og a=2)

Alice sender sit tal n krypteret til Bob, så Bob modtager A=2^n modulo 11. Bob sender sit hemmelige tal m krypteret som B=2^m modulo 11.

Nu udregner Alice B^n modulo 11 og Bob udregner A^m modulo 11. De har nu begge tallet 2^{mn} modulo 11 =2^{nm} modulo 11, som er deres fælles hemmelige nøgle. De finder altså ikke ud af, hvad den andens hemmelige tal var, men finder en ny fælles hemmelighed.

Eksempel. n=6 og m=8. Da er A=9 og B=3. Udregner man A^8 modulo 11, får man 3 og det gør man også, hvis man udregner B^6 modulo 11. Tallet 3 er nu den hemmelige nøgle. Og den har ikke kunnet opsnappes på den kanal, Alice og Bob kommunikerer over, da det ville kræve, man kendte enten n og B eller m og A. Og kun Alice hhv Bob kender n og m.

Her er et andet eksempel:

1) Alice og Bob bliver enige om p=23, g=5 (f.eks. ved, at Alice sender de tal til Bob)
2) Alice vælger et hemmeligt tal, a=6, udregner g^a=5^6 og tager rest ved division med p=23. Det giver 8. Det tal sender hun til Bob.
3) Bob vælger sit eget hemmelige tal, b=15, udregner g^b=5^15 og resten ved division med p=23. Det giver 19, og det sender han til Alice.
4) Alice udregner nu 19^a=19^6, tager rest ved division med p=23 og får 2.
5) Bob udregner 8^15, rest ved division med p=23 og får 2.

Nu er 2 deres fælles hemmelige nøgle. Andre kender ikke a og b, så de kan ikke lave trin 4 og 5, selvom de har aflyttet det tidligere.

Man kan også bruge ideen med den diskret logaritme til at lave et public key system, men det er ikke det, der bruges mest idag.

Kryptering med offentlig nøgle.

Senere kom nemlig RSA (Rivest Shamir, Adelman) kryptering, hvor kryptering, E, bruger et produkt af to store primtal, n=pq, mens dekryptering, D,  bruger de to primtal. Udfra n kan man ikke finde p og q uden at bruge rigtig meget tid på en stor computer. Det tror vi da. Vi ved ikke, om der findes en supersmart algoritme, der kan det, men det tror vi ikke. Neil Koblitz skrev i Notices of the AMS om det problematiske forhold mellem teori og praksis i kryptering. Der kan være andre angreb end at gå direkte efter at faktorisere primtal og ofte undervurderer matematikere den praktiske side – hvad nu, hvis nogen kan få fat i de hemmelige tal af en bagvej for eksempel.

Koblittz skriver også om “The Crypto Rump Sessions“, som Diffie har ledet i de første mange år. Det er en del af konferencen Crypto og kræver underholdende indlæg; der er regler for, hvad man må kaste efter foredragsholderne. Et eksempel på et abstract: Over 3 years ago, curtains were invented with provided ‘full-window protection’. No longer could people be observed sleeping in their bedrooms from the street. Now, on behalf of crime victims the world over, we are asking whether these curtains are truly worth the cost. Curtains significantly limit our capacity to investigate these crimes and severely undermines our efficiency in the fight against terrorism. Why should we permit criminal activity to thrive behind drawn curtains, unavailable to law enforcement?….

 

 

 

 

Kan man skrive en børnebog om Fermats sidste sætning?

Ja. Det kan man. Den findes allerede. Det er bogen Fermats Sidste Sætning, som er en billedbog lavet af kunstnergruppen Surrend og udgivet hos Dome of Visions. Surrendmedlem Jan Egesborg er også matematiklærer på Esbjerg Gymnasium og han har rådført sig med Johan P.Hansen, matematiker ved Århus Universitet, som har holdt en del foredrag om beviset for Fermats Sidste Sætning, FSS. (Der er noter og slides fra foredrag på siden).

Men måske er det slet ikke en børnebog om Fermats Sidste Sætning og derfor ikke et eksistensbevis? Selvfølgelig er beviset for Fermats Sidste Sætning ikke med i bogen. Det fylder godt 100 sider i Annals of Mathematics og kan end ikke læses af det store flertal af matematikere. Det kræver, at man er velbevandret i elliptiske kurver og algebraisk geometri, som er det område, beviset ligger i.

Bgoen blev anmeldt i Politiken

Bgoen blev anmeldt i Politiken

Jeg synes alligevel, det er en bog om Fermats Sidste Sætning. På samme måde, som børn kan lege med magneter og magnetisme, selvom magnetisme er en kvantemekanisk effekt og selvfølgelig ikke kan forstås af børn. Selvfølgelig kan børn ikke forstå beviset for Fermats sætning, men det, bogen gør, er at illustrere et modstridsargument. Der henvises på bagsiden af bogen til “Gerhard Freys smukke bidrag”. Frey konstruerede en elliptisk kurve hørende til et (muligvis ikke eksisterende) modeksempel til Fermats Sætning. Altså, hvis der findes naturlige tal a,b,c, så a^n+b^n=c^n med n mindst 3, så findes en elliptisk kurve af en bestemt type. (Den er “ikke modulær”). Den kaldes en Frey-kurve.

Frey-kurven y^2=x(x-a^n)(x+b^n) er en elliptisk kurve, hvis vi laver den udfra et modeksempel til FSS og den er “ikke modulær”. Det fører alt for vidt at definere elliptiske kurver – men i første omgang er det en kubisk kurve – ligningen er et polynomium i x og y og graden er 3. Man får et x^3-led og ikke højere. Løsningsmængden (med x og y reelle tal) er en delmængde af planen – figurerne nedenfor er eksempler på kubiske og faktisk elliptiske kurver, taget fra Mathworld. Elliptiske kurver har en sammenhæng med komplekse funktioner, som er dobbeltperiodiske – der findes to komplekse tal w_1,w_2, sådan at  f(z)=f(z+k_1w_1+k_2w_2) for alle hele tal  k_1, k_2. De to tal w_1,w_2 må ikke opfylde w_1=cw_2 hvor c er et reelt tal (eller omvendt – de er lineært uafhængige over de reelle tal), så punkterne  z+k_1 w_1+k_2 w_2 giver et gitter i den komplekse plan. funktionen f er altså bestemt ved sine værdier i et parallellogram og værdierne matcher langs kanterne. Folder man parallelogrammet sammen langs modstående kanter, får man en torus, så f er en funktion på en torus.

EllipticCurves_1000

Elliptiske kurver fra Eric Wessteins Mathworld. Det får sort baggrund, hvilket formentlig kunne editeres værk, men I får lov at abstrahere i stedet for.

Frey indså, at hvis Taniyama Shimura Weil- formodningen er korrekt,  så findes der ikke nogen Frey-kurver. Fordi alle elliptiske kurver over de rationale tal ifølge Taniyama Shimura Weil  er modulære. Frey kunne ikke selv bevise dette, selvom han gav en del afargumenterne, så det tog flere matematikeres arbejde at få lukket hullet. Jean-Pierre Serre og Ken Ribet, nærmere bestemt. Da så Andrew Wiles beviste Taniyama-Shimura-Weil-formodningen, kunne han henvise til Frey, Serre og Ribet og konkludere, at Fermats Sidste Sætning er korrekt. Bemærk, at billedet af beviset for FSS som én matematikers arbejde – “the mathematical Marlboro Man” ikke er rigtigt.

I billedbogen indgår sådan en modstrid: Hvis der er en løsning, så er der et objekt (jeg vil ikke afsløre, hvad det er for et – I må jo låne bogen på biblioteket eller købe den), som man (tudsen på bogens forside) kan konkludere ikke findes. Jeg synes, det bliver lidt svært at være overbevist, når man tegner dette objekt – for så er det der jo allerede i en helt anden fysisk form end et abstrakt matematisk objekt såsom en løsning til FSS og en ikke-modulær elliptisk kurve – men det er rigtig fint at fortælle, at matematik indeholder den slags argumenter. Og forældre burde tale med børn om logiske slutninger og fejlslutninger. Der er nok af eksempler i hverdagen!

Når livet er lineært. II

Der er mange andre aspekter af matricer, vektorer, produkt af matricer etc. end det, der ligger først for, nemlig løsning af lineære ligningssystemer. I et tidligere blogindlæg så vi på en ret lavtflyvende anvendelse, nemlig ideen om, at tal stillet op i et rektangulært skema, kan repræsentere billeder. Der kom lineær algebra ikke alvorligt i spil. Her tager vi, igen med udgangspunkt i bogen When Life is Linear: From Computer Science to Bracketology,  fat i matrix-vektorprodukt, egenvektorer og hvad det mon har med grafer at gøre. (Og hvad en graf er…).

Her er igen en matrix A=\left(\begin{array}{cccc} 1&-2&\pi&\frac{2}{3}\\0&7&3&-14\\8&9&4&5\end{array}\right) og en vektor v=\left(\begin{array}{c}2\\-4\\7\\ \frac{73}{23}\end{array}\right).

Man kan gange en matrix med en vektor og få en ny vektor. En matrix med m rækker og n søjler kan ganges med en vektor med n koordinater og giver så en vektor med m koordinater. Matricen og vektoren ovenfor kan altså ganges sammen. Resultatet er en vektor med 3 koordinater. Det giver en funktion, som tager en vektor med n koordinater ind og giver en med m koordinater ud – fra R^n til R^m og går som følger:

1) Tag skalarproduktet af første række i matricen med vektoren v. Det giver 1 \cdot 2+ (-2) \cdot (-4)+\pi \cdot 7 + \frac{2}{3} \cdot \frac{73}{23} =2+8+7\pi+\frac{146}{69}. Det er første koordinat i vektoren Av. Og nej, det er ikke kønt, man man kan se, hvad der ganges med hvad.

2) Anden koordinat fås ved skalarprodukt af anden række i A med v etc.

Hvis matricen B er kvadratisk, altså har lige mange søjler og rækker, så har produktet Bw lige så mange koordinater som w.

Her er en kvadratisk matrix  B=\left(\begin{array}{cccccc}0&1&0&0&1&0\\1&0&1&0&1&0\\0&1&0&1&0&0\\0&0&1&0&1&1\\1&1&0&1&0&0\\0&0&0&1&0&0\end{array}\right) Den er endda symmetrisk – hvis man spejler den i den diagonal, der går fra nordvest til sydøst, får man samme matrix tilbage. Det er nabomatricen for grafen 6n-graf.svg her. I den første række står 1 i søjle 2 og 5, fordi knude nummer 1 er forbundet til knuderne 2 og 5. Og så fremdeles. Bliver man mon klogere af at opstille nabomatricen? Ja, det gør man. Ganger man B med sig selv (se mine Pencasts, 1 og 2 om hvordan man gør det.) får man matricen B^2=\left(\begin{array}{cccccc}2&1&1&1&1&0\\1&3&0&2&1&0\\1&0&2&0&2&1\\1&2&0&3&0&0\\1&1&2&0&3&1\\0&0&1&0&1&1\end{array}\right), som indeholder information om, hvor mange stier af længde to, der er mellem knuderne. Eksempelvis er indgangen i 2.række, fjerde søjle skalarprodukt af anden række i B, som er (1,0,1,0,1,0),  med fjerde søjle i B, som er (0,0,1,0,1,1). Det tæller sammen, hvor mange steder 1-tallerne matcher. Det gør de på 3. og 5. koordinat. Så der er en sti fra knude 2 til knude 4 via knude 3 og en via knude 5.  Den første række (og første søjle) fortæller, hvor mange stier af længde 2, der er fra knude 1. Der er 2 stier fra 1 tilbage til 1, nemlig 1 til 5 til 1 og 1 til 2 til 1. Der er en sti til knuden 2, nemlig 1 til 5 til 2. og tilsvarende for knuderne 3, 4 og 5. Man kan ikke komme til 6 i to skridt, så der står 0. Nu kan læseren nok forudse, hvad der sker, hvis vi udregner B^3, B^4 etc. Men det gør jeg ikke her.

Der er andre matricer hørende til en graf: Et eksempel er Laplacematricen: L(B)=\left(\begin{array}{cccccc}2&-1&0&0&-1&0\\-1&3&-1&0&-1&0\\0&-1&2&-1&0&0\\0&0&-1&3&-1&-1\\-1&-1&0&-1&3&0\\0&0&0&-1&0&1\end{array}\right) I diagonalen står antal af kanter, der udgår fra den tilsvarende knude, så der står 2,3,2,3,3,1, fordi eksempelvis knude 5 er forbundet til 3 andre, mens nummer 6 kun er forbundet til en anden. Udenfor diagonalen står -B, indgangene i B med negativt fortegn.

Summerer man elementerne i en given række eller søjle, får man 0 (tænk over det – det er ikke svært). Så matrix-vektorproduktet L(B)v, hvor v=(1,1,1,1,1,1),  giver 0-vektoren.

Vektoren v er altså en egenvektor for matricen L(B) med tilhørende egenværdi 0. For en kvadratisk matrix A er w en egenvektor med tilhørende egenværdi s, hvis Aw=sw og hvis w ikke er 0-vektoren (det ville være snyd…). Altså hvis effekten af at gange w med A blot er at strække eller skrumpe vektoren w med faktoren s.

Vi har set, at L(B) har 0 som egenværdi med vektoren (1,1,1,1,1,1) som tilhørende egenvektor. Det siger ikke noget om grafen, for det er altid sådan for Laplacematricen hørende til en graf. Alle vektorer (k,k,k,k,k,k,k) er egenvektorer hørende til egenværdien 0. Men der er information at hente i de “næste” egenværdier/egenvektorer:

  1. Alle egenværdierne er ikke-negative.
  2. Egenværdien 0 har geometrisk multiplicitet 2 (der er andre egenvektorer end blot (k,k,k,k,k,k,k)) hvis og kun hvis grafen ikke er sammenhængende. Det er ret let at se, at det gælder den ene vej: Hvis grafen ikke er sammenhængende kan man omnummerere hjørnerne, så de første udgør en sammenhængende del og de sidste en anden. Laplacematricen bliver da blokdiagonal: Med seks hjørner, hvor de fire første hænger sammen og de sidste to hænger sammen får man \left(\begin{array}{cccccc}a11&a12&a13&a14&0&0\\a21&a22&a23&a24&0&0\\a31&a32&a33&a34&0&0\\a41&a42&a43&a44&0&0\\0&0&0&0&b11&b12\\0&0&0&0&b21&b22\end{array}\right) og vektoren (1,1,1,1,-1,-1) er en egenvektor hørende til egenværdien 0 (fordi begge hjørnematricer er Laplacematricer.) Hvis der er k sammenhængskomponenter, er der k lineært uafhængige egenvektorer hørende til egenværdien 0.
  3. Der er også information i egenvektoren/egenvektorerne hørende til den næstmindste egenværdi: Den kaldes Fiedlervektoren og siger, sammen med størrelsen af den næstmindste egenværdi noget om “hvor godt” dele af matricen hænger sammen. Fjerner man nogle kanter, bliver den næstmindste egenværdi mindre. I eksemplet får vi egenvektoren <0.415, 0.309, 0.069, −0.221, 0.221, −0.794> og egenværdi 0,723 (afrundet). Der er fire positive koordinater, nummer 1,2,3,5 og to negative, 4 og 6. De tilsvarende knuder i grafen hører sammen – 6 sidder ude for sig selv og kun fast i 4. Og de to dele er sammenhængende. For en fuldstændig graf, hvor alle knuder er forbundet med alle andre, har Laplacematricen to egenværdier, nemlig 0 og antal knuder, n. Så den næstmindste er antallet af knuder. Den har n-1 lineært uafhængige egenvektorer af typen (-1,0,0,…,1,0,…,0) Altså -1 i første koordinaten, 0 alle andre steder undtage et sted, hvor der står 1. Den næstmindste egenværdi er altså højst n og i så fald er grafen så sammenhængende, som den kan blive.

Spektral grafteori drejer sig om egenværdier og egenvektorer for matricer, der hører sammen med grafer, såsom nabomatricen og Laplacematricen. Der er forbindelser til netværk af elektriske modstande, til tilnærmelser af funktioner,… Se for eksempel Daniel A Spielmans  noter. Det er meget smukt og smart. Og som tidligere gælder det om at forstå graferne og matricerne på flere måder: Hvad er den lineære funktion svarende til nabomatricen? Hvordan kan man “se” den på grafen? Hvad med Laplacematricen?  Fun fact: For en vektor v=(v1,v2,…,vn) og en Laplacematrix for en graf, er v^TLv summen af alle de differenser (vi-vj)^2, hvor det i’te og j’te hjørne er forbundet med en kant. I eksemplet ovenfor, ville man få (v1-v2)^2+(v1-v5)^2+(v2-v5)^2+(v2-v3)^2+(v3-v4)^2+(v4-v5)^2+(v4-v6)^2. For en fuldstændig graf får man alle (v_i-v_j)^2

Grafer bruges som modeller mange steder, og der er en stor interesse i eksempelvis algoritmer, der finder længste/korteste vej, centralitet (hvilke knuder er centrale, så man skal igennem dem næsten uanset, hvor man kommer fra og til) og meget mere. Der er netværk af Facebookvenner, af www-sider, af neuroner i hjernen, af byer via veje, via flyruter, via jernbane,…

 

 

Når livet er lineært

Titlen er fra bogen “When life is Linear – from computer graphics to bracketology.” af Tim Chartier. Det er en rigtig fin bog, som jeg fik anbefalet af Arne Jensen. Chartier har holdt foredtag på MOMath, Museum of Mathematics i New York og det er heldigvis på YouTube:

Lineær algebra er en fundamental del af enhver uddannelse i retning af ingeniørvidenskab, naturvidenskab, oecon,..  I gymnasierne er lineær algebra vektorer, skalarprodukter, krydsprodukter og naturligvis lineære funktioner f(x)=ax+b. Tim Chartier giver en lang række eksempler på, hvordan ideerne fra lineær algebra kan udnyttes – fra, som titlen siger, computergrafik til “bracketology” (parantesologi kunne det hedde), som drejer sig om at lave sportsturneringer, som matcher de rette hold. Bogen fokuserer på datamining og computergrafik. I denne blogpost får I kun en lille forsmag, men jeg vil give flere eksempler fra bogen senere.

De fundamentale objekter i lineær algebra er vektorer og matricer:

Her er en matrix \left(\begin{array}{cccc} 1&-2&\pi&\frac{2}{3}\\0&7&3&-14\\8&9&4&5\end{array}\right) og her en vektor \left(\begin{array}{c}2\\-4\\7\\ \frac{73}{23}\end{array}\right)

 

En matrix er et skema med tal – den ovenfor er en 3×4 matrix, 3 rækker, 4 søjler. En vektor er en matrix, som kun har én søjle (eller kun én række). Så det er jo nemt nok. Tal stillet op i sådan et skema kunne for eksempel repræsentere pixels i et billede. Hvert tal er så gråtonen for netop den pixel. Et farvebillede kan have tre tal for hver pixel – så får matricen tre gange så mange søjler (eller rækker, hvis man skriver dem på den led). Billedmanipulation er nu matematiske operationer på matricen. monalisaHer er Mona Lisa. Hun har rød, grøn, blå værdier for hver pixel. Værdierne ligger mellem 0 og 255.

Hun er altså en kæmpestor matrix. Eller man kunne sige, hun er tre matricer, en for hver af de tre farver. Hvis jeg vil have et “negativ”, kan jeg tage alle pixelværdier, gange dem med -1 og lægge 255 til.

Det har jeg gjort. nedenfor, (på dette websted, Tim Chartiers college, hvor man kan lege mere med billedet af Mona Lisa, eller selv uploade et billede) hvor man også kan se resultatet af kun at “invertere” en af farverne. Altså eksempelvis at få meget blå, hvor der før var meget lidt og omvendt.

 

monalisaomvendtblaa

Blå pixels omvendt

monalisaomvendt

Alle pixels omvendt

monalisaomvendtgroen

Grønne pixels omvendt

monalisaomvendtroed

Røde pixels omvendt.

Pointen er, at man ved at repræsentere billedet som matematik, åbner for en stribe muligheder. På siden ovenfor kan man mere generelt lave manipulationer af typen mx+b, hvor x er pixelværdien og man kan vælge m og b. Inversion, som jeg har lavet ovenfor, er -x+255, altså m=-1 og b=255.

Men der er meget mere matematik at hente i lineær algebra end at gange alle indgange i en matrix med et tal og derefter lægge et andet tal til, selvom det alene giver mange muligheder. I bogen kan man læse om (meget simpel) “edge detection”, hvor man erstatter (gråtone) pixelværdien p(i,j) i indgang (i,j) i’te række j’te søjle med p(i,j-1)+p(i,j+1)-2p(i,j), altså summen af pixels lige ovenfor og nedenfor  minus 2 gange den oprindelige pixelværdi (det er den diskrete anden afledte). Hvis de tre pixelværdier er ens, får man 0, altså sort. Det gør man også, hvis der er en lineær sammenhæng: p(i,x)=ax+b giver a(j-1)+b+a(j+1)+b-2(aj+b)=0. Alle områder med konstant farve bliver sorte – de får værdi 0. Lad os tage et simpelt eksempel, en oktagon, som er repræsenteret af matricen

\left(\begin{array}{cccccccccccccc}0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&0&1&1&1&1&0&0&0&0&0\\0&0&0&0&1&1&1&1&1&1&0&0&0&0\\0&0&0&1&1&1&1&1&1&1&1&0&0&0\\0&0&1&1&1&1&1&1&1&1&1&1&0&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&1&1&1&1&1&1&1&1&1&1&1&1&0\\0&0&1&1&1&1&1&1&1&1&1&1&0&0\\0&0&0&1&1&1&1&1&1&1&1&0&0&0\\0&0&0&0&1&1&1&1&1&1&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\end{array}\right)

Bruger vi nu metoden ovenfor og lader kant-pixels være sorte, får vi \left(\begin{array}{cccccccccccccc}0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&1&-1&-1&-1&-1&1&0&0&0&0\\0&0&0&1&-1&0&0&0&0&-1&1&0&0&0\\0&0&1&-1&0&0&0&0&0&0&-1&1&0&0\\0&1&-1&0&0&0&0&0&0&0&0&-1&1&0\\0&-1&0&0&0&0&0&0&0&0&0&0&-1&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&-1&0&0&0&0&0&0&0&0&0&0&-1&0\\0&1&-1&0&0&0&0&0&0&0&0&-1&1&0\\0&0&1&-1&0&0&0&0&0&0&-1&1&0&0\\0&0&0&1&-1&0&0&0&0&-1&1&0&0&0\\0&0&0&0&1&-1&-1&-1&-1&1&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&0&0\end{array}\right)

Bemærk, hvordan den lodrette kant forsvinder – alt med konstant farve bliver 0 og den horisontale og delvis den skrå er fremhævet. Mere indviklede metoder laver andre kombinationer af nabopixels for at finde andre effekter. Det snyder, at jeg kun bruge 0 og 1, men ideen fremgår forhåbentlig.

I får ikke mere denne gang – men så har I noget at glæde jer til. Vi har slet, slet ikke brugt styrken i lineær algebra endnu.

 

For få kvinder på Læsø ?

“Udkants-Danmark” er et hyppigt tilbagevendende emne i dagspressen. For nylig gik en historie i Ugebrevet A4 på, at de unge kvinder flytter fra udkantsområderne og lader de unge mænd alene tilbage (se http://www.ugebreveta4.dk/unge-maend-efterlades-i-provinsen_20355.aspx). Som et eksempel angives Læsø, hvor kvinder angiveligt kun udgør 43,5% af de 18-29 årige unge. Dette kunne tyde på, at unge kvinder i højere grad end unge mænd forlader Læsø. Men kunne det tænkes, at den lavere andel unge kvinder blot er et udslag af tilfældigheder ?

Ifølge et udtræk fra Danmarks Statistik boede der i fjerde kvartal 2015 i alt 112 personer fordelt på 46 kvinder og 66 mænd i aldersgruppen 18-29 på Læsø. Hvis der ikke er er en overhyppighed af kvinder, som forlader Læsø af den ene eller anden årsag, bør antal kvinder være fordelt på samme måde som antal “plat” ud af 112 kast med en ærlig mønt. Denne fordeling er en såkaldt binomialfordeling. Det forventede antal kvinder er da 56. Ved at bruge binomialfordelingens
egenskaber kan man beregne, at der er hele 7% sandsynlighed for at observere et antal kvinder, som afviger mindst lige så meget fra det forventede antal 56, som det observerede antal 46 kvinder. På baggrund af tallene fra Læsø alene, kan man altså ikke afvise, at den mindre andel unge kvinder blot er et udslag af tilfældigheder.

Til sammenligning kan man gøre sig tankeeksperimentet, at der er dobbelt så mange personer i aldersgruppen: Ialt 224 personer fordelt med 92 kvinder og 132 mænd. Hvis antal mænd og kvinder er 50-50-fordelt vil det forventede antal kvinder være 112. Sandsynligheden for at observere et antal kvinder, der afviger mindst lige så meget fra det forventede antal 112 som det observerede antal 92 er nu kun knapt 1%, hvilket kunne få en til at konkludere, at “der er noget om snakken” (altså at kvinder er underrepræsenterede).

I begge tilfælde estimeres andelen af kvinder til 41%. Men forskellen på datamaterialerne størrelser betyder, at man kun i det sidste tænkte eksempel er tilbøjelig til at forkaste 50-50-antagelsen.

Mød AAUs matematikere (nogen af dem).

Dette forår er AAUs matematikere usædvanligt aktive i Ungdommens Naturvidenskabelige Forening i Aalborg. Så der kan I “se giraffen/girafferne”. Mange gymnasier har en aftale med UNF om gratis adgang. I kan også komme til åbent hus, hvor det nu mere er de studerende, I møder, eller I kan blive “studerende for en dag” eller meget andet.

Tirsdag 16. februar er emnet i UNF Aalborg Matematikkens Store Uløste Problemer.

Matematikken vokser hele tiden. Nye resultater bevises, formodninger afkræftes, nye teorier udvikles. Der er formodninger, som matematikerne har forsøgt at bevise eller modbevise i flere hundrede år. Mest kendt er nok Fermats sætning, men i de senere år er der kommet nye resultater om både primtalspar, Goldbachformodningen og Poincareformodningen. Foredraget vil give eksempler på disse og andre store uløste problemer og lidt om, hvad de nyere resultater siger. Også de syv milleniumproblemer vil blive omtalt. Fokus vil være på de problemer, der handler om tallene, primtal eksempelvis. Dem kan man forholdsvis let forklare. Selvom vi ikke kan løse dem. Det er mig, der holder foredraget.

Tirsdag 29 marts er emnet Ruter i Netværk.
Et netværk (eller en graf) består af et antal knuder og et antal kanter, der hver forbinder to knuder. Kanterne kan eventuelt have en retning. Vejnettet i Danmark er et eksempel på et netværk, hvor knuderne svarer til vejkryds og en kant er en vejstrækning mellem to kryds. Men der findes også mere abstrakte netværk, som f.eks.: opførelse af en bygning kan inddeles et antal aktiviteter, som hver repræsenteres af en knude; en kant med retning fra knude A til knude B kan angive at aktiviteten A skal udføres før B.

Man er tit interesseret i at finde en rute fra knude A til knude B, hvor man altså går fra A til B langs med en række kanter. Man vil helst finde den kortest mulige rute.

Vi vil se på algoritmer, der kan finde en sådan kortest rute. Og vi vil overveje om algoritmerne er tilstrækkeligt hurtige til at finde korteste veje i store netværk.

Vi vil desuden se overraskende eksempler på anvendelser af korteste ruter i mere abstrakte netværk. Foredraget holdes af Leif Kjær Jørgensen.

Torsdag 31.marts kan I høre om Uendelighed.

Uendeligheds konceptet er blandt de få matematiske redskaber som er meget vigtige til forståelsen af en bred vifte af andre (ikke nødvendigvis matematiske) begreber. Til at gøre tingene mere komplicerede, så findes der uendeligt mange typer af uendelighed, en mere uendelig end den anden!

Vi skal starte med at definere de endelige og de tællelige mængder, og vi skal fortsætte med konstruktionen af de reelle tal som uendelige decimalbrøker. Vi skal bruge Cantors diagonalargument til at bevise, at de irrationelle tal ikke er tællelige. I pausen skal vi drikke en kop kaffe i Hilberts Hotel.

Hvis alt går godt så når vi til at snakke lidt mere generelt om mængdesammenligning, kardinalitet, udvalgsaksiomet og Banach-Tarskis paradoks.Det er Horia Cornean, der er foredragsholderen.

Bor du tættere på Odense, Århus eller København, så kan du også finde UNF-foredrag der.

Cantormængder – på den fede måde

I sidste uge skrev jeg (og især Horia) om Cantormængden. Der var et argument for, at Cantormængden har “længde” 0, fordi det, der fjernes, ialt har længde 1. Yderligere så vi, at Cantormængden er kompakt, ikke-tællelig og ikke har indre punkter. I konstruktionen af Cantormængden fjernes den midterste tredjedel af hvert tilbageværende interval, Man kunne spørge, hvad der ville ske ved “kun” at fjerne den midterste fjerdedel af hvert af de tilbageværende intervaller. Bliver der så ikke mere tilbage i den sidste ende? Svaret er, at det gør der ikke. Den samlede længde af det, der fjernes, er stadig 1. Men man kan fjerne mindre og mindre på en anden måde:

Den fede Cantormængde eller Smith-Volterra-Cantor-mængden er også ikke-tællelig, kompakt, har ingen indre punkter (den er sin egen rand), men den har længde 1/2. Den konstrueres næsten ligesom Cantormængden, men man fjerner mindre delmængder undervejs:

800px-Smith-Volterra-Cantor_set.svgStart med det lukkede interval [0,1] og fjern den midterste (åbne) fjerdedel. Så har vi [0,3/8] U [5/8,1] tilbage. Nu fjerne vi den midterste sekstendedel fra hvert af de to intervaller og har så

[0,\frac{5}{32}]\cup[\frac{7}{32},\frac{3}{8}]\cup [\frac{5}{8},\frac{25}{32}]\cup[\frac{27}{32},1]

I hvert skridt fjernes et \frac{1}{2^{2n}} langt stykke midt i hvert af de 2^{n-1} intervaller, der er tilbage. Ialt fjerner man \frac{2^{n-1}}{2^{2n}}=\frac{1}{2^{n+1}} for n=1,2,3,… ialt

\Sigma_{n=1}^{\infty}\frac{1}{2^{n+1}}=\Sigma_{n=0}^{\infty}\frac{1}{2^{n+2}}=\frac{1}{4}\Sigma_{n=0}^{\infty}\frac{1}{2^{n}}=\frac{1}{4}\frac{1}{1-\frac{1}{2}}=\frac{1}{2}

Så det tilbageværende har længde \frac{1}{2} Det er den fede (eller en af de fede) Cantormængder. Når man tænker på, at der ikke er nogen indre punkter i mængde, er det altså virkelig underligt og en lille smule rystende: Der er en total længde på \frac{1}{2}, men der er ikke nogen bittesmå “rigtige” intervaller i mængden.

Argumentet for, at der ikke er nogen indre punkter er som følger. Start med et punkt p i [0,1]. Uanset hvor lillebitte et \varepsilon, du vælger, så er der i intervallet ]p-\varepsilon,p+\varepsilon[ punkter, der bliver fjernet i processen. Så hvis p ligger i den fede (eller for den sags skyld den tynde) Cantormængde, så er der ikke mulighed for at tage ]p-\varepsilon,p+\varepsilon[ med nok så lille epsilon, uden at få noget fra komplementet til Cantormængden (fed eller tynd) med.

 

Har man først fået ideen, kan man konstruere fede Cantormængder med andre længder. Det kan I eksempelvis læse om hos Evelyn Lamb på Scientific American. Der kan I også se, at Cantormængden (fed eller tynd) ikke er tæt uanset hvor lille et delinterval af [0,1], man vælger, så vil der i dette lillebitte interval være et delinterval, som er blevet fjernet. Ethvert punkt y i det indre af dette delinterval,  kan adskilles fra Cantormængden med y-\mu,y+\mu[ som ikke indeholder noget fra Cantormængden (for lille nok \mu. Cantormængder er intetsteds tætte. Men fylder alligevel, hvis de er fede…

 

Meget store primtal.

For godt en uge siden, 7. januar 2016 annoncerede GIMPS, at de har fundet endnu et Mersenneprimtal, nemlig 274.207.281-1. Det plejer at give en avisnotits eller to, men faktisk er det ikke i sig selv særlig interessant, hvor stort det største kendte primtal er. Vi ved nemlig, og har vidst det siden Euklid, at der er uendelig mange primtal; eller sagt på en anden måde: Uanset hvor stort et tal, nogen giver mig, så ved jeg, at der er primtal, der er større end det.

Men det er da fascinerende, at man ved, at netop tallet 274.207.281-1 er et primtal. Det har 22.338.618 cifre i titalssystemet, så ja, det er godt nok stort.

Mersenneprimtal er primtal på formen 2p-1, hvor p i øvrigt også er et primtal. Ellers kan 2p-1 ikke være et primtal: Man kan nemlig faktorisere

2^{rs}-1=(2^s-1)(1+2^s+2^{2s}+2^{3s}+\cdots +2^{(r-1)s}), så hvis hverken r eller s er 1, har vi en faktorisering i ikke-trivielle faktorer.
Man kan sige mere end det, nemlig at primtal på formen a^p-1 altid har a=2 og p et primtal. Hvorfor? Jo, vi har lige set, at a-1 går op i a^k-1 (brug s=1 og r=k i formlen ovenfor, og sæt a ind i stedet for 2) og hvis a ikke er 2 giver det igen en ikke-triviel faktorisering.

Altså er 74.207.281 også et primtal.

De første Mersenneprimtal er 3 (p=2), 7 (p=3), 31 (p=5), 127 (p= 7), 8191 (p=13) og de har været kendt i mere end 500 år. På Sloanes website med lister over heltal, som Ege har skrevet om her på bloggen, kan man finde en liste over primtal, som er eksponenter i Mersenne primtal. Den er nu ikke ajourført med det seneste i skrivende stund. Da man i 1963 fandt ud af, at p=11.213 giver et Mersenneprimtal, (det er det 23. af de 49 kendte Mersenneprimtal) lavede Illinois et særligt poststempel:

Fra Mathworld

(Fra Eric Weissteins Mathworld)

 

 

 

GIMPS-projektet, Great Internet Mersenne Prime Search begyndte i 1996 som et af de første eksempler på “crowd sourcing” hvor mange stiller deres computere til rådighed for en større opgave. Det er interessant og senere brugt mange andre steder, at man på den måde fordeler beregninger til mange; og organiseringen af, hvordan man udnytter de mange mindre computere, er en opgave i sig selv – distribuerede beregninger er et område i datalogi.

Vi ved ikke, om der findes uendelig mange Mersenneprimtal, men med det seneste har vi da fundet 49. Hvis man vil finde meget, meget store primtal, så er Mersenneprimtal imidlertid et godt bud. Det er generelt svært at teste et stort tal for, om det er et primtal – og mere generelt at faktorisere et stort tal i sine primfaktorer. Men der er en test, Lucas Lehmer testen,  som kun virker for tal på formen 2p-1, altså potentielle Mersenneprimtal,  og som er hurtigere end andre tests for tal i den størrelse. Derfor kan det være smart at tage forholdsvis store primtal, som 74.207.281, (dem kan man finde ved en af de sædvanlige tests), og se om 2p-1 er et primtal. Og hvorfor vil man så finde store primtal? Tjah – af nysgerrighed, for at teste sin hardware, for at finde nye algoritmer til andre ting,… på “Why do people find these big primes?” er der en liste med 7 begrundelser:

  1. Tradition!
  2. For the by-products of the quest
  3. People collect rare and beautiful items
  4. For the glory!
  5. To test the hardware
  6. To learn more about their distribution
  7. For the money?

Jeg kan afsløre, at punkt 7 ikke er en hovedbegrundelse.

Fra Eric Weissteins Mathworld.

Fra Eric Weissteins Mathworld.

Om punkt 6 kan man sige, det er svært at lave formodninger, hvis man kun har 49 Mersenneprimtal, men på Mathworld er der en graf med antallet af Mersenneprimtal Mp=2p-1 med p < ln(x)  (grafen til venstre på figuren). De finder bedste rette linje og skriver en anelse skeptisk:  “If the line is not restricted to pass through the origin, the best fit is (-1.68+/-0.39)+(2.60+/-0.03)lnx. It has been conjectured (without any particularly strong evidence) that the constant is given by e^gammasqrt(2)=2.518..., where gamma is the Euler-Mascheroni constant” Nu må vi se, om nummer 49 ryger langt ved siden af linjen.

Når det er sagt, så bruges store primtal til kryptering, og det er helt fundamentalt i vores brug af netbanking og i det hele taget til hemmelig  kommunikation over offentlige kanaler- Så jo, primtal er vigtige, algoritmer til at finde dem er vigtige, og ny information om primtal er altid fint.

 

 

Cantormængden

Georg Cantor

Georg Cantor

Cantormængden er et af mange eksempler på, hvor forunderligt og besynderligt de reelle tal opfører sig. Dette indlæg er skrevet med udgangspunkt i et oplæg fra Horia Cornean – jeg har bedt kollegerne om hjælp til ideer, så mine kæpheste ikke bliver de eneste i stalden…

Det er nemt nok at definere Cantormængden. Først lidt notation: For to reelle tal, a,b, er  [a,b]  det lukkede interval mellem a og b, altså de relle tal x, som opfylder a\leq x\leq b.

(a,b) er det åbne interval, altså de reelle tal, der opfylder a< x < b. Hvis a\geq b, er der ingen tal i (a,b). Når a\leq b har intervallet [a,b] længde b-a og intervallerne (a,b), (a,b], [a,b) har også længde b-a. Det er altså ligemeget, om endepunkterne er med. Længder kan lægges sammen, så længden af [2,3]U (5,7) er 1+2=3. En nulmængde er en delmængde med længde 0.

Start med det lukkede interval [0,1],  og fjern så delmængder som følger:

Fjern først  det åbne interval (1/3,2/3) . Det der står tilbage er [0,1/3] U [2/3,1]. Vi deler nu de to resterende intervaller i tre lige dele og fjerner de to åbne intervaller i midten.
Det som står tilbage er:

[0,1/9] U [2/9,1/3] U [2/3,7/9] U [8/9,1]

Cantormængden er det sorte, der bliver tilbage. Her er fjernet de første 7 skridt.

Cantormængden er det sorte, der bliver tilbage. Her er fjernet de første 7 skridt.

Den samlede længde af de tre intervaller, vi har fjernet indtil nu, er 1/3 + 2/9. Vi fortsætter med den same procedure ved at dele hvert interval i tre og fjerne de åbne intervaller som står i midten.

Efter den tredje runde, er den totale  længde af det, vi har fjernet, 1/3 + 2/9 + 4/27 = 1/3(1+2/3 + (2/3)^2). Efter N+1 trin har vi fjernt en  åben mængde af samlet længde  1/3(1+2/3 + (2/3)^2+\ldots +(2/3)^N). Den følge går mod 1 når N går mod uendelig, dvs. det som står tilbage (Cantor mængden) har “længde” nul. (Læsere, der er bekendt med den geometriske række vil vide, at \Sigma_{n=0}^\infty c^k =\frac{1}{1-c} når |c|<1 – brug dette med c=2/3. Andre læsere kan overveje, at (1-c)(1+c+c^2+\ldots + c^N)=1-c^{N+1}, så 1+c+c^2+\ldots + c^N=\frac{1-c^{N+1}}{1-c}. Hvis |c|<1 går c^{N+1} mod 0, når N går mod uendelig og så går 1+c+c^2+\ldots + c^N mod \frac{1}{1-c})

Hvert element “A” i Cantor mængden kan entydigt identificeres med et tal i intervallet [9,10] af typen a=9,18118188…; lad os forklare hvad det betyder: Hvis den første decimal efter kommaet af “a” er 1, betyder det, at A ligger i [0,1/3]. Hvis den første decimal efter kommaet af “a” er 8, så betyder det, at A tilhører intervallet [2/3,1]. Hvis de første to decimaler af “a” er 9,18 betyder det, at A er et punkt i [2/9,1/3]. Når “a” starter med 9,88 betyder det, at A er et punkt i [8/9,1]. Og så videre. Man kan tænke på, at tallene 1 og 8 siger, om man skal til venstre eller højre for det næste midterstykke, der er fjernet. Til hvert punkt i intervallet [9,10] på formen ovenfor er der præcis et element i Cantormængden. Og omvendt: Start med et element A i Cantormængden, så er det i enten [0,1/3] eller [2/3,1] – det giver første decimal. Den næste decimal er bestemt ved, om A ligger til venstre eller højre for den midterste tredjedel, der er fjernet i næste omgang osv.

Cantor mængden kan ikke tælles.  Beviset bruger Cantors diagonalargument: Vi skal vise, at mængden at tal på formen 9,11881881… som ovenfor ikke kan tælles. Men først en definition

En mængde M er tællelig, hvis der kan laves en afbildning fra de naturlige tal \mathbb{N}, altså “tælletallene”, 1,2,3,4,… til M, som rammer alle elementer i M, m.a.o. f:\mathbb{N}\to M surjektiv. (Ikke alle vil kalde en endelig mængde for tællelig. Dem har vi med i denne definition. Man kan også lade funktionen gå den anden vej – fra M til de naturlige tal. Så skal man forlange, den er injektiv.)

Antag nu, at vi har en funktion f:\mathbb{N}\to tal på formen ovenfor. Vi skal vise, at det ikke kan passe. Skriv  tallene i rækkefølge, f(1), f(2),….. under hinanden:

f(1)=9,a_{11}a_{12}a_{13}a_{14}\ldots a_{1k}\ldots f(2)=9,a_{21}a_{22}a_{23}a_{24}\ldots a_{2k}\ldots f(3)=9,a_{31}a_{32}a_{33}a_{34}\ldots a_{3k}\ldots

 

f(n)=9,a_{n1}a_{n2}a_{n3}a_{n4}\ldots a_{nk}\ldots
Nu laver jeg et tal, som ikke er talt med: b= 9,b_1b_2b_2\ldots b_k \ldots givet som følger: Hvis a_{kk}=1, så er b_k=8 og hvis $a_{kk}=8$, så er b_k=1. Nu kan vi se, at $b$ ikke er med i billedet af f, for b_n\neq a_{nn} og derfor er b\neq f(n) for noget n.

Det vil sige, vi har bygget en mængde med længde nul som ikke er tællelig. Cantors mængde er også lukket, fordi det, vi fjerner fra [0,1], er en (tællelig) forening af åbne intervaller. Ifølge Heine-Borels sætning er Cantors mængde kompakt fordi den er både lukket og begrænset.

Cantors mængde har ingen indre punkter, fordi den tællelige forening af åbne intervaller som vi har fjernet indeholder punkter som ligger arbitrært tæt på ethvert  punkt af Cantor mængden. Det kan I tænke over.