Wstęp
Znając już relacje, mamy pewien pogląd na budowę związków między elementami w teorii mnogości. Związki te jednak można jeszcze bardziej obramować, by postarać się dopasować je do ciekawszych zastosowań, korzystając z ich właściwości. W ten oto sposób, przechodzimy do pojęcia funkcji, który podczas tego czytania, postaram się przybliżyć. Zapraszam.
Rozwinięcie
Na początek, zdefiniujmy sobie to pojęcie, by wiedzieć o czym tak na prawdę mowa.
Definicja
Funkcją nazwiemy dowolną relację \(R \subseteq A \times B\), która jest funkcyjna/jednoznacznie prawostronna. Słowem przypomnienia, chodzi o to żeby spełniła jeden, acz bardzo ważny warunek, mianowicie, każdy element dziedziny relacji, wystąpi w parze tylko raz. Mówiąc inaczej, nie mogą w funkcji, wystąpić dwie pary elementów, które mając po lewej stronie ten sam element, mają różny element z prawej strony.
Formalnie przedstawimy to tak:
\(\text{Relację } R \subseteq A \times B \text{ nazwiemy funkcją gdy jeżeli istnieje } (a, b_1) \in R \text{ oraz } (a, b_2) \in R \text{ to oznacza to, że } b_1 = b_2\)
Podając przykład, relacja \(R = \set{(1, 2), (2, 3), (3, 4)}\), będzie funkcją, natomiast \(R = \set{(1, 2), (1, 3), (2, 3)}\), już nie, bo \(1\) sparowaliśmy z \(2\) i \(3\).
Jako, że funkcje będą po prostu, ograniczonymi relacjami, będzie więc to pewien podzbiór wszystkich relacji i skoro owy podzbiór dostał swoją własną nazwę, to dodatkowo dostanie jeszcze swoje oznaczenie. Jeżeli chcielibyśmy powiedzieć, że relacja \(R\) jest funkcją, napisalibyśmy od angielskiego "FuNCtion":
\(Fnc(R)\)
Przyjęło się jednak oznaczać funkcję, w ogólności, małymi literami, np. \(f\), \(g\), \(h\), więc często spotkamy się z zapisem:
\(\displaystyle f \subseteq A \times B\)
Które będzie oznaczało, że relacja \(f\) jest funkcją określoną na zbiorach \(A\) i \(B\).
Jako że funkcja dla każdego elementu dziedziny będzie miała dokładnie jeden element przeciwdziedziny, możemy wprowadzić jeszcze jedno oznaczenie, które dla niektórych może przywołać pewne skojarzenia i wspomnienia, a mianowicie, parę \((a, b) \in f\), możemy i będziemy oznaczać:
\(f(a) = b\)
I odczytamy je mówiąc:
- że dla argumentu \(a\) funkcja \(f\) ma wartość \(b\), lub
- że funkcja \(f\) przyjmuje wartość \(b\), dla argumentu \(a\), lub
- że funkcja \(f\) przyjmuje wartość \(b\), w punkcie \(a\).
Sam owy punkt, teraz może brzmiący tajemniczo, wywodzi się bezpośrednio z algebry i odnosi się do punktu w przestrzeni, na której funkcja jest określona. Dla nas jeszcze nie ma to znaczenia, natomiast oznaczać będzie element dziedziny i tak też będziemy to utożsamiać (bo w ostateczności do tego się to sprowadzi). Punkt = element dziedziny.
W pewnym szczególnym przypadku funkcji, będzie można użyć jeszcze innego, specyficznego oznaczenia. Określając funkcję, mówimy cały czas o iloczynie kartezjańskim dwóch zbiorów, np. \(\displaystyle
f \subseteq A \times B\). Jednak czasami, okaże się, że dziedzina funkcji, okaże się pełnym zbiorem, z którego została stworzona. Np. dziedzina może okazać się zbiorem \(A\), czyli \(dom(f) = A\). Przeciwdziedziną w takim przypadku, będzie zaś podzbiór zbioru \(B\) czyli \(rng(f) \subseteq B\). Funkcję w takiej postaci nazwiemy odwzorowaniem zbioru \(A\) w/na zbiór \(B\) i zapiszemy:
\(f: A \to B\)
Jako że wszystko dostaje nowe nazwy, to dziedzina i przeciwdziedzina też może ową dostać. W kontekście funkcji, będziemy mówić o zbiorze argumentów funkcji, odnosząc się do dziedziny, a mówiąc o przeciwdziedzinie, powiemy o zbiorze wartości funkcji, nie mniej pojęcie dziedziny i przeciwdziedziny nadal będzie poprawnym, jako że funkcja to nadal relacja, tylko w pewien sposób ograniczona.
Własności
Z funkcją można zrobić dokładnie to samo co z relacją. Może mieć ona również te same własności (mieszczące się w definicji funkcji, oczywiście). Z ciekawszych, o których można wspomnieć, będzie na pewno kilka.
Różnowartościowość/Injektywność
Funkcja będzie różnowartościowa, jeżeli dla każdego argumentu, przyjmie różne wartości. Znaczy to, że nie będzie dwóch takich elementów w dziedzinie, które będą miały w parze ten sam element przeciwdziedziny. Bardziej formalnie można by rzec, że:
\(\text{Funkcję } f(a) = b, \text{ nazwiemy różnowartościową/injekcją, gdy jeśli } f(a_1) = f(a_2) \text{ to } a_1 = a_2\)
Lub inaczej:
\(\text{Funkcję } f(a) = b, \text{ nazwiemy różnowartościową/injekcją, gdy jeśli } a_1 \neq a_2 \text{ to } f(a_1) \neq f(a_2)\)
Teraz możemy wrócić do artykułu o relacjach binarnych i przypomnieć sobie, czym była injekcja. Jeżeli to zrobimy, to zauważymy od razu, że różnowartościowość, to właśnie iniekcja, tylko nałożona na funkcję.
Pokazując to na przykładzie, np. funkcja \(f = \set{(1, 2), (2, 3), (2, 4)}\) będzie różnowartościowa, natomiast \(f = \set{(1, 2), (2, 2), (2, 4)}\), nie będzie ponieważ \(1\) oraz \(2\) mają tę samą wartość, czyli \(2\).
Ułatwić zrozumienie, może ten obrazek, który spróbuje zobrazować sens tej własności:
Surjektywność/"Na"
Pamiętając, że relacja jest surjekcją, jeżeli wszystkie elementy zbioru \(B\) mają swoją parę z elementem zbioru \(A\), w kontekście funkcji, będzie to oznaczało całkiem ciekawą właściwość.
Mając funkcję w postaci \(f: A \to B\), każdy element ze zbioru \(A\), musi mieć przypisany jeden element ze zbioru \(B\) z definicji. W przypadku surjekcji, dodajemy do tego fakt, że wszystkie elementy ze zbioru \(B\), muszą mieć przypisany element ze zbioru \(A\). Będzie to więc oznaczać, że nie będzie istniał element w polu tej funkcji, który pozostanie bez pary. Można więc powiedzieć, że przeciwdziedzina funkcji, będzie się równała jej obrazowi, czyli \(rng(f) = f[B]\).
Surjekcję, dodatkowo, nazywa się funkcją "na", a to z tego powodu że jest to funkcja jakoby "na" cały zbiór \(B\), w której całe spektrum wartości funkcji zostanie odwzorowane w relacji.
Ułatwić zrozumienie, może ten obrazek, który spróbuje zobrazować sens tej własności:

Bijektywność
Jako że przedrostek "bi" stosuje się zazwyczaj, gdy chcemy określić coś podwójnego, np. bipolarność, bistabilność, to w przypadku funkcji i tej własności będzie podobnie. A mianowicie, funkcję w postaci \(f: A \to B\), nazwiemy bijekcją jeżeli będzie jednocześnie injekcją i surjekcją, będzie więc podwójną -jekcją. Dodatkowo w przypadku takiej funkcji, można rzec, że będziemy mieli pełne odwzorowanie \(A\) w \(B\).
Łącząc właściwości injekcji, czyli różnowartościowości dla całej dziedziny, oraz surjekcji, czyli odwzorowanie dziedziny na każdy jeden element przeciwdziedziny, możemy wyciągnąć jeden ciekawy wniosek. Jeżeli funkcja jest bijekcją to jej dziedzina i przeciwdziedzina są sobie równe mocą/licznością, czyli mają po tyle samo elementów.
Ułatwić zrozumienie, może ten obrazek, który spróbuje zobrazować sens tej własności:

Funkcja "w"
Pamiętając o tym czym jest funkcja "na", czyli pełnym odwzorowaniem w zbiór \(B\), to funkcja "w" będzie jej młodszym bratem. Próbując interpretować nazewnictwo, można powiedzieć, że funkcja "w" będzie odwzorowaniem "w" \(B\). To "w" będzie oznaczało, że nie każdy element zbioru \(B\) będzie miał swoją parę, z elementem ze zbioru \(A\), czyli odwzorowanie w \(B\) będzie niepełne. Mógłbym wkleić tutaj obrazek z injekcji, bo wpasowuje się tu idealnie, jako, że nie cały zbiór \(B\), jest "ostrzałkowany", ale jako że definicja tej własności jest prosta, pozwolę sobie tego nie zrobić, by nie generować niepotrzebnej treści. Trzeba pamiętać, że nie jest to "ścisłe" pojęcie, tylko używane potocznie, dlatego warto je znać, w razie, jakby zostało użyte, żeby zrozumieć intencję autora, ale z używaniem bym się wstrzymał.
Złożenie funkcji
Złożenie funkcji, nie zmieni się definicyjnie z tego, co mieliśmy już poprzednio w relacjach binarnych, nie mniej ze względu na właściwości funkcji, znacząco się uprości. Dlaczego?
Pamiętamy, że przy złożeniu relacji, próbowaliśmy parować ze sobą dziedzinę drugiej relacji z przeciwdziedziną pierwszej z pomocą wspólnego elementu, "łącznika". Teraz jako, że dziedzina pierwszej, ma tylko jedną parę każdego elementu owej dziedziny, będzie można to niejako "przetłumaczyć" z jednej funkcji w drugą. Mówiąc trochę bardziej obrazowo, będziemy szukali odwzorowania dziedziny jednej funkcji, na przeciwdziedzinę drugiej.
Co mam na myśli?
Weźmy sobie dwie funkcje, \(f\) i \(g\), i niech będą dowolne, bo nie ma znaczenia jakie będą.
Teraz spróbujmy dokonać ich złożenia (jeżeli nie pamiętasz czym jest złożenie zapraszam tutaj), czyli \(f \circ g\).
Pamiętając jak robiliśmy złożenie, czyli szukamy "łączników" między przeciwdziedziną \(g\) a dziedziną \(f\), możemy zauważyć ciekawą rzecz. Przeciwdziedzina \(g\), to nic innego jak wartość tej funkcji. Czyli będziemy parować wartości funkcji \(g\), z argumentami funkcji \(f\).
Wartość funkcji \(g\), jak pamiętamy, możemy oznaczyć jako \(g(a)\), gdzie \(a\) będzie argumentem.
Mając tę wartość, czyli element przeciwdziedziny, mamy pierwszy element jakiego szukaliśmy do parowania. Teraz potrzebujemy elementu dziedziny, dla którego szukamy z \(f\). Ten element, możemy wybrać dowolnie. Wybierzmy więc \(x\).
Czyli.
Parujemy wartość \(g\), czyli \(g(a)\), z argumentem \(f\).
Wygląda więc na to, że żeby znaleźć parę z dla jakiegoś argumentu z \(f\), należy zrobić nic innego, jak ten argument owej funkcji zadać. Weźmy sobie więc za argument, wartość \(x\). Teraz zadajemy funkcji owy argument, czyli piszemy \(f(x)\).
Mamy więc \(f(x)\), ale ciągle pamiętamy, że szukamy pary z \(g\), więc skoro \(f(x)\) da nam element przeciwdziedziny, a my chcemy parować jej dziedzinę, z przeciwdziedziną \(g\), to musimy zrobić nic innego, jak wstawić wynik tego \(g\) jako argument \(f\), czyli \(f(g(x))\).
\(g(x)\) da nam element przeciwdziedziny, który chcemy parować, a \(f(g(x))\), sparuje ten element z elementem swojej dziedziny.
Tak o to w ten prosty sposób, uniknęliśmy ciężkich męczarni przechodzenia przez żmudny algorytm składania relacji w jeden prosty rachunek. Uściślijmy sobie jeszcze, czym jest \(x\), a jest nim element należący do dziedziny \(g\), czyli \(x \in dom(g)\), i zapiszmy formalnie definicję złożenia funkcji, która zabrzmi tak:
\(f \circ g = \set{(x, y) \text{ takich że } y= f(g(x)) \text{ gdy } x \in dom(g)}\)
Sztukowanie funkcji
Otóż pojęcie sztukowania funkcji, jest to bardzo wykwintne nazwanie sumowania funkcji.
Pamiętając że funkcja jest relacją binarną, a relacja binarna zbiorem par uporządkowanych, to jej sztukowanie będzie polegało na tym, żeby zsumować owe dwie relacje.
Jądro funkcji
Możemy czasami natknąć się na ciekawe pojęcie jądra funkcji. Samo jądro jest opisywane jako relacja równoważności, z konkretnym wzorem, nie mniej teraz jeszcze nie znamy tego pojęcia toteż tę definicję na razie pominę, a podam definicję złożoną z pojęć, które już znamy.
Otóż jądrem funkcji, nazwiemy złożenie funkcji z jej odwrotnością. Samo jądro będzie z angielskiego kernel oznaczone jako \(\mathrm{ker}\). A więc mają już tę wiedzę, zapiszmy sobie formalną definicję:
\(\)\(\mathrm{ker}(f) = f \circ f^{-1}\)
Czyli wyjdzie nam z tego relacja identycznościowa przeciwdziedziny funkcji \(f\). (jeżeli zastanawiasz się dlaczego, przeprowadź sobie prosty przykład)
Zakończenie
Funkcja jest pojęciem ciekawym na tyle, że jest bardzo mało przypadków w matematyce, gdzie owo pojęcie nie występuje, ze względu na swoją uniwersalność. Np. dodawanie jest funkcją. Jaką? To sobie niedługo powiemy opisując funkcje liczbowe, na razie jednak jako że nie mamy jeszcze pojęcia liczby oraz zbiorów liczbowych, musimy jeszcze chwilę poczekać :)
Mając nadzieję, że wzbudziłem waszą ciekawość, dziękuję za uwagę i do zobaczenia w następnych artykułów :)
Komentarze