06. Liczby rzeczywiste#

Treści kształcenia. Szkic teorii aksjomatycznej liczb rzeczywistych, w tym kresy, zapis dziesiętny liczb rzeczywistych. Liczby wymierne i niewymierne. Sprawdzanie niewymierności liczb. Potęga o wykładniku rzeczywistym. Pierwiastek. Uwagi o arytmetyce komputerowej.

Efekty kształcenia: Student potrafi określić ograniczenia arytmetyki komputerowej w stosunku do pełnej teorii aksjomatycznej liczb rzeczywistych i dobrać odpowiednie metody dla unikania problemów. Potrafi też sprawdzać wykonalność obliczeń w pelnej precyzji. Potrafi sprawdzić wymierność lub niewymierność pewnych typów liczb rzeczywistych.

Wstęp#

Rozpocznijmy od uwagi: w szkole średniej ‘’niby’’ posługiwaliśmy się liczbami rzeczywistymi i każdy wie jak liczyć, ale czy na pewno? Co to w ogóle są liczby rzeczywiste? Nie było (na szczęście!!) formalnej definicji i jakoś sobie radziliśmy. No, może nie do końca, bo po prostu w szkole unikano problemów… Ale - w informatyce wszystko się ujawni!

Dlaczego? Z pomocą komputera obliczmy na ogół wielkości wynikające z potrzeb prowadzenia takich obliczeń ‘’jak na kartce’’. Ale tak się nie da! Postaramy się krótko przedstawić jak my liczymy na liczbach rzeczywistych, a jak potrafi to zrobić komputer.

Mamy dwie możliwości: albo prowadzimy obliczenia komputerowe na liczbach całkowitych za pomocą dodawania i mnożenia i wówczas - w pewnym uproszczeniu (w ograniczonym zakresie wielkości) - możemy liczyć na wyniki dokładne, albo ‘’udajemy’’ liczby rzeczywiste i wszystkie obliczenia obarczone są pewnym przybliżeniem (obliczenia numeryczne)! O tym dlaczego - za chwilę. Ale to dlatego położymy nacisk na przybliżanie wartości rzeczywistych za pomocą operacji dodawania i mnożenia liczb całkowitych i to dlatego takie algorytmy są najbardziej oczekiwane. O arytmetyce komputerowej precyzyjnie - nieco później, za to od razu zwrócimy uwagę na wszelkie trudności w reprezentowaniu liczb rzeczywistych i obliczeniach komputerowych. Coś, co ‘’na kartce’’ będzie wyglądało dobrze, nie musi być dobrym algorytmem obliczeniowym na komputerze! Właśnie dlatego, że nie liczymy na liczbach rzeczywistych!

Nawet obliczanie liczb rzeczywistych z zadaną precyzją i w rozsądnym czasie, to poważny problem. Interesuje nas przecież zbiór liczb zawierający m.in. wszystkie możliwe długości odcinków (np. przekątna kwadratu o boku 1), czy krzywych (np. w grafice komputerowej!), a to już istotne… Może warto też wspomnieć poszukiwania pierwiastków trójmianu kwadratowego (w szkole), a ogólniej rozwiązywanie równań - choćby wielomianowych. To będzie bardzo istotny aspekt obliczeń komputerowych, a w tym przypadku na ogół nie wiemy czy, ile i jakich rozwiązań poszukiwać. A niewymierne dla uczniów to były pierwiastki (niektóre) i liczba \(\pi\). To za mało…

Przykład 1. Ludziom pewien opis liczb nie sprawi problemu ze zrozumieniem, a co z komputerem? Niech

\[ a = 0,1010010001000010000010000001... \]

Wiemy co będzie dalej po przecinku? Mamy jedynki i rosnące (o 1) liczby zer. To z pewnością jesdt liczba rzeczywista. Ale czy wymierna? Niemożliwe - wiemy, że liczby wymierne mają rozwinięcia dziesiętne skończone lub okresowe, a tu na pewno nie zachodzi żaden z tych przypadków. Czy i jak można prowadzić obliczenia komputerowe na takich liczbach? Niestety - dokładnych rachunków się nie da! Będziemy pamiętali, że liczby niewymierne są potrzebne, ale do obliczeń komputerowych trzeba o nie ``zadbać’’.

Przykład 2. A co z liczbami wymiernymi? Na ogół w literaturze jest napisane, że możemy na nich precyzyjnie operować na komputerze (poza ‘’zbyt małymi’’ i ‘’zbyt dużymi’’). No to teraz sprawdźmy ułamek

\[ b = \frac{1}{3313} . \]

Bez wątpienia to iloraz liczb całkowitych, a więc jest to liczba wymierna. Ale to dobry przykład, by nawet w przypadku działań na liczbach wymiernych na komputerze prowadzić obliczenia na ułamkach zwykłych (!). Gdyby kogoś interesowała postać dziesiętna (dwójkowa), to na komputerze … może być problem. Poza tym - dla uproszczenia mówimy tu o rozwinięciach dziesiętnych, tak naprawdę, to nawet liczby \(0.1\) nie da się dokładnie reprezentować w systemie dwójkowym.

Proszę (samodzielnie - dowolny program) poszukać czy rozwinięcie dziesiętne powyższej liczby jest skończone czy okresowe i jeśli okresowe, to jak długi ma okres? (Odp.: okresowe, ale długości nie podam…) Powodzenia! Dla niecierpliwych kod poniżej…

To teraz zauważmy różnicę pomiędzy działaniem

\[ \frac{1}{3} + \frac{1}{7} \]

(liczby w liczniku i mianowniku - całkowite) oraz

\[ \frac{1.0}{3.0} + \frac{1.0}{7.0} \]

(liczby w liczniku i mianowniku - rzeczywiste). To pierwsze działanie będzie wykonane jako

\[ \frac{3 + 7}{3\cdot 7} \]

(i to dlatego warto było rozważać algorytmy \(NWD(a,b)\)!). Proszę spojrzeć na wynik i przemyśleć jak jest wykonane drugie z działań.

Można też każdy z ułamków zamienić na dziesietny i dopiero później dodać. Proszę to wszystko też sprawdzić np. w Pythonie…

## obliczanie dlugosci okresu ulamka 1/n
import sys
 
# funkcja obliczania
def getPeriod(n):
    
   # slownik
   mymap = dict()
 
   # zapoczatkowane wartości reszty i jej polozenia
   rem = 1
   i = 1
   pos = 0
 
   # znajdujemy kolejne reszty az do powtorzenia 
   while True:
    
        # nastepna reszta - widoczne jak zmodyfikować dla reszt w systemach niedziesietnych
        rem = (10 * rem) % n
 
        # gdy reszta znajdzie sie w slowniku, to roznica pomiedzy 
        # biezaca i poprzednia pozycja wystapienia jest dlugoscia okresu
  
        if (rem in mymap):
            return (i - mymap[rem])
 
        # gdy nie istnieje dodajemy 'i' do slownika
        mymap[rem] = i
        i += 1
    
   # a ta linia kodu nigdy nie zostanie wykonana - bo każda liczba wymierna, w tym 1/n 
   # ma rozwiniecia skonczone lub okresowe!
   return sys.maxint
 
# Tu wstawiamy swoje liczby n
print(getPeriod(3313))
print(getPeriod(7))
3312
6

Zadanie samodzielne: znaleźć rozwinięcie dwójkowe liczby \((0,1)_{10}\).

Ciekawostka: ten banalny problem - myślenie w kategoriach rozwinięć dziesiętnych - doprowadził do dużego problemu w amerykańskim systemie rakietowym Patriot (zliczano impulsy co \(0.1\) sekundy - poprawiono na \(0.125\) - DLACZEGO?).

Uwaga na program:

x=float(0)
while (x!=1):
    x+=0.1
    print(x)
print("Do tego miejsca nigdy nie docieramy...")

Wniosek: liczb zmiennoprzecinkowych NIE WOLNO przyrównywać do wartości dokładnych!

A zainteresowani (czyli: wszyscy) znajdą więcej o poważnych problemach spowodowanych przez takie błędy zaokrągleń ‘’Błądzić rzeczą nie tylko ludzką… czyli arytmetyka z komputera’’, Łukasz Bodzon

Przykład 3. I jeszcze jedna operacja poznana w szkole średniej - potęga liczby. Mamy dla \(a > 0\), \(m,n \in {\mathbb{N}}\)

\[ a^n = \underbrace{a\cdot ... \cdot a} \quad (n - krotnie), \]
\[ a^{-1} = \frac{1}{a} \]
\[ a^{\frac{n}{m}} = (a^m)^{\frac{1}{n}} \]

i pojawia się pierwszy problem: \(c = b^{\frac{1}{n}}\). Jasne, że chodzi o liczbę \(c\) taką, że \(c^n = b\). Czy tak liczba istnieje? (sprawdzimy) Czy jest wymierna (sprawdzimy)? Jak ma ją obliczyć komputer? A najgorsze przed nami! Co to jest \(a^x\), gdy \(x\) jest liczbą rzeczywistą? Wyjaśnimy…

Ale informatyka interesują obliczenia: jak obliczyć tę liczbę na komputerze? Tam ma być szybko i łatwo :-) Najczęściej chcemy mieć

\[ a^x \approx 1 + p\cdot x , \]

ale \(p\) nie powinna być niewymierna (bo nie ma dokładnej reprezentacji i powiększamy błąd), jak najprostsza, a najlepiej \(p= 1\)! Dla jakiego \(a\) tak jest? I tu niespodzianka: tak jest dla ‘’specjalnej liczby’’ \(a = e\) (o której wkrótce musimy powiedzieć).

\[ e^x \approx 1 + x . \]

A jak jest dla innych liczb \(a\)?

Pojawi się (lub już jest znany) problem konieczności poszerzenia zbioru liczb rzeczywistych (np. liczby zespolone), ale również w ich przypadku konieczne będzie posługiwanie się liczbami rzeczywistymi i musimy je wcześniej dobrze poznać.

Liczby rzeczywiste.#

W cytowanej literaturze zainteresowani mogą znaleźć różne definicje (konstrukcje) zbioru liczb rzeczywistych, ale one nie będą pomocne w obliczeniach, więc przyjmiemy inny punkt widzenia:

to będzie pewien niepusty zbiór z określonymi w nim dwoma działaniami (dodawania i mnożenia) oraz relacją porządku (''mniejszy'') i gdy spełnione pewne aksjomaty.

Czyli: w ujęciu aksjomatycznym pojęcie zbioru \({\mathbb{R}}\) oraz arytmetyki liczb rzeczywistych stanowi sześć pojęć pierwotnych \(({\mathbb{R}},0,1,+,\cdot,<)\), gdzie \({\mathbb{R}}\) jest pewnym zbiorem, 0 i 1 są elementami \({\mathbb{R}}\) natomiast \(+\) i \(\cdot \) oznaczają działania dwuargumentowe określone w \({\mathbb{R}}\) oraz \(<\) oznacza relację dwuargumentową określoną w \({\mathbb{R}}\). Do tego aksjomaty określają własności tych obiektów.

Aksjomaty.

[A.1] (Przemienność dodawania). Dla wszystkich \(x, y \in {\mathbb{R}}\) zachodzi równość \(x + y = y + x\).

[A.2] (Łączność dodawania). Dla wszystkich \(x, y, z \in {\mathbb{R}}\) zachodzi równość \((x + y) + z = x + (y + z)\).

[A.3] (Element neutralny dodawania). Dla wszystkich \(x \in {\mathbb{R}}\) jest \(x + 0 = x\).

[A.4] (Istnienie elementów przeciwnych). Dla każdego \(x \in {\mathbb{R}}\) istnieje element \(-x \in {\mathbb{R}}\) taki, że \(x + (-x) = 0\).

[A.5] (Przemienność mnożenia). Dla wszystkich \(x, y \in {\mathbb{R}}\) zachodzi równość \(x\cdot y = y\cdot x\).

[A.6] (Łączność mnożenia). Dla wszystkich \(x, y, z \in {\mathbb{R}}\) zachodzi równość \((x\cdot y)\cdot z = x\cdot (y\cdot z)\).

[A.7] (Charakteryzacja jedynki). Dla wszystkich \(x \in {\mathbb{R}}\) jest \(x \cdot 1= x\).

[A.8] (Istnienie elementów odwrotnych). Dla każdego \(x \in {\mathbb{R}}\), \(x \not= \emptyset\), istnieje element \(x^{-1} \in {\mathbb{R}}\) taki, że \(x\cdot x^{-1} = 1\).

[A.9] (Rozdzielność mnożenia względem dodawania). Dla wszystkich \(x, y, z \in {\mathbb{R}}\) zachodzi równość \(x\cdot (y + z) = x\cdot y + x\cdot z\).

[N.1] (Prawo trichotomii). Dla wszystkich \(x, y \in {\mathbb{R}}\) zachodzi dokładnie jedna z trzech możliwości: \(x < y, x = y, y < x\).

[N.2] (Przechodniość). Dla wszystkich \(x, y, z \in {\mathbb{R}}\), jeśli \(x < y\) i \(y < z\), to \(x < z\).

[N.3] (Związki nierówności z działaniami). Dla wszystkich \(x, y, z \in {\mathbb{R}}\): (a) jeśli \(x < y\), to \(x + z < y + z\); (b) jeśli \(x < y\) i \(0 < z\), to \(x\cdot z < y\cdot z\).

plus ważny: Aksjomat ciągłości (Dedekinda, Archimedesa)

[C.1] Każdy niepusty, ograniczony z góry podzbiór \(A \subset {\mathbb{R}}\) ma kres górny \(M = \sup A \in {\mathbb{R}}\).

Nie uczymy się tych aksjomatów na pamięć! W praktyce są wszystkim znane (może poza ostatnim). Jako ciekawostkę podajmy, że zbiór liczb wymiernych spełnia wszystkie aksjomaty - poza aksjomatem ciągłości!

A co szczególnego jest w tym ostatnim aksjomacie? O! Dla informatyka ma on sporo konsekwencji!

Funkcja ‘’entier’’. Jedną z podstawowych konsekwencji aksjomatyki liczb rzeczywistych jest istnienie funkcji ‘’entier’’. Jest ona używana (i użyteczna) w arytmetyce komputerowej (i to mimo braku liczb rzeczywistych w takich obliczeniach).

Definicja. Dla każdej liczby rzeczywistej \(x\) określamy

\[ Ent(x) = [x] = \sup \{ k \in {\mathbb{Z}} : k \leq x \} . \]

A jaki związek z aksjomatem? To proste: zbiór liczb całkowitych \(\{ k \in {\mathbb{Z}} : k \leq x \}\) jest ograniczony z góry (przez \(x\)), czyli ma kres górny. Prosty dowód (nie wprost) pokazuje, że ten kres to właśnie \(Ent(x)\) (samodzielne ćwiczenie).

Oczywiście mamy np. \(Ent(5) = 5\), \(Ent(\sqrt{2}) = 1\), \(Ent(-\sqrt{2}) = -2\), \(Ent(\frac{5}{17}) = 0\) itp.

Ćwiczenie 1. wykonać wykresy funkcji \(y = Ent(x)\) oraz \(y = x - Ent(x)\).

Ćwiczenie 2. Teraz już możemy się domyślić jak jest zdefiniowana liczba \(a^x\) przy \(x\) - dowolnym rzeczywistym (niewymiernym). Dla dowolnej liczby rzeczywistej \(x\) rozpatrzmy zbiór liczb wymiernych

\[ \{y = \frac{p}{q} : p,q \in {\mathbb{Z}} , y \leq x \} \]

jako podzbiór \({\mathbb{R}}\). Jest on ograniczony z góry, czyli ma kres górny (niekoniecznie liczba wymierna, bo przypomnijmy, że aksjomat ciągłości jest spełniony dla liczb rzeczywistych - a dla wymiernych nie jest prawdziwy) będący liczbą rzeczywistą. }

Pełen dowód - w literaturze np.  [1.].

I kolejna ważna konsekwencja aksjomatu ciągłości

Twierdzenie. (zasada Archimedesa) Dla dowolnego \(x \in {\mathbb{R}}\) oraz \(a > 0\) istnieje liczba naturalna \(n \in {\mathbb{N}}\) taka, że

\[ n \cdot a > x . \]

A gdzie z tego korzystamy? M.in. z tego wynika istnienie zapisu dziesiętnego liczb rzeczywistych (o innych podstawach także). Dowód - pozostawiamy zainteresowanym. Także gęstość zbioru liczb wymiernych w \({\mathbb{R}}\) jest jej konsekwencją. Poza tym wynika z tego, że zbiór \({\mathbb{N}}\) nie jest ograniczony z góry, czy właśnie fakt istnienia części całkowitej z liczby \(x \in {\mathbb{R}}\) - istnieje dokładnie jedna liczba naturalna \(n \in {\mathbb{N}}\) taka, że

\[ n \leq x < n+1 . \]

Kolejna ważna własność wykorzystywana w oparciu o aksjomat Archimedesa: dla dowolnej liczby \(\varepsilon > 0\) istnieje liczba naturalna \(n\) taka, że \(\frac{1}{n} < \varepsilon\).

Ćwiczenie samodzielne - wykazać to. Tę własność często wykorzystamy w algorytmach…

No i nareszcie geometryczna intuicja tej zasady jest następująca: jeśli mamy dwa odcinki długości \(x\) i \(y\), to odkładając odcinek długości \(x\) odpowiednią (czyli \(n\)-krotnie)) ilość razy otrzymamy w sumie odcinek o długości większej niż \(y\).

Czy liczby rzeczywiste są potrzebne?

Definicja. Liczby, których nie można przedstawić wzorem \(\frac {\displaystyle l}{\displaystyle m}\), gdzie \(l,m\in \Bbb Z\) oraz \(m\neq 0\) nazywamy liczbami niewymiernymi.

Przykładami liczb niewymiernych są np. liczby \(\pi\), \(\sqrt 2\), \(\sqrt {18}\) i inne. To jednak tylko przykłady! Jeśli ktoś potrzebuje nieco więcej o problemach (typu szkolnego!!): polecam np. ‘’Miniatury Matematyczne’’ tom 11, Z. Bobiński, A. Świątek, J. Macys, ‘’O liczbach niewymiernych’’.

Zadanie 1. Pokażemy, że \(\sqrt{3}\) jest liczbą niewymierną.

Rozwiązanie: Przypomnimy procedurę znaną ze szkoły średniej, a dla pierwiastków najlepszy wybór to
dowód nie wprost.

Przypuśćmy, że jest to liczba wymierna, czyli, że istnieją liczby całkowite względnie pierwsze \(p\) i \(q\) takie, że

\[ \sqrt{3} = \frac{p}{q} . \]

Podnosimy obustronnie do kwadratu (formalnie: obie strony mnożymy przez tę sama liczbę…) i mnożymy otrzymane równanie przez \(q^2\):

\[ 3q^2 = p^2 . \]

Lewa strona jrest podzielna przez 3, a więc prawa też musi taka być, ale jeżeli \(3|p^2\), to \(3|p\). To jednak oznacza, że lewa strona musi być podzielna przez 9. Stąd \(3|q^2\), a więc \(3|q\) - sprzeczość, bo liczby \(p\) i \(q\) sa względnie pierwsze.

Ale żeby nie było tak łatwo: zwróćmy uwagę, że sprawdzenie niewymierności liczby może być trudne (np. \(\pi\)) lub mieć niestandardowy dowód (np. \(a = 0,1010010001000010000010000001...\)). Dlaczego to dla nas ważne? Bo z całą pewnością liczby niewymierne będą jedynie przybliżane na komputerze, więc warto kontrolować czy wynik jest dokładny, czy przybliżony. Tak jako ciekawostka: są liczby, o których nie wiemy (!) czy są wymierne, czy nie (tzn. nie mamy w tym przypadku dowodu).

Zadanie 2. Pokazać, że liczba \(\sqrt[3]{100}\) nie jest wymierna.

Rozwiązanie. Dowód nie wprost. Przypuśćmy, że liczba ta jest wymierna i jest postaci \(\frac{a}{b}\), gdzie \(a\) i \(b\) są liczbami całkowitymi względnie pierwszymi. Podnosząc obie strony równania \(\sqrt[3]{100} = \frac{a}{b}\) do potęgi 3 i przekształcając otrzymujemy równoważną równość

\[ 100 b^3 = a^3 . \]

Teraz wykorzystamy rozkład liczb naturalnych na czynniki pierwsze i skorzystamy z faktu (twierdzenia), które mówi, że każdą liczbę naturalną można przedstawić w postaci iloczynu liczb pierwszych i rozkład taki jest jednoznaczny z dokładnością do kolejności występowania czynników pierwszych. Dla liczby 100 mamy następujący rozkład na czynniki pierwsze: \(100 = 2^5 \cdot 5^2\), a więc dwie dwójki i dwie piątki, w dowolnej kolejności. Porównajmy teraz obie strony równania i policzmy ilość piątek (dwójki - analogicznie, ale wystarczy jeden czynnik), które występują w rozkładzie na czynniki pierwsze obu stron.

Po pierwsze, lewa strona jest podzielna przez 5, więc i prawa strona musi być podzielna przez 5. Ale jeśli \(5|a^3\), to także \(5|a\). Zatem liczba 5 występuje w rozkładzie liczby \(a\) na czynniki pierwsze.

Oznaczmy więc ilość piątek w tym rozkładzie przez \(k\). Czyli dzieli \(a\) i żadna wyższa potęga liczby 5 nie dzieli liczby \(a\). Stąd wynika, że \(5^{3k}\) dzieli prawą stronę, czyli w rozkładzie prawej strony na czynniki pierwsze liczba piątek jest podzielna przez 3. Natomiast w rozkładzie na czynniki pierwsze liczby po lewej stronie liczba piątek daje przy dzieleniu przez 3 resztę 2, gdyż ilość piątek w rozkładzie liczby \(b^3\) jest podzielna przez 3, a do tego dochodzą jeszcze 2 piątki z rozkładu liczby 100. Zatem liczba czynników pierwszych równych 5 po lewej stronie jest inna niż po prawej stronie. Sprzeczność.

Teraz coś bardziej ogólnego niż poprzednie zadania (dowód jednak pominiemy…):

Twierdzenie. Dla dowolnej liczby naturalnej \(x \geq 1\) i dowolnej liczby naturalnej \(n \geq 2\) istnieje dokładnie jeden pierwiastek \(n\)-tego stopnia z \(x\) oznaczany przez \(\sqrt[n]{x} = x^{\frac{1}{n}}\) i jest albo liczbą naturalną, albo niewymierną.

Koniecznie trzeba zwrócić uwagę na dwa elementy tezy: ‘’pierwiastek istnieje’’ i ‘’jest co najwyżej jeden’’ (jednoznaczność).

To dwa stałe i konieczne elementy w każdym użyciu obiektu w informatyce! Symbol \(\exists !\) czytamy właśnie ‘’istnieje dokładnie jeden’’.

Uwaga: Przypomnijmy, że problem z liczbami niewymiernymi w obliczeniach komputerowych polega na tym, że są ciekawe charakteryzacje takich liczb - ale wszystkie one wymagają nieskończonych operacji (cokolwiek to znaczy :-), musimy to sprecyzować). Komputer nie pozwala na operacje nieskończone…

Komputer może posługiwać się typem real (rzeczywiste), ale nie są to jednak liczby rzeczywiste, a jest to jedynie

skończony zbiór reprezentantów przedziałów.

Patrz: paragraf 8.2, strony 120-130

Całą pracę musi wykonać informatyk…

Obliczenia numeryczne = obliczenia (przybliżone) na danych typu real. Co w ogóle robi komputer? Tylko jedno! Przetwarza liczby… Problem w tym, że nie są to liczby rzeczywiste.

Uwaga: skoro ludziom trudno przyswoić rozumienie liczb rzeczywistych i operować nimi, to jak miałby to zrobić komputer? Niestety: nie może!

To informatyk musi przewidzieć skutki braku liczb rzeczywistych w arytmetyce komputerowej!

Zarówno liczby, jak i funkcje wydają się być nam dobrze znane, ALE… nie komputerom. To po co nam one? Sporo przykładów nie nadaje się dla studentów I roku, ale z pewnością wszyscy napotkają sieci neuronowe i sztuczna inteligencję: potrzebujemy obliczyć wagi połączeń między sztucznymi neuronami - i to jak najdokładniej (liczby rzeczywiste).

A już np. liczba rzeczywista \(e \in {\mathbb{R}}\) będzie nam bezpośrednio potrzebna (np. przy zagadnieniach wizualizacji) - wprowadzimy ją wkrótce.

Uwaga: w związku z tym nie można oczekiwać, że aksjomaty liczb rzeczywistych (a więc i nasze oczekiwania wobec własności np. działań) bądą spełnione w arytmetyce komputerowej!

  • Fakt, że w arytmetyce zmiennoprzecinkowej nie istnieją liczby rzeczywiste w sensie matematycznym, czyli nie muszą być spełnione wszystkie aksjomaty, nie oznacza, że nie ma tam żadnych reguł!*

  • To może nie jest właściwy przedmiot, aby to wszystko omówić, ale nadal istnieje zbiór aksjomatów, które muszą spełniać operacje elementarne bez względu na stosowaną arytmetykę zmiennopozycyjną! Czyli: nie są zdefiniowane dokładnie, ale pewne warunki muszą zachodzić. Zainteresowani znajdą je np tu: Niklaus Wirth, ‘’Wstęp do programowania systematycznego’’, WNT (str.42-45). Warto sprawdzić czym się różnią od naszych aksjomatów…*

A teraz kluczowa własność liczb rzeczywistych pozwalająca na ich dowolne przybliżanie liczbami wymiernymi: gęstość zbioru liczb wymiernych w zbiorze liczb rzeczywistych: zbiór \(A\) nazywamy gęstym w \({\mathbb{R}}\) jeżeli dla dowolnych \(x,y \in {\mathbb{R}}\), \(x< y\) istnieje element \(a \in A\) taki, że

\[ x < a < y \quad . \]

Twierdzenie. Zbiory \(A = {\mathbb{Q}}\) liczb wymiernych oraz \(B = {\mathbb{R}} \setminus {\mathbb{Q}}\) są geste w zbiorze liczb rzeczywistych \({\mathbb{R}}\).

Oczywiście, w informatyce ważniejszy jest ten fakt dla zbioru \({\mathbb{Q}}\).

Zadanie 3. Jak już wiemy liczby wymierne mogą nie być dokładnie reprezentowane, ale liczby niewymierne z pewnością nie mają dokładnej reprezentacji na komputerze. Warto zawsze wykonywać operacje na liczbach całkowitych (wymiernych). Ale wymierne przybliżenia nie zawsze są łatwe. Znajdziemy dobre przyliżenia pierwiastków z liczb wymiernych (pierwszy, ale nie jedyny algorytm).

Przypomnijmy nierówność Cauchy’ego dla średnich: dla dowolnych liczb dodatnich \(a,b \in {\mathbb{R}}\) zachodzi nierówność pomiędzy ich średnimi

\[ H \leq G \leq A \quad \Rightarrow \quad \frac{2 a\cdot b}{a+ b} \le \sqrt{a \cdot b} \le \frac{a + b}{2} . \]

Co więcej (a to istotne!), równość zachodzi wtedy i tylko wtedy, gdy \(a=b\).

W szczególności dla dowolnego \(x > 0\), \(x \in {\mathbb{Q}}\) wybierzmy dowolny (na razie) rozkład na iloczyn \( x = a\cdot b\), \(a,b \in {\mathbb{Q}}\) i wtedy

\[ \frac{2 a\cdot b}{a+ b} \le \sqrt{x} \le \frac{a + b}{2} , \]

a więc pierwiastek \(\sqrt{x}\) jest oszacowany z góry i z dołu przez liczby wymierne! Jak dobre to oszacowanie? Na razie nie wiemy. Jak uzyskać lepsze? To proste: zauważmy, że możemy wziąć kolejny rozkład na czynniki wymierne

\[ x = \left( \frac{2 a\cdot b}{a+ b} \right) \cdot \left( \frac{a + b}{2} \right) = a \cdot b . \]

Oznaczmy te liczby odpowiednio przez \(a_1\) i \(b_1\). Czyli

\[ \frac{2 a_1\cdot b_1}{a_1 + b_1} \le \sqrt{x} \le \frac{a_1 + b_1}{2} . \]

Nie wyprowadzamy i nie uczymy się gotowego wzoru: sprawdzimy na przykładach. Oszacujmy więc np. \(\sqrt{11}\).

Rozwiązanie. Rozpoczniemy od oczywistego rozkładu: \(x = 11 = 1 \cdot 11\), czyli \(a =1\), \(b = 11\). Czyli

\[ \frac{22}{12} \le \sqrt{x} \le \frac{12}{2} \quad \Rightarrow \quad \frac{11}{6} \leq \sqrt{11} \leq 6 . \]

Słabe oszacowanie! Liczymy dalej: \(x = \frac{11}{6} \cdot 6\):

\[ \frac{132}{47} = \frac{22}{\frac{11}{6} + 6} \le \sqrt{x} \le \frac{{\frac{11}{6} + 6}}{2} = \frac{47}{12}. \]

I powtarzamy dla \(x = \frac{132}{47} \cdot \frac{47}{12}\) … (samodzielnie). Jak na informatyków przystało chcemy też zwiększyć precyzję tego algorytmu i zmniejszyć jego złożoność obliczeniową. Jak? Należy już w pierwszym kroku wybrać liczby ‘’jak najbliższe sobie’’: proszę zaznaczyć na osi liczbowej wszystkie uzyskane oszacowania! To będą algorytmy doboru wartości początkowych… Może warto rozpocząć od \(a = 3\) i \(b= \frac{11}{3}\)? Dlaczego? Bo \(a\) jest największa liczbą całkowitą dla której jej kwadrat jest mniejszy niż 11: \(a^2 = 9 < 11\). Proszę przemyśleć inną metodę doboru wartości początkowej.

Zadanie 4. Oszacować wartości

a) \(\sqrt{17}\)

b) \(\sqrt{3313}\)

c) \(\sqrt{2453260}\).

Niestety, ten algorytm np. dla \(\sqrt{\pi}\) jest … niezadowalający. To problem i np. w arkuszach kalkulacyjnych to często predefiniowana stała (np. PIERW.PI w ‘’Excel’u’’). Proszę samodzielnie sprawdzić dlaczego. Dla innych liczb niewymiernych dopiero będziemy poznawać podobne algorytmy.

Zadanie 5. A co z pierwiastkami wyższych stopni? A tu ponownie potrzebna matematyka - tym razem nierówność Cauchy’ego dla \(n\)-elementów (dowody są różne, chyba najprostszy - indukcja matematyczna). Niech \(n \in {\mathbb{N}}\), \(a_1, a_2, ... , a_n > 0\), wtedy

\[ H_n \le G_n \le A_n \quad \Rightarrow \quad \frac{n}{\frac{1}{a_1} + \frac{1}{a_2} + \dots + \frac{1}{a_n}} \leq \sqrt[n]{a_1 \cdot a_2 \cdot \ldots \cdot a_n} \leq \frac{a_1 + a_2 + \dots + a_n}{n} . \]

Oczywiście również teraz: w nierówności zachodzi znak równości wtedy i tylko wtedy, gdy wszystkie liczby są równe.

Tak przy okazji warto wspomnieć o kolejnej średniej = średniej kwadratowej:

\[ K_n = \sqrt\frac{a_1^2 + a_2^2 + \dots + a_n^2}{n} \]

akurat bardzo często spotykanej w informatyce: (‘’błąd średniokwadratowy’’). Jest ona jeszcze większa niż średnia arytmetyczna. } Czyli mamy

  • a) średnią arytmetyczną, którą dla \(n\) liczb rzeczywistych \(a_1,a_2,…,a_n\) definiuje się jako:

\[ A_n=(a_1+a_2+ ... +a_n)/n \]
  • b) średnią geometryczną, którą dla \(n\) liczb nieujemnych \(a_1,a_2,…,a_n\) definiuje się jako:

\[ G_n=\sqrt[n]{(a_1\cdot a_2 \cdot ... \cdot a_n )} \]
  • c) średnią harmoniczną którą dla \(n\) liczb dodatnich \(a_1,a_2,…,a_n\) definiuje się jako:

\[ H_n=n/(1/a_1 +1/a_2 + ... +1/a_n ) \]
  • d) średnią kwadratową, którą dla \(n\) liczb rzeczywistych \(a_1,a_2,…,a_n\) definiuje się jako:

\[ K_n=\sqrt{((a_1^2+a_2^2+ ... +a_n^2)/n)} \]

A teraz zadania : proszę za pomocą tej nierówności i metody rozkładu na czynniki oszacować wymiernie liczby

a2) \(\sqrt[3]{67}\),

b2) \(\sqrt[7]{21807}\).

Zadanie 6. Proszę znaleźć wymierne oszacowania dla

\[ \sqrt[n]{n} . \]

Rozwiązanie. Rozpoczniemy od średniej geometrycznej liczb

\[ \sqrt[n]{n} = \sqrt[n]{1\cdot 1 \cdot ... \cdot 1 \cdot \cdot n} \]

czyli

\[ \frac{n}{\frac{1}{1} + \frac{1}{1} + \dots + \frac{1}{1} + \frac{1}{n}} \leq \sqrt[n]{n} \leq \frac{1 + 1 + ... + 1 + n}{n}, \]

czyli

\[ \frac{n}{n-1 + \frac{1}{n}} \leq \sqrt[n]{n} \leq \frac{2n - 1}{n} \]
\[ \frac{n^2}{n^2 -n +1} \leq \sqrt[n]{n} \leq \frac{2n - 1}{n}. \]

Można też prowadzić dalsze oszacowania, ale te jest wystarczające w większości przypadków (porównamy to także przy granicach ciągów).

Zadanie 7. Niech \(a,b,c\) będą liczbami rzeczywistymi i dodatnimi. Sprawdzić, że

\[ (a+b)^2+(a+b+4c)^2 \geqslant \frac{100abc}{(a+b+c)} . \]

Rozwiązanie. Wskazówką do tego wniosku powinno być wyrażenie \(a+b+4c\) znajdujące się w jednym z nawiasów. Zatem wykorzystując naszą obserwację oraz korzystając z nierówności pomiędzy średnią arytmetyczną a geometryczną możemy otrzymać następującą nierówność:

\[\begin{split} \begin{eqnarray*} a+b+c &=& (a/2+a/2+b/2+b/2+c) \geqslant 5\cdot \sqrt[5]{((a^2 b^2 c)/16)} \\ &=& 5\cdot 2^{(-0,8)} a^{0,4} b^{0,4} c^{0,2} \end{eqnarray*} \end{split}\]

Następnie po spotęgowaniu nawiasów znajdujących się po lewej stronie, odpowiednim rozbiciu poszczególnych wyrazów i wykorzystaniu nierówności pomiędzy średnią arytmetyczną a geometryczną otrzymujemy:

\[\begin{split} \begin{eqnarray*} &&(a+b)^2+(a+b+4c)^2=2(a^2+b^2+8c^2+2ab+4ac+4bc) \\ &=&2(a^2+b^2+4c^2+4c^2+ab+ab+2ac+2ac+2bc+2bc) \\ &\geqslant & 10\sqrt[10]{((a^2 )(b^2 )(4c^2 )(4c^2 )(ab)(ab)(2ac)(2ac)(2bc)(2bc) )} \\ &=& 20\cdot 2^{0,8} a^{0,6} b^{0,6} c^{0,8} . \end{eqnarray*} \end{split}\]

W kolejnym kroku wystarczy wykorzystać obie otrzymane powyżej nierówności.

\[\begin{split} \begin{eqnarray*} (a+b)^2+(a+b+4c)^2 &\geqslant& \frac{100abc}{(a+b+c)} \\ \left( (a+b)^2+(a+b+4c)^2 \right) \cdot (a+b+c) &\geqslant& 100abc \\ \left( (a+b)^2+(a+b+4c)^2 \right) \cdot (a+b+c) &\geqslant& 5\cdot 2^{(-0,8)} a^{0,4} b^{0,4} c^{0,2} \cdot \\ && \cdot 20 \cdot 2^{0,8} a^{0,6} b^{0,6} c^{0,8} = 100abc . \end{eqnarray*} \end{split}\]

Zatem nasza nierówność została udowodniona.

Zadanie 8. Nie zawsze warto prowadzić bezpośrednie obliczenia na liczbach niewymiernych, bo możemy - zupełnie niepotrzebnie - uzyskiwać tylko wartości przybliżone zamiast dokładnych. Na ogół programy przeznaczone do obliczeń też wykonują takie operacje! Sprawdzić, czy liczba

\[ \sqrt[3]{7 + \sqrt{50}} + \sqrt[3]{7 - 5\sqrt{2}} \]

jest wymierna czy nie. Oblicz ją (operacjami algebraicznymi i poprzez symulacje na komputerze - dla porównania).

Rozwiązanie. Korzystamy ze wzorów redukcyjnych:

\[ \sqrt[3]{7 + \sqrt{50}} + \sqrt[3]{7 - 5\sqrt{2}} = \sqrt[3]{(\sqrt{2} +1)^3} + \sqrt[3]{(1 - \sqrt{2})^3} = \sqrt{2} + 1 + 1 - \sqrt{2} = 2 . \]

Zadania domowe.

(1) Sprawdzić, czy liczba

\[ \frac{\sqrt{2}}{\sqrt{2\sqrt{2} +3}} - \frac{\sqrt{6-4\sqrt{2}}}{2\sqrt{2}-3} . \]

jest wymierna czy nie. Oblicz ją.

(2) Sprawdź, że dla dowolnej liczby naturalnej \(n \geq 1\)

\[ \sqrt{n+1} - \sqrt{n} \]

jest zawsze liczbą niewymierną. Zwróćmy uwagę, że symulacja komputerowa nam nie pomoże - ale można próbować

(3) Dowieść, że dla dowolnych dodatnich rzeczywistych liczb \(a,b,c\) zachodzi nierówność:

\[ (a+b)(b+c)(c+a) \geq 8 abc. \]

(4) Sprawdź, że

\[ \sqrt{8- 2\sqrt{15}} + \sqrt{5 - \sqrt{24}} + \sqrt{8 + 2\sqrt{2} - 2 \sqrt{5} - 2\sqrt{10}} = 1. \]

Wskazówka: albo skorzystać z faktu, że mamy wykazać równość i przekształcić ją równoważnie, albo w takich zadaniach sprowadzamy wyrażenia pod pierwiastkiem do kwadratu sumy lub różnicy.

(5) Udowodnić bezpośrednio, że liczba \(\sqrt{3} + \sqrt{4}\) jest niewymierna.

(6) Udowodnić, że liczba \(\sqrt[3]{4} + \sqrt[3]{5}\) jest niewymierna.