16. Pojęcie funkcji.
Treści kształcenia. Pojęcie funkcji (intuicyjne, nie jako relacji), argumenty, wartości, dziedzina, przeciwdziedzina, zbiór wartości. Funkcje monotoniczne, wypukłe, parzyste, nieparzyste, okresowe. Iniekcje, suriekcje i bijekcje. Przegląd podstawowych funkcji elementarnych (afiniczna, kwadratowa, wykładnicza, logarytmiczna (teoria obliczeń), trygonometryczne), ich wykresy i własności.
Efekty kształcenia. Student potrafi i określać własności podstawowych funkcji, które napotyka w informatyce.
Termin funkcja należy do fundamentalnych pojęć matematyki. Funkcje umożliwiają m.in. modelowanie i badanie zjawisk z wielu dziedzin nauki. Najczęściej wykorzystuje się to pojęcie do badania zależności między dwiema lub więcej wielkościami (najczęściej liczbowymi) zwanymi zmiennymi. Ponieważ funkcje mogą być różnej natury, definicja tego pojęcia musi być odpowiednio “pojemna”. Pojęcie funkcji może być zdefiniowane na kilka sposobów. Najbardziej precyzyjna zdaje się być definicja relacyjna. My będziemy posługiwali się definicją poznaną w szkole.
Def. Niech dane będą niepuste zbiory oraz . Funkcją nazywamy przyporządkowanie, które każdemu elementowi zbioru przyporządkowuje dokładnie jeden element zbioru .
Elementy zbioru nazywamy argumentami funkcji , a zbiór dziedziną funkcji i oznaczamy przez .
Elementy zbioru nazywamy wartościami funkcji , zaś sam zbiór nosi nazwę przeciwdziedziny funkcji . Do oznaczenia przeciwdziedziny stosujemy symbol . Zatem .
Zbiór
nazywamy zbiorem wartości funkcji .
Z definicji widzimy, że do zbioru należą te elementy , dla których istnieje taki element , że . Mamy więc . Bywa, że oba zbiory są równe.
Jeśli , to taką funkcję nazywamy ciągiem.
Należy zwrócić uwagę, że w definicji funkcji pojawiają się trzy elementy - zbiory i oraz przyporządkowanie reprezentowane przez literę . Choć ostatni termin nie jest w sensie matematycznym precyzyjny, to dosyć dobrze oddaje on matematyczną intuicję tego, czym jest funkcja. Zwykle utożsamia się funkcję ze wzorem, a gdy wzór nie jest możliwy do napisania, podaje się np. określenie słowne.
Przykład 1.¶
Rozważmy następujące przyporządkowania:
Przez oznaczmy zbiór wszystkich posiadaczy zarejestrowanych samochodów w Polsce i niech oznacza przyporządkowanie każdemu posiadaczowi samochodu numeru rejestracyjnego jego pojazdu.
Każdemu obywatelowi Polski przyporządkowujemy jego numer PESEL.
Każdej liczbie rzeczywistej przyporządkowujemy jej rozwinięcie dziesiętne.
Każdemu człowiekowi przyporządkowujemy jego rodziców biologicznych.
Każdej parze rodziców przyporządkowujemy dziecko.
Dowolnemu punktowi na płaszczyźnie przyporządkowujemy współrzędne kartezjańskie.
Dowolnej parze liczb rzeczywistych przyporządkowujemy punkt, którego współrzędnymi kartezjańskimi są obie liczby.
Każdej prostej na płaszczyźnie przyporządkowujemy jej współczynniki równania ogólnego.
Dowolnej prostej na płaszczyźnie, która nie jest równoległa do osi OY, przyporządkowujemy parę liczb odpowiadającą odpowiednio współczynnikowi kierunkowemu i wyrazowi wolnemu w równaniu kierunkowym prostej.
Dowolnej parze liczb rzeczywistych przyporządkowujemy prostą o równaniu
Przyporządkowanie 1 nie jest funkcją, bo istnieją właściciele kilku aut.
Przyporządkowanie 2 jest funkcją z zastrzeżeniem, że ze zbioru obywateli RP należałoby wyłączyć małą grupkę dopiero co narodzonych obywateli niedysponujących numerem PESEL. Pomijając ten techniczny aspekt, można uznać, że jest ono funkcją.
Przyporządkowanie 3 nie jest funkcją, bo istnieją liczby, które mają dwa rozwinięcia dziesiętne (jakie?).
Przyporządkowanie 4 jest funkcją. Zwróćmy uwagę, że chociaż wartość funkcji składa się z dwóch obiektów, to jednak jako jednoznacznie wyznaczona para (np. postaci ) stanowi jeden element.
Przyporządkowanie 5 nie jest funkcją, bo istnieją pary mające więcej niż jedno dziecko.
Oba przyporządkowania 6 i 7 są funkcjami.
Przyporządkowanie 8 nie jest funkcją, gdyż istnieje nieskończenie wiele trójek współczynników , dla których
jest równaniem danej prostej. Istotnie, jeśli trójka odpowiada pewnej prostej, to każda trójka współczynników postaci dla również wyznacza równanie tej prostej. Odpowiada to obustronnemu pomnożeniu równania
przez niezerową liczbę . Równoważne równania wyznaczają ten sam obiekt w układzie współrzędnych.
Dwa ostatnie przykłady definiują przyporządkowania będące funkcjami. W przypadku równania kierunkowego współczynniki i jednoznacznie wyznaczają prostą odpowiadającą wykresowi funkcji liniowej i na odwrót. Zwróćmy uwagę, że jednak nie każdą prostą równaniem kierunkowym można zapisać.
Analizując powyższe przykłady, widzimy, że pojawiające się funkcje miały różne własności. W niektórych przypadkach np. mogliśmy “odwrócić kierunek” przyporządkowania i również otrzymywaliśmy funkcję, a w innych taka procedura nie była możliwa. Spróbujemy niebawem rozstrzygnąć, kiedy (tj. dla jakich funkcji) takie oraz inne operacje będą możliwe.
Sposoby definiowania funkcji¶
Do definiowania funkcji (oprócz opisów jak w przykładzie powyżej) zazwyczaj stosujemy wzory. Używamy również tabel. Funkcje reprezentować można również za pomocą grafu, chociaż tej ostatniej metody w praktyce raczej się nie stosuje.
Wzór¶
Wzory zawierają najczęściej operacje arytmetyczne na tzw. funkcjach elementarnych. Kilka prostych przykładów:
,
,
.
Częstym pytaniem, jakie się w takiej sytuacji stawia uczniowi, jest pytanie o dziedzinę funkcji. Pytanie takie nie jest do końca precyzyjnie sformułowane. W rzeczywistości chodzi o wskazanie największego zbioru (spośród znanych?), z którego wybierając elementy jako argumenty wskazanej funkcji “operacje” pojawiające we wzorze określającym daną funkcję mają sens matematyczny. Kluczem do odpowiedzi jest wiedza dotycząca dziedzin funkcji elementarnych lub innych, które pojawiają się we wzorze definiowanej funkcji.
Dziedziną pierwszej funkcji (w takim rozumieniu) jest zbiór liczb rzeczywistych, gdyż taką dziedzinę ma funkcja sinus.
Druga z funkcji jest ilorazem dwóch funkcji. Dziedziną funkcji z licznika jest zbiór liczb rzeczywistych. Z dziedziny funkcji należy usunąć te wartości , dla których mianownik przyjmuje wartość zero. Zatem .
W trzecim przykładzie należy założyć, że wyrażenie pod pierwiastkiem jest nieujemne. Rozwiązując elementarną nierówność dostajemy .
Tabela¶
Do definiowania funkcji używamy czasami tabeli. Oczywiście możemy tak postąpić tylko, gdy dziedzina funkcji jest zbiorem skończonym o niewielkiej liczbie elementów. Tabeli można użyć także po to, aby reprezentować wybrane wartości funkcji oraz w sytuacjach, gdy, badając jakieś zjawisko, próbujemy dostosować model (funkcję) do zebranych danych doświadczalnych.
Przykład 2.¶
Wygenerujemy tablice zawierające wybrane wartości funkcji kwadratowej oraz funkcji sinus z przedziału . Tablica będzie zawierała 100 takich wartości, równomiernie pokrywających przedział (tworzących ciąg arytmetyczny).
import numpy as np
import pandas as pd
x = np.linspace(-5, 5, 100)
y = x **2 - 12.5
z = np.sin(x)f_x = pd.DataFrame({'x': x, 'f(x)= x^2 - 25/2':y})
g_x = pd.DataFrame({'x': x, 'g(x)= sin(x)':z})
f_xg_xWykres funkcji¶
Definicja. Wykresem funkcji nazywamy zbiór
Przedstawiona wyżej definicja odpowiada raczej tabeli wszystkich argumentów i odpowiadających im wartości funkcji. Dla funkcji o nieskończonej dziedzinie “tabela” ta jest nieskończona. Wykresem w powszechnie rozumianym tego słowa znaczeniu zbiór staje się, gdy pary umieścimy w układzie współrzędnych.
Wykresu funkcji używamy do wizualnej reprezentacji funkcji. Jeśli funkcja ma skomplikowany wzór, to zdecydowanie więcej istotnych informacji jesteśmy w stanie “wyczytać” z wykresu niż z formuły opisującej funkcję. Zauważmy jednak, że wykresy funkcji stają się trudne do sporządzenia i interpretacji, gdy pojawia się więcej zmiennych (funkcje wielu zmiennych).
Do wygenerowania wykresu za pomocą narzędzi programistycznych musimy najczęściej przedstawić dane w postaci tabeli i użyć odpowiednich narzędzi. Dla funkcji, których wykres zawiera nieskończenie wiele argumentów i jest “linią ciągłą”, narzędzie programistyczne łączy w odpowiedni sposób wprowadzone punkty. Oczywiście matematyk nie może być w takiej sytuacji bezkrytyczny!
Przykład 3.¶
W Pythonie do tworzenia wykresów można wykorzystać bibliotekę Matplotlib. Sporządźmy wykresy funkcji i , których argumenty i wartości wprowadziliśmy do tabel. Rysując wykresy funkcji, których dziedziną jest odcinek, prosta lub półprosta, bezpiecznie jest pokryć dziedzinę “dosyć gęsto” wybranymi wartościami. W przeciwnym razie otrzymany wykres może znacznie odbiegać kształtem od wykresu funkcji .
import matplotlib.pyplot as plt
# the function y = x^2 - 25/2
# setting the axes at the centre
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.set(title='y=x^2-25/2')
# plot the function
plt.plot(x,y, 'b')
# show the plot
plt.show()
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.set(title='y= sin(x)')
plt.plot(x,z, 'r')
plt.show()
Wykres funkcji dwóch zmiennych¶
Wykres funkcji dwóch zmiennych wyznacza powierzchnię w układzie współrzędnych . Wygenerujemy funkcję , dane do wykresu tej funkcji oraz sam wykres.
def f(x, y):
r = 3**(-x**2 - y**2)
return 1 / (r + 1)
x_2 = np.linspace(start=-2, stop=2, num=200)
y_2 = np.linspace(start=-2, stop=2, num=200)
x_2, y_2 = np.meshgrid(x_2, y_2) # all couples (x,y)# Generating 3D Plot
fig = plt.figure(figsize=[16, 12])
ax = fig.add_subplot(projection='3d')
ax.set_xlabel('x', fontsize=20)
ax.set_ylabel('y', fontsize=20)
ax.set_zlabel('f(x, y)', fontsize=20)
ax.plot_surface(x_2, y_2, f(x_2, y_2), cmap='plasma', alpha=0.6)
plt.show()
Gdy dziedziną jest zbiór liczb naturalnych lub dowolny zbiór skończony, wówczas wykres składa się z izolowanych punktów.
X = np.linspace(-5, 5, 10)
fig, ax = plt.subplots(figsize=(10,10))
ax.scatter(X, 2*X+1);
ax.set(title='Ciąg arytmetyczny', xlabel = 'n', ylabel = 'f_n');
Równość funkcji¶
Naturalną operacją matematyczną jest porównywanie obiektów. Funkcje można byłoby porównywać na wiele sposobów. My odpowiemy tylko na pytanie, kiedy dwie funkcje i są sobie równe. Aby taka równość zachodziła, spełnione muszą być warunki
,
Dla każdego
Uwaga! Niekiedy zakłada się, że do równości funkcji konieczny jest również warunek równości przeciwdziedzin. Ma to swoje uzasadnienie, bo może się zdarzyć, że gdy zachodzą powyższe warunki, jedna z funkcji (ta, której przeciwdziedzina jest “mniejsza”) może być odwracalna, podczas gdy druga odwracalna nie będzie.
Przykład 4.¶
Funkcje dane wzorami oraz są sobie równe.
Funkcje oraz z “naturalnymi dziedzinami” nie są sobie równe. Jak pamiętamy, dziedzina funkcji tangens nie zawiera punktów postaci , zaś . Dziedziną funkcji jest cały zbiór liczb rzeczywistych.
Funkcje określone wzorami oraz są równe. Gdyby zdefiniować obie funkcje tymi samymi wzorami na całym zbiorze liczb rzeczywistych, równość nie będzie zachodzić.