Wykład 1. Przestrzeń Hilberta Sygnały. Funkcje (w języku

advertisement
Wykład 1.
Przestrzeń Hilberta
Sygnały. Funkcje (w języku inżynierów - sygnały) które będziemy rozważali na tym wykładzie będą
kilku typów
Sygnały ciągłe (analogowe). •) L2 (R) to funkcje na prostej spełniające warunek
∞
|f (x)|2 dx < +∞,
−∞
(czyli funkcje całkowalne z kwadratem). Z punktu widzenia zastosowań to bardzo interesująca przestrzeń
sygnałów. Jeżeli f (x) oznacza, na przykład napięcie jakiegoś przebiegu elektrycznego, to warunek całkowalności z kwadratem oznacza, że sygnał ma skończoną całkowitą energię - bardzo rozsądne założenie.
•) L2 ([−π, π]), przestrzeń funkcji okresowych o okresie 2π (czyli f (x + 2π) = f (x)), całkowalnych z
kwadratem w okresie
π
|f (x)|2 dx < +∞.
−π
Podobnie jak poprzednio ten warunek oznacza, że wartość energii sygnału w okresie jest skończona.
Długość okresu nie jest szczególnie ważna, gdyż poprzez proste przeskalowanie można nasze rozważania
przenieść na sygnały o innych okresach. Okres 2π wybrany jest dla wygody (to jest okres funkcji trygonometrycznych, których będziemy używali). Przestrzeń tę będziemy też oznaczali przez L2 (T), gdzie T
oznacza okrąg jednostkowy, czyli odcinek [−π, π] z utożsamionymi końcami.
•) Ogólniej, L2 (Rn ) to funkcje n - zmiennych rzeczywistych, całkowalnych z kwadratem. Szczególnie
interesujący jest przypadek n = 2, sygnały takie reprezentują obrazy.
•) Ogólniej L2 (Tn ), funkcje n - zmiennych, okresowe w każdej zmiennej o okresie 2π:
f (x1 , . . . , xi + 2π, . . . , xn ) = f (x1 , . . . , xi , . . . , xn ),
∀ i = 1, . . . , n,
i całkowalne z kwadratem po swoim okresie:
π
π
···
|f (x1 , . . . , xn )|2 dx1 · · · dxn < +∞.
−π
−π
Również tutaj najbardziej interesujący (oprócz n = 1) jest przypadek n = 2.
Sygnały dyskretne (cyfrowe). •) L2 (Z) to przestrzeń ciągów podwójnie nieskończonych {fk }, sumowalnych z kwadratem
∞
|fk |2 < +∞.
k=−∞
Przestrzeń tą często będziemy też oznaczać 2 .
•) L2 (Zp ) to przestrzeń ciągów podwójnie nieskończonych {fk } okresowych o okresie p, czyli fk+p = fk
∀ k ∈ Z, sumowalnych z kwadratem po okresie:
p−1
|fk |2 < +∞.
k=0
2p .
Tą przestrzeń będziemy też oznaczać
•) Ogólniej, L2 (Zn ) i L2 (Znp ) to przestrzenie ciągów n - wymiarowych okresowych lub nie, sumowalnych
z kwadratem, w przypadku L2 (Znp ) tylko po okresie. Jak poprzednio, najciekawsze są te przestrzenie dla
n = 2.
1
2
Uwagi. a) Sygnały występujące w rzeczywistości (w naturze) są najczęściej ciągłe. Sygnały dyskretne
pojawiają się jako wynik próbkowania sygnałów występujących w rzeczywistości, i to one pojawiają się
w algorytmach numerycznych. Poznamy fundamentalne (ale bardzo proste) twierdzenie mówiące kiedy
sygnał ciągły można całkowicie odtworzyć z ciągu próbek (mówiąc w skrócie, sygnał musi mieć skończone
widmo częstotliwościowe, a próbkowanie musi być wystarczająco częste). W przypadku kiedy sygnału nie
da się zrekonstruować z próbek (na przykład z jakichś powodów próbkowanie jest zbyt rzadkie) dowiemy
się jak przygotować sygnał do próbkowania, aby uzyskać najlepszy efekt rekonstrukcji (będzie to tak
zwany filtr antyaliasowy).
b) Zauważmy, że wszystkie rozważane przestrzenie sygnałów mają pewne wspólne cechy, ważne z punktu
widzenia teorii. Tworzą je funkcje (o wartościach zespolonych) na jakimś zbiorze, całkowalne lub sumowalne na tym zbiorze z kwadratem. Ta wspólna cecha pozwoli nam wprowadzić w tych przestrzeniach
strukturę przestrzeni Hilberta, nasze podstawowe narzędzie. Drugą cechą wspólną rozważanych przestrzeni sygnałów jest to, że zbiór na którym te sygnały są rozważane (Rn , Tn , Zn , Znp ) ma strukturę
grupy abelowej, na przykład Zp z dodawaniem modulo p. To z kolei pozwala nam korzystać z naszego
drugiego podstawowego narzędzia - transformaty Fouriera - w jej wielu wcieleniach, transformaty ciągłej,
dyskretnej czy szeregu Fouriera.
Przestrzeń Hilberta. Przypomnijmy krótko pojęcie przestrzeni liniowej, przestrzeni metrycznej i przestrzeni zupełnej.
Przestrzeń liniowa to taka, której elementy można dodawać, odejmować i mnożyć przez skalary (w naszym przypadku skalarami są liczby zespolone).
Przestrzeń metryczna to taka, w której określona jest funkcja odległości d(x, y) (metryka) dzięki której
można zdefiniować zbieżność ciągu: xn → x jeżeli d(xn , x) → 0. Otrzymujemy przestrzeń topologiczną,
można mówić o ciągłości funkcji.
Przestrzeń metryczna zupełna to taka przestrzeń w której każdy ciąg Cauchy’ego jest zbieżny, czyli jeżeli
∀ > 0 ∃ N ∈ N ∀ n, m N d(xn , xm ) < to istnieje x takie, że xn → x. Zupełność przestrzeni jest ważna z punktu widzenia teorii matematycznej.
Wszystkie przestrzenie które będziemy rozważać są zupełne.
Przypomnijmy też funkcję wykładniczą zmiennej zespolonej
eiϕ = cos ϕ + i sin ϕ.
Jeżeli funkcję wykładniczą zdefiniujemy przy pomocy szeregu potęgowego
ez =
∞
zn
,
n!
n=0
z - liczba zespolona,
to powyższa własność natychmiast wyjdzie po skorzystaniu z faktu, że i2 = −1, rozdzieleniu składników
zawierających i nie zawierających i i zastosowaniu rozwinięć Taylora funkcji sin x i cos x.
Def. Przestrzeń liniowa E nazywa się przestrzenią Hilberta, jeżeli istnieje w niej iloczyn skalarny, to
znaczy funkcja x, y (o wartościach zespolonych) o następujących własnościach
(a) x, y = y, x (jest antysymetryczny),
(b) x + y, z = x, z + y, z, αx, y = αx, y (liniowy względem pierwszej zmiennej),
(c) x, y + z = x, y + x, z, x, αy = αx, y (antyliniowy względem drugiej zmiennej),
(d) x, x 0 i x, x = 0 ⇔ x = 0.
(x, y, z to dowolne elementy E, α jest dowolną liczbą zespoloną, a α jest liczbą sprzężoną do α). Dodatkowo E musi być zupełna, wyjaśnimy to za chwilę.
Mając w przestrzeni Hilberta iloczyn skalarny wprowadzamy tak zwaną normę (długość)
x = x, x.
Zauważmy, że dzięki własności (d) iloczynu skalarnego pierwiastek można zawsze obliczyć.
3
Tw. (Nierówność Schwarza). Dla dowolnych x, y
|x, y| xy.
dowód. Ustalmy x, y ∈ E i dowolną liczbę rzeczywistą λ.
x + λy2 = x + λy, x + λy
= x, x + λy + λy, x + λy
= x, x + λx, y + λy, x + λ2 y, y
= λ2 y2 + 2λx, y + x2 ,
( - część rzeczywista). Rozważane wyrażenie jest więc (dla ustalonych x i y) funkcją kwadratową
zmiennej rzeczywistej λ, o współczynnikach y2, 2x, y i x2 . Wyrażenie nie może być ujemne,
więc funkcja kwadratowa może mieć co najwyżej jeden rzeczywisty pierwiastek. A więc wyróżnik funkcji
kwadratowej musi być ujemny:
2
(2x, y) − 4y2 x2 0,
czyli
|x, y| xy.
Jeżeli x, y jest liczbą rzeczywistą to dowód jest zakończony. Jeżeli nie, to pozostaje jeszcze jeden trik:
niech ϕ będzie liczbą rzeczywistą taką, że
x, y = eiϕ |x, y|.
Taką liczbę zawsze można znaleźć, eiϕ jest „znakiem” zespolonym liczby x, y. Wtedy
e−iϕ x, y = x, eiϕ y
jest liczbą rzeczywistą. Wykorzystaliśmy tu równości
1
= e−iϕ = eiϕ .
eiϕ
Z udowodnionej już części twierdzenia wynika, że
|x, eiϕ y| xeiϕy.
W końcu, skoro, jak łatwo sprawdzić |eiϕ | = 1, mamy
|x, y| = |e−iϕ x, y|,
i
eiϕ y = y. Uwaga. Przyglądając się przedstawionemu wyżej dowodowi zauważmy, że równość (w nierówności Schwarza) zachodzi tylko jeżeli x i y są współliniowe (w sensie zespolonym), to znaczy istnieje liczba zespolona
α taka, że
x = αy.
4
Tw. (Własności normy).
(a) x 0 i x = 0 ⇔ x = 0,
(b) ax = |a|x dla każdej liczby a i elementu x ∈ E,
(c) x + y x + y (nierówność trójkąta).
dowód. Własności (a) i (b) wynikają wprost z definicji normy i własności iloczynu skalarnego. Sprawdźmy
tylko nierówność trójkąta
x + y2 = x + y, x + y = x, x + x, y + y, x + y, y
= x2 + x, y + y, x + y2
x2 + |x, y| + |y, x| + y2
x2 + 2x y + y2
= (x + y)2 .
Po drodze skorzystaliśmy z nierówności trójkąta dla liczb zespolonych
|a + b| |a| + |b|,
oraz z nierówności Schwarza. Norma umożliwia nam wprowadzenie w E metryki
d(x, y) = x − y.
Wymagane własności metryki
(a) d(x, y) = d(y, x),
(b) d(x, y) 0 oraz d(x, y) = 0 ⇔ x = y,
(c) d(x, y) d(x, z) + d(z, y),
wynikają wprost z wyszczególnionych powyżej własności normy. Metryka wprowadza w E topologię,
można więc mówić o zbieżności w przestrzeni Hilberta ciągów czy szeregów i o ciągłości funkcji. Z
nierówności Schwarza wynika, że iloczyn skalarny jest ciągłą funkcją dwóch zmiennych. W definicji przestrzeni Hilberta dokładamy założenie o którym wspomnieliśmy wcześniej: powstała przestrzeń metryczna
jest zupełna.
Przykłady. Wszystkie opisane przestrzenie sygnałów są przestrzeniami Hilberta. Żeby się o tym przekonać należy w każdej przestrzeni wprowadzić iloczyn skalarny i sprawdzić warunki (a)–(d) definicji.
Należy też udowodnić zupełność powstałej przestrzeni metrycznej. W każdym przypadku przy określeniu iloczynu skalarnego będziemy korzystać z następującej nierówności, prawdziwej dla dowolnych liczb
zespolonych:
2|ab| |a|2 + |b|2 .
• L2 (Rn ). Jeżeli f, g ∈ L2 (Rn ) to funkcja f · g jest absolutnie całkowalna na Rn :
2
2
g(x)
|f (x)|
|f (x)g(x)| +
,
2
2
więc
1
1
2
|f (x)| dx +
|g(x)|2 dx < +∞.
f (x)g(x) dx 2 Rn
2 Rn
Rn
Możemy więc określić następująco iloczyn skalarny
f, g =
f (x)g(x) dx.
Rn
5
• L2 (Tn ). Podobnie możemy określić
1
f, g =
(2π)n
π
−π
···
π
f (x)g(x) dx
x = (x1 , . . . , xn ),
−π
gdyż całka zawsze istnieje.
• L2 (Zn ). Mając dwa ciągi f = {fm } i g = {gm }, m = (m1 , . . . , mn ) określamy
∞
f, g =
fm gm .
m1 ,...,mn =−∞
• L2 (Znp ). Podobnie dla ciągów okresowych
f, g =
1
pn
p−1
fm gm .
m1 ,...,mn =0
W każdym z powyższych przykładów sprawdzamy warunki (a)–(d) definicji przestrzeni Hilberta. W
przypadku przestrzeni sygnałów ciągłych warunek (d) mówi, że
Rn
lub
1
(2π)n
π
−π
|f (x)|2 dx = 0 ⇔ f = 0,
···
π
−π
|f (x)|2 dx = 0 ⇔ f = 0.
Żeby ten warunek był spełniony, tak naprawdę w przypadku przestrzeni sygnałów ciągłych elementami
nie są funkcje, ale klasy równoważności funkcji modulo funkcje o całce z kwadratu modułu równej 0. To
jest szczegół techniczny, który w praktycznych zastosowaniach nie będzie miał dla nas znaczenia. Warto
jednak o tym pamiętać. Dwie funkcje różniące się tylko w jednym albo w kilku punktach to z punktu
widzenia przestrzeni sygnałów ten sam element.
Istotnym punktem do sprawdzenia jest zupełność powstałych przestrzeni metrycznych. W przypadku
przestrzeni sygnałów dyskretnych jest to proste ćwiczenie, a w przypadku przestrzeni sygnałów ciągłych
wynika to z własności całki Lebesgue’a. To właśnie z tego powodu w definicji przestrzeni używamy całek
Lebesgue’a.
Bazy i rozpięcia.
Def. Zbiór elementów {en } przestrzeni Hilberta E (skończony lub nieskończony) nazywamy bazą E
jeżeli
(a) jest liniowo niezależny, czyli
α1 e1 + · · · + αk ek = 0 ⇒ α1 = α2 = · · · = αk = 0,
dla dowolnego k i dowolnych skalarów α1 , . . . , αk , oraz
(b) jest zupełny w E, czyli
k
αn en < .
∀ x ∈ E ∀ > 0 ∃ α1 , . . . , αk x −
n=1
6
Mówiąc luźno, zbiór tworzy bazę jeżeli do każdego elementu przestrzeni E można podejść dowolnie blisko jakąś kombinacją linową elementów bazy (zupełność), i zbiór nie zawiera żadnych zbędnych
elementów (liniowa niezależność).
Uwaga. (a) Powyższa definicja różni się zasadniczo od pojęcia bazy przestrzeni liniowej wprowadzanego
na wykładzie z algebry liniowej. W tamtej definicji każdy element przestrzeni można przedstawić jako
kombinację liniową elementów bazy, a w tej definicji wystarczy żeby do każdego elementu przestrzeni
można było dowolnie blisko „podejść” kombinacjami liniowymi elementów bazy. Dla uniknięcia zamieszania tamtą, algebraiczną bazę czasami nazywa się „bazą Hamela”, a tę „bazą topologiczną”. Na tym
wykładzie będziemy korzystali tylko z baz topologicznych, i będziemy je po prostu nazywali bazami. W
przypadku przestrzeni skończenie wymiarowych oba pojęcia baz są identyczne.
(b) Można udowodnić, że dwie bazy tej samej przestrzeni sąrównoliczne. Liczbę elementów bazy (może
być nieskończona) nazywamy wymiarem przestrzeni.
Def. Bazę {en } przestrzeni E nazywamy bazą ortonormalną (o.n.) jeżeli
0
n = m
en , em =
1
n = m.
Zbiór elementów {en }, niekoniecznie baza, spełniający powyższy warunek nazywa się układem ortonormalnym. Układ ortonormalny jest automatycznie liniowo niezależny, co łatwo sprawdzić. Stanowi
bazę dla podprzestrzeni domkniętej, którą rozpina. Jeżeli jest zupełny, to rozpina całą przestrzeń E.
Bazy o.n. stanowią bardzo wygodne narzędzie do badania przestrzeni Hilberta. Nie ma problemu ze
znajdowaniem takich baz, gdyż z dowolnej bazy można wytworzyć bazę o.n. przy pomocy tak zwanej
procedury Gramma-Schmidta. Następujące fakty uzasadnią użyteczność baz o.n.
Tw. Jeżeli {en } jest bazą o.n. przestrzeni E to dla dowolnych liczb zespolonych α1 , . . . , αk i dowolnego
x ∈ E zachodzi nierówność
k
k
x, en en x −
αn en .
x −
n=1
dowód.
n=1
2 2
k
k
k
αn en = x −
x, en en +
(x, en − αn ) en x −
n=1
n=1
n=1
2
k
= x −
x, en en +
n=1
k
k
+ 2 x −
x, en en ,
(x, em − αm ) em +
n=1
m=0
2
k
(x, en − αn ) en .
+
n=1
Powyższą równość otrzymaliśmy tak, jak zwykle: normę sumy do kwadratu zapisaliśmy jako iloczyn
skalarny sumy przez siebie, i skorzystaliśmy z liniowości iloczynu skalarnego. Rozważmy drugi składnik
uzyskanej sumy:
k
k
k k
x, en en ,
(x, em − αm ) em =
x, em − αm
x, en en , em
x−
x−
n=1
m=1
m=1
=
k m=1
x, em − αm
n=1
x, em −
k
n=1
x, en en , em .
7
Zauważmy, że ostatni nawias = 0, gdyż baza jest ortonormalna. Rozważmy teraz ostatni (trzeci) składnik
sumy:
2 k
k
k
(x, en − αn ) en =
(x, en − αn ) en ,
(x, em − αm ) em
n=1
n=1
=
k
m=1
(x, en − αn )
n=1
=
k
k
(x, em − αm )en , em m=1
|x, en − αn |2 .
n=1
Tak więc w końcu
2 2
k
k
k
αn en = x −
x, en en +
|x, en − αn |2 ,
x −
n=1
n=1
a więc
n=1
k
k
x, en en x −
αn en ,
x −
n=1
n=1
co mieliśmy udowodnić i, co więcej, równość zachodzi wtedy i tylko wtedy, gdy αn = x, en dla wszystkich
n = 1, . . . , k. Z definicji bazy wynika, że do każdego elementu można dowolnie blisko podejść jakąś kombinacją
liniową elementów bazy. Powyższe twierdzenie mówi, że jeżeli baza jest ortonormalna, to najlepszymi
kombinacjami liniowymi są kombinacje
k
x, en en .
n=1
Mamy więc konkretny wzór na współczynniki tych „najefektywniejszych” kombinacji.
Wniosek. Jeżeli {en } jest bazą o.n. przestrzeni E to:
(a) dla dowolnego x ∈ E
x=
∞
x, en en ,
(rozkład x względem bazy)
n=1
(b) jeżeli dla jakiegoś ciągu współczynników α1 , α2 , . . . zachodzi
x=
∞
αn en ,
n=1
to współczynniki muszą być iloczynami skalarnymi
αn = x, en (jednoznaczność rozkładu),
(c) dla dowolnego x ∈ E
x2 =
∞
n=1
|x, en |2
(równość Plancherela).
8
W powyższym wniosku przyjęliśmy, że baza jest nieskończona. Oczywiście, jeżeli jest skończona, to
wniosek też jest prawdziwy a wszystkie sumy nieskończone zastępujemy skończonymi
dowód. (a) Podobnie jak w dowodzie poprzedniego twierdzenia można pokazać, że jeżeli k m to
k
m
x, en en x −
x, en en .
x −
n=1
n=1
Po prostu, można wziąć αn = x, en dla n = 1, . . . , m i αn = 0 dla n = m + 1, . . . , k. Dalej, z definicji
bazy wiemy, że dla każdego > 0 istnieją współczynniki α1 , . . . , αk takie, że
k
αn en < .
x −
n=1
Z poprzedniego twierdzenia i poprzedniej uwagi wynika w takim razie, że dla tego i tego k mamy
l
x, en en < ∀ l k,
x −
n=1
a więc szereg
∞
x, en en ,
n=1
jest zbieżny do x.
(b) Jeżeli
x=
∞
αn en ,
n=1
to stosując iloczyn skalarny i korzystając z jego ciągłości mamy
∞
∞
x, en =
αm em , en =
αm em , en = αn .
m=1
m=1
(c) Korzystając z ciągłości iloczynu skalarnego otrzymujemy
∞
∞
2
x = x, x =
x, en en ,
x, em em
=
=
∞ ∞
n=1
m=1
x, en x, em en , em n=1 m=1
∞
2
|x, en | . n=1
Uwaga. (a) Równości w (a) i (b) są równościami w przestrzeni E i, na przykład, równość w (a) oznacza
N
x, en en = 0.
lim x −
N →∞ n=1
(b) Równość Plancherela
x2 =
∞
|x, en |2
n=1
można rozumieć jako uogólnione (z przypadku 2-wymiarowego) twierdzenie Pitagorasa: kwadrat długości
wektora jest sumą kwadratów jego składowych w kierunkach elementów bazy ortonormalnej.
9
Def. Bazę {en } przestrzeni E nazywamy bazą Riesza jeżeli istnieją stałe A, B > 0 takie, że dla dowolnego
ciągu liczb {αn }
2
∞
∞
∞
2
A
|αn | αn en B
|αn |2 .
n=1
n=1
n=1
Baza Riesza jest pojęciem ogólniejszym niż baza ortonormalna (dla bazy o.n. A = B = 1). W zastosowaniach jest prawie tak samo wygodna jak baza o.n. Można pokazać, że dla bazy Riesza {en } istnieje
inna baza Riesza {fn } taka, że dla każdego x ∈ E
x=
∞
x, fn en =
n=1
∞
x, en fn .
n=1
Dla bazy Riesza również mamy więc jawny wzór na znajdowanie współczynników bazowych, musimy
tylko wygenerować wcześniej bazę {fn }.
Def. Zbiór elementów {en } ⊂ E zupełny (niekoniecznie liniowo niezależny) nazywamy rozpięciem dokładnym jeżeli dla każdego x ∈ E
∞
|x, en |2 .
x2 =
n=1
Jeżeli {en } jest rozpięciem dokładnym, to istnieje inne rozpięcie dokładne {fn } takie, że dla każdego
x∈E
∞
∞
x, fn en =
x, en fn .
x=
n=1
n=1
W przypadku rozpięcia dokładnego również mamy więc sytuację, gdzie każdy x można przedstawić jako
kombinację elementów rozpięcia, i są jawne wzory na współczynniki tego rozwinięcia. Mając bazę Riesza
lub rozpięcie dokładne można wytworzyć z nich bazę o.n., przy pomocy wspomnianej już procedury
Gramma-Schmidta.
Przypomnijmy jeszcze kilka pojęć, z których będziemy korzystać. Jeżeli H ⊂ E jest podprzestrzenią,
to dopełnieniem ortogonalnym H nazywamy podprzestrzeń
H ⊥ = {x ∈ E : x ⊥ y ∀ y ∈ H},
(x ⊥ y oznacza x, y = 0). Jeżeli H ⊂ E jest podprzestrzenią domkniętą to istnieje rzut prostopadły na
H, czyli przekształcenie liniowe P : E → H takie, że
Px = x
∀ x ∈ H,
∀ x ∈ H ⊥.
Px = 0
P przypisuje dowolnemu x ∈ E najbliższy mu element podprzestrzeni H. Jeżeli w podprzestrzeni H
mamy bazę o.n. {en }, to
∞
Px =
x, en en .
n=1
Jeżeli G, H ⊂ E są dwoma podprzestrzeniami, to mówimy, że E jest ortogonalną sumą prostą podprzestrzeni G i H jeżeli każdy element x ∈ E można jednoznacznie zapisać jako
x = x1 + x2 ,
x1 ∈ G, x2 ∈ H,
10
oraz G ⊥ H (czyli x ⊥ y dla dowolnych x ∈ G i y ∈ H). Piszemy wtedy
E = G ⊕ H.
Uwaga. (a) Jeżeli E = G ⊕ H to żeby skonstruować bazę w E wystarczy osobno skonstruować bazy w
G i w H. Ich suma, jako zbiorów, będzie bazą E. Jeżeli te bazy w G i H są ortonormalne, to ich cuma
też jest ortonormalna.
(b) Jeżeli H jest domkniętą podprzestrzenią E, to
E = H ⊕ H ⊥.
Przypomnijmy jeszcze następujący bardzo przydatny fakt.
Fakt. Zbiór {en } ⊂ E jest zupełny wtedy i tylko wtedy, gdy jedynym elementem x ∈ E prostopadłym do
wszystkich en jest 0.
Download
Random flashcards
ALICJA

4 Cards oauth2_google_3d22cb2e-d639-45de-a1f9-1584cfd7eea2

bvbzbx

2 Cards oauth2_google_e1804830-50f6-410f-8885-745c7a100970

Prace Magisterskie

2 Cards Pisanie PRAC

słowka

2 Cards kksenia.kot1997

Create flashcards