Annons

Nollor uppför sig inte alltid som nollor.

Bild: 
iStock

Telefonen blir lurad av nollan

När jag hjälpte en gymnasieelev med matematik använde vi hennes telefon som kalkylator. Telefonen kunde räkna med potenser, och gav rätt besked om att ett tal upphöjt till noll blir 1. Men när vi prövade noll upphöjt till noll (00) blev det till min förvåning också 1. Det borde väl stå ”Error” eller liknande då detta är ett odefinierat uttryck? Har prövat med telefoner av andra märken och de ger samma svar. Har matematiken ändrats, eller har alla tillverkarna begått samma misstag?

/Gunnar Boman

Publicerad:

2014-12-26

Kort svar: Nej, matematiken har inte ändrats. 00 har ingen motsägelsefri definition.

Längre svar: Att 00 inte går att definiera kan man se genom att först titta på 0 upphöjt till ett positivt tal n, det vill säga 0n, vilket alltid blir 0. Om n är ett heltal så är det 0*0*...*0 n gånger, och multiplicerar man 0 med sig själv n gånger så får man 0. Ett positivt tal a upphöjt till 0, alltså a0, blir däremot alltid 1. Det är inte lika lätt att förstå intuitivt, men går att räkna ut. Försöker man applicera dessa två regler på 00 så ger de alltså två olika svar, och om 00 hade ett väldefinierat värde så skulle de båda ha gett samma svar.

Att räknaren – och även en del dataprogram för algebra – ändå ger värdet 1 beror på att detta i många fall gör uträkningar enklare och leder till rätt svar – men inte alltid, så man måste vara på sin vakt. Ett exempel där räknarens genväg leder rätt är i den så kallade binomialsatsen.

Frågan om 00 diskuterades ganska livligt i början av 1800-talet. Den italienske greven Guglielmo Libri skrev på 1830-talet flera artiklar om värdet av 0 upphöjt till olika tal och han tyckte att man borde slå fast definitionen 00 = 1. Trots att många höll med honom blev det i debatten som följde allt tydligare att det inte fanns ett fungerande värde, och det visade sig att fransmannen A.L. Cauchy, en av dåtidens största matematiker, redan i början av 1820-talet konstaterat att det inte gick att definiera 00 utan att få motsägelser. När insikten om detta spreds dog debatten ut. Matematiska debatter var vid den här tiden ganska vanliga, då man fortfarande befann sig i övergången mellan medeltidens och renässansens matematik, som var mer baserad på räkneknep och intuitiva resonemang, och den moderna matematiken, med dess krav på fullständiga bevis och entydiga definitioner.

Efter denna debatt var det lugnt kring värdet av 00 i över hundra år, ända tills programmerare av miniräknare och datorer behövde bestämma hur de skulle hantera saken. Då de ofta valt den pragmatiska vägen före den formellt korrekta har vi fått kalkylatorer som avviker från det svar som Cauchy hittade redan 1821.

/Klas Markström, docent i matematik, Umeå universitet

Du har just läst en artikel från tidskriften Forskning & Framsteg. Prenumerera här.

Kommentera:

1

Dela artikeln:

TIDNINGEN FÖR DIG SOM ÄR NYFIKEN PÅ ALLVAR
10 nummer 779 kr
2 nummer 99 kr
Du vet väl att du kan läsa Forskning & Framsteg i din läsplatta? Ladda ned appen från App Store eller Google Play. (Läsplatteutgåvan ingår i alla prenumerationer.)

Kommentarer

Varför datorer anser att 0^0=1.
Flyttalshantering är implementerad enlig IEEE 754-2008.

Från wikipedia:

"
IEEE floating point standard

The IEEE 754-2008 floating point standard is used in the design of most floating point libraries. It recommends a number of different functions for computing a power:[27]

pow treats 00 as 1. This is the oldest defined version. If the power is an exact integer the result is the same as for pown, otherwise the result is as for powr (except for some exceptional cases).
pown treats 00 as 1. The power must be an exact integer. The value is defined for negative bases; e.g., pown(−3,5) is −243.
powr treats 00 as NaN (Not-a-Number – undefined). The value is also NaN for cases like powr(−3,2) where the base is less than zero. The value is defined by epower×log(base).

Programming languages

Most programming language with a power function are implemented using the IEEE pow function and therefore evaluate 00 as 1. The later C[28] and C++ standards describe this as the normative behaviour. The Java standard[29] mandates this behavior. The .NET Framework method System.Math.Pow also treats 00 as 1.[30]
"

Lägg till kommentar