16 KiB
Ćwiczenia 3
_TEMAT: przestrzenie metryczne
Przykłady metryk
Definicja (metryka)
Jeżeli w niepustym zbiorze $X$ dla każdych dwóch elementów $x,y$ tego zbioru przyporządkowano liczbę nieujemną $d(x,y)$ taką, że
$\quad d(x,y)=0 \ \Longleftrightarrow \ x=y$,
$\quad d(x,y)=d(y,x)$,
$\quad d(x,y)\le d(x,z)+d(z,y)$ dla każdego $z\in X$,
to $d$ nazywamy odległością albo metryką, a parę $(X,d)$ przestrzenią metryczną.
Zadanie 1
Niech $X$ będzie zbiorem niepustym. Pokaż, że wzór $$ d(x,y)=\begin{cases} 1, & x\not=y\\ 0, & x=y \end{cases} $$ definiuje metrykę na $X$.
_Uwaga: metrykę $d$ nazywamy metryką dyskretną. Zadanie to pokazuje, że na każdym niepustym zbiorze jest jakaś metryka.
Rozwiązanie:
Jest absolutnie jasne, że funkcja $d$ spełnia pierwszy i drugi warunek narzucany na metrykę. Niech teraz $x,y,z\in X$ będą dowolne. Jeśli
$$ d(x,z)+d(z,y)=0, $$ to $$x=y=z \quad\text{ a zatem }\quad d(x,y)=0.$$ Jeśli
$$ d(x,z)+d(z,y)>0, \quad \text{to}\quad d(x,z)+d(z,y)\geq 1 $$
a zatem
$$ d(x,y)\leq 1\leq d(x,z)+d(z,y). $$ To pokazuje, że $d$ jest metryką.
Zadanie 2
Metryka Hamminga
Niech $a = (a_1, a_2, ... , a_n)$, $b = (b_1, b_2, ... , b_n)$, będą ciągami binarnymi długości $n$. Niech $$ d_{HM}(a,b) = \sum_{i=1}^n [ a_i (1 - b_i) + b_i (1-a_i)] . $$
- Jaka jest interpretacja liczby $d_{HM} (a,b)$?
- Pokaż, że $d_{HM}$ jest metryką na zbiorze wszystkich ciągów binarnych długości $n$.
Rozwiązanie:
- Łatwo zauważyć, że $d_{HM} (a,b)$ to liczba pozycji na których ciągi $a$ oraz $b$ się różnią.
- Niech $d$ będzie metryką dyskretną na zbiorze $\{0,1\}$. Widzimy, że
$$ d_{HM}(a,b) = \sum_{i=1}^n d(a_i,b_i). $$
Jest jasne, że funkcja $d_{HM}(a,b)$ spełnia pierwszy i drugi warunek narzucany na metrykę. Niech teraz $a = (a_1, a_2, ... , a_n)$, $b = (b_1, b_2, ... , b_n)$, $c = (c_1, c_2, ... , c_n)$ będą dowolne. Mamy (korzystając z poprzedniego zadania), że
$$ d_{HM}(a,b) = \sum_{i=1}^n d(a_i,b_i)\leq \sum_{i=1}^n (d(a_i,c_i)+d(c_i,b_i))=d_{HM}(a,b)+d_{HM}(b,c). $$ To pokazuje, że $d_{HM}$ jest metryką.
Zadanie 3
Metryka Levenshteina
Jest to metryka w przestrzeni ciągów znaków, zdefiniowana następująco - działaniem prostym na napisie nazwiemy:
- wstawienie nowego znaku do napisu
- usunięcie znaku z napisu
- zamianę znaku w napisie na inny znak.
Odległością pomiędzy dwoma napisami jest najmniejsza liczba działań prostych, przeprowadzających jeden napis na drugi.
- Uzasadnij, że metryka Levenshteina jest w istocie metryką na zbiorze wszyskich skończonych ciągów znaków.
- Przeanalizuj poniższy kod (zadanie domowe) i przetestuj go dla kilku par ciągów znaków.
_Uwaga: więcej informacji można znaleźć tutaj: https://www.geeksforgeeks.org/introduction-to-levenshtein-distance/
def levenshteinRecursive(str1, str2, m, n):
# str1 is empty
if m == 0:
return n
# str2 is empty
if n == 0:
return m
if str1[m - 1] == str2[n - 1]:
return levenshteinRecursive(str1, str2, m - 1, n - 1)
return 1 + min(
# Insert
levenshteinRecursive(str1, str2, m, n - 1),
min(
# Remove
levenshteinRecursive(str1, str2, m - 1, n),
# Replace
levenshteinRecursive(str1, str2, m - 1, n - 1))
)
# Drivers code
str1 = "adam"
str2 = "adaś"
distance = levenshteinRecursive(str1, str2, len(str1), len(str2))
print("Levenshtein Distance:", distance)
Levenshtein Distance: 1
Rozwiązanie:
Jest jasne, że metryka Levenshteina spełnia pierwszy i drugi warunek nakładany na metrykę. Niech $x,y,z$ będą dowolnymi napisami. Zauważmy, że aby za pomocą działań prostych zamieć $x$ na $z$ możemy najpierw zamienić $x$ na $y$ a potem $y$ na $z$. Oczywiście nie musi to być optymalne podejście. Zatem $$ d(x,z)\leq d(x,y)+d(y,z). $$
Zadanie 4
Niech $C([0,1])$ oznacza zbiór wszystkich funkcji ciągłych (o wartościach rzeczywistych bądź zespolnych) określonych na $[0,1]$. Pokaż, że wzór
$$ d_\infty(f,g)=\max_{x\in[0,1]} |f(x)-g(x)| $$ definiuje metrykę na $C([0,1])$. Oblicz $d_\infty(f,g)$ dla $f(x)=x$ i $g(x)=1-x$.
Rozwiązanie:
- Jeśli $d_\infty(f,g)=0$, to $f(x)=g(x)$ dla wszystkich $x\in [0,1]$. Zatem $f=g$.
- Jest jasne, że $d_\infty(f,g)=d_\infty(g,f)$.
- Niech $f,g,h$ będą funkcjami ciągłymi na $[0,1]$. Mamy
$$ \begin{align} d_\infty(f,h)&=\max_{x\in[0,1]} |f(x)-h(x)|=\max_{x\in[0,1]}|f(x)-g(x)+g(x)-h(x)|\\ &\leq \max_{x\in[0,1]} \left(|f(x)-g(x)|+|h(x)-g(x)|\right) \leq \max_{x\in[0,1]} |f(x)-g(x)|+\max_{x\in[0,1]} |h(x)-g(x)|\\ &=d_\infty(f,g)+d_\infty(g,h) \end{align} $$
Dla funkcji $f$ oraz $g$ takich jak w zadaniu mamy:
$$ d(f,g)=\max_{x\in[0,1]}|f(x)-g(x)|=\max_{x\in[0,1]}|2x-1|=1. $$
Zadanie 5
Niech $C([0,1])$ oznacza zbiór wszystkich funkcji ciągłych (o wartościach rzeczywistych bądź zespolnych) określonych na $[0,1]$. Pokaż, że wzór
$$ d_1(f,g)=\int_0^1|f(x)-g(x)|dx $$ definiuje metrykę na $C([0,1])$. Oblicz $d_1(f,g)$ dla $f(x)=x$ i $g(x)=1-x$.
Rozwiązanie:
- Jeśli $d_1(f,g)=0$, to jest jasne, że $f(x)=g(x)$ dla $x\in [0,1]$, a zatem $f=g$.
- Jest oczywiste, że $d_1(f,g)=d_1(g,f)$.
- Dla $f,g,h\in C([0,1])$ mamy
$$ \begin{align} d_1(f,g)=&\int_0^1|f(x)-g(x)|dx=\int_0^1|f(x)-h(x)+h(x)-g(x)|dx\\ \leq & \int_0^1|f(x)-h(x)|dx+\int_0^1|h(x)-g(x)|dx\\ =& d_1(f,h)+d_1(h,g). \end{align} $$
Dla $f$ oraz $g$ takich jak w zadaniu mamy (pamiętajmy o geometrycznej intepretacji całki jako polu)
$$ d_1(f,g)=\int_0^1|2x-1|dx=1/2. $$
_Uwaga!!! W zastosowaniach dużo ważniejsza jest metryka $$ d_2(f,g)=\left(\int_0^1|f(x)-g(x)|^2dx\right)^{\frac 12}. $$
Zbieżność w przestrzeniach metrycznych
Definicja (zbieżność w przestrzeni metrycznej)
Mówimy, że ciąg $(x_n)$ punktów $x_n\in X$ jest zbieżny do punktu $x\in X$ gdy
$$ d(x_n,x)\longrightarrow 0 \quad\quad\text {dla}\quad n\to\infty . $$
Zadanie 6
W $\mathbb{R}^n$ odległość Euklidesowa jest określona wzorem
$$ d((x_1,\ldots, x_n),(y_1,\ldots, y_n))=\sqrt{\sum_{i=1}^n(x_i-y_i)^2}. $$
- Jaka jest granica ciągu $\left(\frac{1}{n},2+\frac{1}{n^2}\right)$ w $\mathbb{R}^2$?
- Postaw hipotezę o tym jak badać zbieżność ciągów w $\mathbb{R}^n$.
Rozwiązanie:
- Pokażemy, że granicą ciągu $\left(\frac{1}{n},2+\frac{1}{n^2}\right)$ jest $(0,2)$. mamy
$$ d\left(\left(\frac{1}{n},2+\frac{1}{n^2}\right),(0,2)\right)=\sqrt{\frac{1}{n^2}+\frac{1}{n^4}}\xrightarrow{n\to\infty} 0. $$
- Prawdziwy jest następujący fakt:
Ciąg $((x^k_1,\ldots, x^k_n))_{k\in\mathbb{N}}$ jest zbieżny do $(x^0_1,\ldots, x^0_n)$ w $\mathbb{R}^n$ z metryką Euklidesową wtedy i tylko wtedy, gdy dla każdego $1\leq i\leq n$ ciąg liczbowy $(x^k_i){k\in\mathbb{N}}$ jest zbieżny do $x^0_i$.
Wynika on bardzo łatwo z nierówności
$$ \max_{1\leq i\leq n}|x^k_i-x^0_i|\leq\sqrt{\sum_{i=1}^n(x^k_i-x^0_i)^2}\leq \sum_{i=1}^n|x^k_i-x^0_i|. $$
Zadanie 7
- Pokaż, że jeśli ciąg $(f_n)$ jest zbieżny do $f$ w $C([0,1])$ z metryką $d_\infty$, to jest zbieżny do jest zbieżny do $f$ w przestrzeni $C([0,1])$ z metryką $d_1$.
- Niech $f_n(x)=x^n$ i $f(x)=0$. Zbadaj zbieżność tego ciągu do $f$ w przestrzeni $C([0,1])$ z metryką $d_1$ i w przestrzeni $C([0,1])$ z metryką $d_\infty$.
Rozwiązanie:
- Dla dowolnych funkcji $f_n$ oraz $f$ mamy
$$ d_1(f_n,f)=\int_0^1|f_n(x)-f(x)|dx\leq \int_0^1\max_{x\in[0,1]}|f(x)-g(x)|dx=\max_{x\in[0,1]}|f(x)-g(x)|=d_\infty(f_n,f). $$
Zatem jeśli ciąg $d_\infty(f_n,f)$ dąży do zera, to ciąg $d_1(f_n,f)$ dąży do zera.
- Mamy
$$ d_\infty(f_n,f)=\max_{x\in [0,1]}|x^n|=1. $$
Zatem ciąg $(f_n)$ nie jest zbieżny do $f$ w przestrzeni $C([0,1])$ z metryką $d_\infty$.
Ponadto
$$ d_1(f_n,f)=\int_0^1x^ndx=\frac{1}{n+1}\xrightarrow{n\to\infty}0. $$
Zatem ciąg $(f_n)$ jest zbieżny do $f$ w przestrzeni $C([0,1])$ z metryką $d_1$.
Twierdzenie Banacha o punkcie stałym
Definicja (kontrakcja)
Odwzorowanie $T:X \to X$ przestrzeni metrycznej $(X,d)$ w siebie nazywamy kontrakcją lub odwzorowaniem zwężającym, gdy istnieje taka liczba $L$, spełniająca nierówności $0<L<1$, że dla każdych $x,y\in X$ zachodzi nierówność
$$ d(T(x),T(y))\leq L d(x,y) . $$
Twierdzenie (Banacha o punkcie stałym).
Twierdzenie. Niech $X$ będzie przestrzenią metryczną zupełną. Jeżeli odwzorowanie $T:X\to X$ jest kontrakcją ze stałą $L < 1$, to istnieje dokładnie jeden punkt stały $x_0$ tego odwzorowania. Ponadto punkt ten można otrzymać jako granicę ciągu $(x_n)$ określonego w następujący sposób: $x_1$ jest dowolnym punktem z przestrzeni $X$, a $x_{n+1}=T(x_n)$ dla $n=1,2,\ldots$.
Co więcej: prawdziwa jest również następująca nierówność
$$ d(x_n,x_0) \leq \frac{L^{n-1}}{1-L} \cdot d(x_2,x_1) . $$
Zadanie 8
Pokażemy, że równanie
$$ x^{10}+11x-11=0 $$
ma dokładnie jedno rozwiązanie w przedziale $[0,1]$.
Rozwiązanie:
Nasze równanie jest równoważne równaniu
$$ x=1-\frac{x^{10}}{11}. $$
Niech
$$ f(x)=1-\frac{x^{10}}{11}. $$
- Jest jasne, że funkcja $f$ przekształca odcinek $[0,1]$ w odcinek $[0,1]$.
- Ponieważ $f'(x)=\frac{10}{11}x^{9}$, to dla $x\in [0,1]$ mamy, że $|f'(x)|\leq \frac{10}{11}$. Z twierdzenia o wartości średniej wynika zatem, że $f$ jest kontrakcją ze stałą $L=\frac{10}{11}$.
- Na mocy Twierdzenia Banacha $f$ ma dokładnie jeden punkt stały w $[0,1]$.
def f(x):
return 1 - (x ** 10) / 11
def nth_iterate(x, n):
for _ in range(n):
x = f(x)
return x
# Example usage:
x_initial = 0.5 # initial value of x in [0, 1]
n = 100000 # number of iterations
result = nth_iterate(x_initial, n)
print(f"The {n}-th iterate of {x_initial} under f is: {result}")
The 100000-th iterate of 0.5 under f is: 0.9471695279677836
f(0.9471695279677836) == 0.9471695279677836
True