Co się czym przybliża

Granica Excela w nieskończoności

Tym razem o nieskończoności. Nieskończoność to piękna rzecz.

Wybitny matematyk Wacław Sierpiński ma na swoim grobie w Alei Załużonych na Powązkach napis „Badacz nieskończoności”. Prawdziwe, aktualne nieskończoności w matematyce to dzieło Georga Cantora, a opinia o nim Davida Hilberta jest zawarta w słowach „Aus dem Paradies, das Cantor uns geschaffen, soll uns niemand vertreiben können” [z raju, jaki stworzył nam Cantor, nikt nie powinien móc nas wypędzić].

Większość ludzi wyobraża sobie, że skromna skończoność naszego świata doczesnego jest jakimś marnym przybliżeniem wspaniałej idei nieskończoności, że w dumnym napisie

lim_{n\to\infty}a_n=g
ważna jest granica g a poszczególne wyrazy ciągu są mniej istotne i mają znaczenie tylko jako kolejne przybliżenia g.  Ten neoplatoński w swojej istocie pogląd jest chyba odruchowy u wielu matematyków, ja w każdym razie też go silnie odczuwam.

Jednak w informatyce jest wręcz odwrotnie: na ogół to nieskończoność jest traktowana jako dogodne,  upraszczające wiele problemów przybliżenie skończoności.

Wiem, że ten pogląd brzmi na pierwszy rzut oka dziwnie, więc zaraz wyjaśnię. Jako ilustrujący to zjawisko przykład weźmy na warsztat Excela, bo prawie każdy go ma na swoim komputerze i może sam obejrzeć, o ile niekończoność jest prostsza od skończoności.

Arytmetyka liczb naturalnych Excela jest w miarę normalna do okolic liczby n=1,00E+15, czyli jedynki z 15 zerami.

W tym rejonie zaczynają się cuda. Po pierwsze, zdaniem Excela, zachodzi szokująca równość  n+1=n. Ściśle mówiąc, wykonany przez samego Excela test na równość tych liczb zwraca wynik PRAWDA. Co więcej, nawet n+4=n oraz wszystkie liczby pomiędzy n a n+4 są sobie równe (zdaniem samego programu). W następnym kroku okazuje się jednak, że n+5>n. Potem kolejną liczbą większą od n+5 będzie dopiero n+15.

Żeby było trudniej to ogarnąć, nawet dalej zdarzają się przebłyski normalności. Na przykład 10n+50>10n, ale to tylko przebłysk, bo jeśli do 10n dodamy mniej niż 50, to liczba powstała nie będzie się różniła od 10n.

Drugi poziom cudów zaczyna się dziać w okolicy m=9,99E+307.

Na przykład istnieje liczba 1,5m, która wyświetla się jako 1,4985E+308, ale gdy do mniejszej od niej liczby 1,00E+308 spróbujemy dodać 1, to okaże się, że wynik tego dodawania już zdaniem Excela nie istnieje.

Osoba doświadczona zapewne domyśli się, że pierwszy obszar cudów to ten, gdzie Excel przestaje reprezentować liczby dokładnie w postaci binarnej i przechodzi na reprezentację typu cecha i mantysa, co pozwala na przedstawienie dużo większych wartości, ale kosztem błędów zaokrągleń, które manifestują się w postaci anomalnych wyników działań. Drugi obszar to tam, gdzie nawet ten zaokrąglany sposób zapisu liczb w pamięci komputera przestaje wystarczać i arytmetyka się po prostu kończy, a większych liczb Excel już nie ma jak reprezentować.

Co specyficzne, granice pomiędzy sposobami reprezentacji oraz między liczbami reprezentowalnymi i za dużymi, by je reprezentować, są z jakiegoś powodu poszarpane i nieregularne.

Jakim wielkim ułatwieniem dla człowieka próbującego formalnie przanalizować działanie konkretnego arkusza kalkulacyjnego jest w tej sytuacji przybliżenie skończonej arytmetyki Excela arytmetyką nieskończoną, gdzie zawsze wykonalne są wszystkie zwykłe działania i gdzie dla każdej liczby naturalnej n zachodzi n+1>n. Formalne rozumowanie o takim przybliżonym modelu prawdziwego programu jest dużo prostsze, a jeśli użytkownicy nie będą przesadzać z wprowadzaniem gigantycznych liczb (lub tych bardzo bliskich 0, w rodzaju 1/n), to nic złego się nie stanie.

Jerzy Tyszkiewicz

Ilustracja Joanna Juszczak

Wspomniany na wstępie Wacław Sierpiński to ten sam, którego nazwiskiem posłużono się niegodnie w reklamie rzekomego sposobu na wygrywanie w Lotto.