08. Kresy#

Treści kształcenia. Szkic teorii aksjomatycznej liczb rzeczywistych, w tym kresy.

Efekty kształcenia: Student potrafi wyznaczać kresy ograniczonych podzbiorów zbioru liczb rzeczywistych.

Wstęp#

W trakcie omawiania aksjomatyki liczb rzeczywistych poznaliśmy aksjomat ciągłości oraz wiele jego konsekwencji. Przypomnijmy jego treść. Aksjomat ciągłości

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

W pierwszym kroku przybliżymy pojęcie kresu górnego (i dolnego), pojawiające się w powyższym sformułowaniu.

Defincja. Liczbę \(M \in \mathbb{R}\) nazywamy ograniczeniem górnym (dolnym) zbioru \(A \subset \mathbb{R}\), jeśli dla każdego \(x \in A\) zachodzi nierówność

\[ x \leq M, \quad (x \geq M). \]

Jeśli zbiór \(A\) posiada ograniczenie górne (dolne), to mówimy, że jest on ograniczony z góry (z dołu).
O zbiorze \(A\) mówimy, że jest ograniczony jeśli posiada ograniczenie górne oraz dolne.

Zbiór liczb naturalnych nie jest ograniczony. Posiada jednak ograniczenie dolne (np. \(M=-7\)). Zbiory \(\mathbb{Z}\) i \(\mathbb{Q}\) nie są ograniczone, nie mają także ograniczeń górnych ani dolnych. Zbiorem ograniczonym jest dowolny przedział \((a,b)\), dla \(a,b \in \mathbb{R}\).

Zadanie 1.

Które z poniższych zbiorów są ograniczone (z góry, z dołu):

  • Zbiór rozwiązań równania

\[ \sin x = 0. \]
  • Zbiór rozwiązań równania

\[ p(x)=0, \]

gdzie p jest pewnym wielomianem.

  • Zbiór wartości funkcji wykładniczej.

  • Zbiór wartości funkcji \(f(x)= x - |x|\).

Zadanie 2.

Zbadać ograniczoność zbioru \(A = \{ax^2 + bx + c: x \in \mathbb{R}\}\) w zależności od parametrów \(a, b, c \in \mathbb{R}\).

Zdefiniujemy teraz pojęcia kresu górnego i dolnego.

Definicja. Liczbę \(g \in \mathbb{R}\) nazywamy kresem górnym zbioru \(A \subset \mathbb{R}\) jeśli:

  1. \(g\) jest ograniczeniem górnym zbioru \(A\).

  2. Dla dowolnego \(\varepsilon >0\) istnieje \(a \in A\) takie, że \(a + \varepsilon > g\).

Podobnie definiujemy kres dolny.

Liczbę \(d \in \mathbb{R}\) nazywamy kresem dolnym zbioru \(A \subset \mathbb{R}\) jeśli:

  1. \(d\) jest ograniczeniem dolnym zbioru \(A\).

  2. Dla dowolnego \(\varepsilon >0\) istnieje \(a \in A\) takie, że \(a - \varepsilon < d\).

Innymi słowy, kres górny danego zbioru jest jego najmniejszym ograniczeniem górnym, zaś kres dolny jest jego największym ograniczeniem dolnym. Kres górny zbioru \(A\) oznaczać będziemy przez \(\sup A\), zaś kres dolny przez \(\inf A\).

Z aksjomatu kresu górnego wynika, że kres górny (dolny) zbioru ograniczonego z góry (z dołu) jest liczbą rzeczywistą. Albo inaczej - istnieje zawsze liczba rzeczywista, która jest kresem górnym (dolnym) zbioru ograniczonego z góry (z dołu). Tej własności nie ma zbiór liczb wymiernych, aby się o tym przekonać wystarczy rozważyć ciąg przybliżeń dowolnej liczby niewymiernej.

Zauważmy, że sama liczba (rzeczywista) będąca kresem (górnym czy dolnym) zbioru \(A\) może być elementem tego zbioru bądź nie należeć do zbioru \(A\). Gdy \(A\) jest zbiorem nieograniczonym, nieograniczonym z góry lub z nieograniczonym z dołu, wtedy (odpowiedni) kres nie istnieje.

W praktyce definicja nie dostarcza jakiegoś uniwersalnego algorytmu wyznaczania kresów, pokazuje jedynie w jaki sposób sprawdzić czy dana liczba rzeczywiście jest kresem.

Przykład.

Wyznaczyć kresy zbioru \(A = \{\frac{1}{n} \colon n \in \mathbb{N}\}\).

Widzimy, że kolejne elementy zbioru \(A\) są wyrazami dobrze znanego ze szkoły malejącego (i zbieżnego do \(0\)) ciągu \(\big(\frac{1}{n} \big)_{n \in \mathbb{N}}\). Chociaż zbiór jest prosto zdefiniowany i prawdopodobnie przeczuwamy, które liczb są jego kresem dolnym i górnym, spróbujmy napisać prostą funkcję, która sprawdzi (dla “uciętego” zbioru), czy dana liczba jest jego ograniczeniem górnym lub dolnym. Oczywiście nie ma powodu by takiej funkcji bezgranicznie ufać, zawsze bowiem będziemy operowali niepełnym zbiorem \(A\). Może to być dla nas jednak pewna sugestia.

def up_low_function(A,uper_bound, lower_bound):
    for a in A:
        if a > uper_bound:
            print(f'Podany zbiór nie jest ograniczony z góry przez liczbę {uper_bound}.')
            break
    else:
        print(f'Liczba {uper_bound} jest ograniczeniem górnym danego zbioru.')
    for a in A:
        if a < lower_bound:
            print(f'Podany zbiór nie jest ograniczony z dołu przez liczbę {lower_bound}.')
            break
    else:
        print(f'Liczba {lower_bound} jest ograniczeniem dolnym danego zbioru.')
A = []
for i in range(1,1000000):
    a_n = 1/i
    A.append(a_n)
up_low_function(A,0.9,0.00000001)    
Podany zbiór nie jest ograniczony z góry przez liczbę 0.9.
Liczba 1e-08 jest ograniczeniem dolnym danego zbioru.

Po kilku wywołaniach widzimy, że liczby \(10\), \(2\), \(1\) są ograniczeniami górnymi zbioru \(A\). Nie jest ograniczeniem górnym \(A\) żadna liczba mniejsza niż \(1\), bo \(1 \in A\). Wszystko wskazuje zatem, że liczba \(1\) jest kresem górnym danego zbioru. Istotnie tak jest.
Sytuacja jest nieco inna w przypadku ograniczenia dolnego. Każda liczba ujemna oraz zero zostały “uznane” przez naszą funkcję jako ograniczenia dolne. Zauważmy jednak, że liczba \(10^{-8}\) też została za takie ograniczenie uznana. Tymczasem przyjmując \(n = 10^9\) otrzymujemy, że

\[ a= \frac{1}{10^9}=10^{-9} < 10^{-8}. \]

co oznacza, że \(10^{-8}\) nie jest ograniczeniem zbioru \(A\). Tak więc nie możemy bezgranicznie ufać temu, co zwróci nasz naiwny algorytm. Może być to jednak dla nas dobra sugestia.

Spróbujmy zatem formalnie udowodnić, że \(\sup A = 1\), \(\inf B = 0\). Ponieważ \(\frac{1}{n} \leq 1\) implikuje \(n \geq 1\), więc liczba \(1\) jest ograniczeniem górnym zbioru \(A\). Ponieważ \(1 \in A\) jest to najmniejsze ograniczenie górne, czyli \(\sup A = 1\).
Pokażmy teraz, że \(\inf A =0\). Ponieważ każdy element zbioru \(A\) jest dodatni jako iloraz dwóch liczb dodatnich, \(0\) jest ograniczeniem dolnym zbioru \(A\).

Z zasady Archimedesa wynika, że dla dowolnego \(\varepsilon > 0\) istnieje \(n \in \mathbb{N}\) takie, że \(\frac{1}{n} <\varepsilon = 0 +\varepsilon\). Zatem liczba \(0\) spełnia drugi warunek z definicji kresu dolnego. Ostatecznie mamy \(\inf A = 0\).
Korzystając z monotoniczności ciągu definiującego zbiór \(A\) możemy wprost wskazać zależność między \(\varepsilon\), a tymi liczbami \(n\), dla których \(\frac{1}{n} < \varepsilon\). Spełniają one nierówność \(n \geq \big[\frac{1}{\varepsilon}\big] +1\).

Zadanie 3.

Wyznaczyć kresy następujących zbiorów:

  • \(A = \{\frac{n}{n+k} \colon n,k \in \mathbb{N}\}\),

  • \(B = \{0.8, 0.88, 0.888,...\}\),

  • \(C = \{\frac{a}{b+1} \colon a \leq b, a,b \in \mathbb{N} \}\).

W przykładze pierwszym obie liczby \(n\) i \(k\) są dodatnie, więc iloraz też jest dodatni, \(0\) jest zatem ograniczeniem dolnym. Licznik jest mniejszy niż mianownik w wyrażeniu \(\frac{n}{n+k}\), całe wyrażenie jest więc ograniczone z góry przez \(1\). Ustalając \(n=1\) wyrażenie \(\frac{n}{n+k}\) przyjmie postać \(\frac{1}{k+1}\). Korzystając z poprzedniego przykładu łatwo uzasadniamy, że \(\inf A = 0\).
Zastanówmy się czy ograniczenie górne równe \(1\) może być optymalne (najmniejsze). Tym razem ustalając \(k=1\), a \(n\) zmieniając dowolnie otrzymujemy elementy postaci \(\frac{n}{n+1}= 1 - \frac{1}{n+1}\). Już wiemy (zasada Archimedesa), że wyrażenie \(\frac{1}{n+1}\) może być dowolnie małe, tzn. dla dowolnego ustalonego \(\varepsilon\) jest ono mniejsze niż \(\varepsilon\). A zatem \(a= 1 - \frac{1}{n+1} > 1- \varepsilon\) dla dowolnego \(\varepsilon\), co oznacza, że \(\sup A = 1\).

A = []
for n in range(1,1000):
    for k in range(1,1000):
        a = n/(n+k)
        A.append(a)
up_low_function(A, 0.99, 0.01)
Podany zbiór nie jest ograniczony z góry przez liczbę 0.99.
Podany zbiór nie jest ograniczony z dołu przez liczbę 0.01.
up_low_function(A, 1, 0)
Liczba 1 jest ograniczeniem górnym danego zbioru.
Liczba 0 jest ograniczeniem dolnym danego zbioru.

Spróbujmy wyznaczyć kresy zbioru \(B\). Widzimy, że elementy tego zbioru otrzymujemy biorąc kolejne przybliżenia dziesiętne liczby \(0,888\dots\). Spróbujmy zapisać liczbę \(a = 0,(8)\) w postaci ułamka zwykłego. Korzystając z faktu, że liczbę \(a\) możemy zapisać w postaci sumy szeregu geometrycznego o ilorazie \(q=\frac{1}{10}\) raz pierwszym wyrazie równym \(\frac{4}{5}\) mamy

\[ a = \frac{\frac{4}{5}}{1 - \frac{1}{10}}= \frac{4}{5} \cdot \frac{10}{9}=\frac{8}{9}. \]

Jest oczywistym, że liczba ta jest ograniczeniem górnym zbioru \(B\) i nie może być ono mniejsze. Zatem \(\sup B = \frac{8}{9}\). Jest oczywiste, że \(\inf B = \frac{4}{5}\).

A = [0.8]
a = 0.8
q = 0.1
for i in range(1,100):
    a += 0.8 * 0.1**i
    A.append(a)
up_low_function(A, 0.8888889, 0.8)  
Liczba 0.8888889 jest ograniczeniem górnym danego zbioru.
Liczba 0.8 jest ograniczeniem dolnym danego zbioru.
up_low_function(A, 0.8888888, 0.81)
Podany zbiór nie jest ograniczony z góry przez liczbę 0.8888888.
Podany zbiór nie jest ograniczony z dołu przez liczbę 0.81.

Ostatni przykład jest bardzo podobny do dwóch pozostałych więc rachunki pozostawiamy do samodzielnego rozwiązania.