Kreslení pomocí grafů funkcí

Nedávno jsem si ve škole připomněl, jak šikovná je funkce absolutní hodnota. Když nějakou funkci f(x) dáte do absolutní hodnoty (tedy získáte funkci |f(x)| ), to co je pod osou x se „překlopí“ nad osu x. Pokud nedáte celou funkci do absolutní hodnoty, ale místo toho dáte do absolutní hodnoty pouze všechny výskyty proměnné x (tedy získáte funkci f(|x|) ), způsobí to podobně efektní věc, a to že graf bude osově souměrný podle osy y, a to tak, že se zachová to, co je napravo od osy y.

Pro názornost jsem to nakreslil:

Flešová animace

Pokud má člověk náladu, může si s funkcemi |f(x)| a f(|x|) docela vyhrát a kreslit pomocí nich nejrůznější tvary grafů. To mě přivedlo k nápadu, že určitě existují i další funkce pro „kreslení“ pomocí grafů. První funkce, která mě napadla a kterou jsem si chtěl zkonstruovat funguje tak, že pro x<0 má hodnoty jako funkce g(x) a pro x>=0 má hodnoty jako funkce h(x).

Od začátku mi bylo jasné, že budu muset použít funkci signum, ta k tomu přímo vybízí 🙂 (Funkce signum (psáno sgn x ) pro x<0 má hodnotu y=-1, pro x=0 má hodnotu y=0 a pro x>0 má hodnotu y=1.)

Jako první cíl si dejme to, abychom vykreslili g(x) na záporné poloose a zbytek aby byl roven nule, o hodnotu v bodě 0 se zatím nebudeme zajímat. Jednou z možných cest je vynásobit g(x) něčím, co nabývá hodnoty jedna pro x<0 a hodnoty nula pro x>0. K tomu účelu nám poslouží tento výraz:

-(sgn x - 1) / 2

Analogicky vytvoříme výraz, kterým budeme násobit h(x). Tentokrát bude nabývat hodnoty jedna pro x>0 a hodnoty nula pro x<0 :

(sgn x + 1) / 2

Čímž dostáváme funkci:

y = -(sgn x - 1) / 2 * g(x) + (sgn x + 1) / 2 * h(x)

Teď je ještě zapotřebí ošetřit hodnotu v bodě 0. Mě osobně se nejvíc líbila varianta, že v bodě nula má funkce hodnotu jako funkce h(x). Je tedy zapotřebí vynásobit g(x) něčím, co má v bodě 0 hodnotu 0 a na záporné poloose hodnotu 1. O kladnou poloosu se nemusíme starat, tu nám jako nulovou jistí dříve přidávaný výraz. K našim účelům nám tak akorát pasuje následující výraz:

-sgn x

Dále potřebujeme něco přinásobit k funkci h(x). Protože výraz

(sgn x + 1) / 2

má pro x=0 hodnotu 1/2, musíme násobit něčím, co má pro x=0 hodnotu 2 a pro x>0 hodnotu 1. (Tentokrát se nemusíme starat o zápornou poloosu.) Kýžený výraz je následující:

2 - sgn x

Čímž dostáváme výslednou funkci:

y = sgn x * (sgn x - 1) / 2 * g(x) + (2 - sgn x) * (sgn x + 1) / 2 * h(x)

Mám radši tento zkrácený tvar (Ještě podotknu, že při zkracování jsem použil toho, že (sgn x)ˆ2 = |sgn x| ):

y = ( |sgn x| - sgn x ) / 2 * g(x) + ( sgn x - |sgn x| + 2 ) / 2 * h(x)

Jednoduchou úpravou docílíme toho, aby hraniční bod byl jiné číslo než 0. Jednoduše všechny výrazy sgn x nahradíme výrazem sgn(x-m), kde m je hraniční bod na ose x mezi funkcemi g(x) a h(x):

y = (|sgn(x-m)|-sgn(x-m))/2 * g(x) + (sgn(x-m)-|sgn(x-m)|+2)/2 * h(x)

Ještě zbývá říci, jak zkonstruovat funkci, která se skládá z libovolného počtu funkcí. Provedení je velmi jednoduché. Mějme například tři funkce: g(x), h(x), i(x). A tři intervaly, ve kterých se budou jednotlivé funkce „vykreslovat“: (-nekonečno,m) , (m,n) , (n,nekonečno).

Nejdříve zkonstruujeme funkci e(x), kterážto bude složeninou funkcí g(x) a h(x), jejich hraniční bod bude bod m:

e(x) = (|sgn(x-m)|-sgn(x-m))/2 * g(x) + (sgn(x-m)-|sgn(x-m)|+2)/2 * h(x)

Nakonec vytvoříme funkci f(x), která bude složeninou funkcí e(x) a i(x), jejich hraniční bod bude bod n:

f(x) = (|sgn(x-n)|-sgn(x-n))/2 * e(x) + (sgn(x-n)-|sgn(x-n)|+2)/2 * i(x)

Čímž dostáváme požadovanou trojitou funkci.

Na závěr se ještě chci zmínit o „chybě“ v této vykreslovací funkci. Představme si, že máme funkce g(x) a h(x), které chceme vykreslit. Obě funkce jsou na námi požadovaných intervalech definovány. Jenže pokud funkce g(x) není definována v nějakém bodě intervalu, kde chceme vykreslit funkci h(x), pak v tomto bodě bude naše vykreslovací funkce nedefinována.

Reklamy
Příspěvek byl publikován v rubrice Nápady. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

Zanechat odpověď

Vyplňte detaily níže nebo klikněte na ikonu pro přihlášení:

Logo WordPress.com

Komentujete pomocí vašeho WordPress.com účtu. Odhlásit /  Změnit )

Google+ photo

Komentujete pomocí vašeho Google+ účtu. Odhlásit /  Změnit )

Twitter picture

Komentujete pomocí vašeho Twitter účtu. Odhlásit /  Změnit )

Facebook photo

Komentujete pomocí vašeho Facebook účtu. Odhlásit /  Změnit )

Připojování k %s