Vyšetřování průběhu funkce pomocí programu MatLab K práci budeme potřebovat následující příkazy pro 1. Co budeme potřebovat? (a) zadání jednotlivých výrazů symbolicky (obecně) (b) řešení rovnice f()=0, (c) symbolický (obecný) výpočet první a druhé derivace funkce f(), tedy zjískání předpisu pro f '() a f ''(), (d) výpočet limity. Všechny nadále uvedené příkazy (a další) je možno nalézt v Symbolic Math Toolbo. Tak se nazývá skupina příkazů, které s daty pracijí symbolicky. To znamená, že pracijí s algebraickou podobou výrazů (tedy s písmenky) a ne s jejich funkčními hodnotami (tedy ne s konkrétními čísly). 2. Co k tomu využijeme? Odpovídající příkazy k předchozímu výčtu (a) až (c) uvedeme pro konkrétní případ funkcí f =a 2 b c, g =2 2 1 4, h a =sin a. (a) Zavedení symbolických proměnných a jejich následné použití při definici funkce: >> syms a b c >> f = a*^2 + b* + c, g = 2 * ^2 + 1 / + 4, h = sin (a* ) (b) Nalezení nulových bodů funkcí f, g a h je vlastně úkolem nalézt řešení rovnic g =0 a h a =0. K tomuto účelu použijeme >> nul_g = solve (g) >> nul_h = solve (h) (c) Derivace vyhodnocujeme následujícím způsobem. Jména proměnných (vždy na levé straně rovnosí) volíme vhodně, například: >> prvni_derivace_f_podle_ = diff ( f, ) >> prvni_derivace_g_podle_ = diff ( g ) '--> není potřeba zadávat diff ( g, ), protože v předpisu fukce g je jen jediná neznámá a to >> prvni_derivace_h_podle_a = diff ( h, a ) >> druha_derivace_f_podle_ = diff ( f,, 2 ) >> druha_derivace_g_podle_ = diff ( g, 2 ) >> druha_derivace_h_podle_a = diff ( h, a,2 ) (d) Výpočet limity a uložení výsledku pod zvolenými názvy lim_f = lim 0 f, lim_g = lim t g, lim_h = lim a h a : >> lim_f = limit (f,,0) >> lim_g = limit (g,,t) >> lim_h = limit (g,a,inf ) Limita funkce f v bodě 0 zprava je >> lim_f_zprava = limit (f,,0, 'right') a zleva >> lim_f_zleva = limit (f,,0, 'left'). Konkrétní příklad Pro teoretický podklad odkazuji na přednášky z matematiky. Postup dále uvedený není univerzální, ale ukazuje příklad využití příkazů v programu MatLab k zjednodušení práce při vyšetřování průběhu funkce.konkrétní kroky postupu se mohou lišit v závislosti na vyšetřované funkci. Zadání: Vyšetřete průběh funkce f = 2 1.
Řešení: (1.) Symbolické zadání funkce f, symbolické vyhodnocení její první a druhé derivace Zavedeme symbolickou proměnnou : >> syms Z důvodu, který bude zřejmý v kroku (2), si nejdříve zvlášť definujeme funkce v čitateli i ve jmenovateli označené g1 a g2. Až potom definujeme funkci f jako podíl g1() a g2() : >> g1 = -^2 + - 1 ; >> g2 = ; >> f = g1 / g2 ; Dále si nechejme vypočítat první a druhou derivaci funkce f. První derivaci označíme df a druhou ddf : >> df = diff(f,) df = (-2*+1)/-(-^2+)/^2 >> ddf = diff(f,,2) ddf = -2/-2*(-2*+1)/^2+2*(-^2+)/^ Případně si můžeme nechat vyjádření df a ddf zjednodušit následujícím způsobem >> df = simplify(df) df = -(^2)/^2 >> ddf = simplify(ddf) ddf = -2/^ (2.) Základní vlastnosti: body nespojitosti a definiční obor Jelikož funkce f je racionální (lomená) potřebujeme nejdříve nalézt body nespojitosti. To jsou nulové body fukce ve jmenovateli. Budeme tedy hledat řešení rovnice g2 =0, které si označíme zero_g2: >> zero_g2 = 0 Tento výsledek můžeme rovnou napsat, protože g2 =. (Jinak bysme použili příkaz solve) Funkce v čitateli f je definována na celé reálné ose, tedy definiční obor funkce f je celá reálná osa až na bod 0 : Df =,0 0, (.) Nulové body - průsečíky f s -ovou osou Nulový bod nalezneme jako všechna reálná řešení rovnice f =0 tedy : >> zero_f = solve(f) zero_f = [ 1/2/2*i*^(1/2)] [ 1/2+1/2*i*^(1/2)] Vidíme, že v obou dvou případech jde o komplení číslo (objevuje se tam imaginární jednotka i ). Proto můžeme říci, že funkce f nemá průsečíky s osou (pracujeme totiž v reálném oboru). (4.) Kladnost a zápornost funkce f Protože nenáme žádný reálný nulový bod funkce, budeme studovat jen dva intervaly,0 a 0,. Hodnoty funkce budou stejné vždy v celém intervalu. Takže postačí jen dosadit libovolnou hodnotu z každého z těchto intervalů. Zvlome například a 1. Opět si můžeme pomoci MalLabovským příkazem: >> subs(f,) >> subs(f,1) Tedy f() > 0 pro,0 a f() < 0 pro 0,.
(5.) Stacionární body a monotónnost funkce f Stacionární body nalezneme jako nulové body df první derivace funkce f, tedy řešení rovnice df =0 : >> zero_df = solve (df) zero_df = [ 1] [ ] Máme tedy dva stacionární body. Funkce f bude vždy rostoucí nebo klesající na celém intervalu z následujícího výčtu, 1, 1,0, 0,1 a 1,. Kladné hodnoty první derivace značí rostoucí funkci a záporné funkci klesající. Proto opět jako v kroku (4.) zvolíme z každého intervalu nějakého zástupce, například -2, -0.5, 0.5, 2. Tedy >> subs(df,-2) -0.7500 >> subs(df,-0.5) >> subs(df,0.5) >> subs(df,2) -0.7500 Vidíme, že funkce f je rostoucí (df() > 0 ) na intervalech a 1,0 a 0,1 a klesající (df() < 0 ) na, 1 a 1,. (6.) Inflení body, konvenost a konkávnost funkce f Inflení body nalezneme jako nulové body ddf druhé derivace funkce f, tedy řešení rovnice ddf =0 : >> zero_ddf = solve (ddf) Warning: Eplicit solution could not be found. > In E:\MATLAB6p5\toolbo\symbolic\solve.m at line 16 In E:\MATLAB6p5\toolbo\symbolic\@sym\solve.m at line 49 zero_ddf = [ empty sym ] Protože druhá derivace je tvaru ddf = 2 vidíme, že MatLab píše správně, že množina řešení dovnice ddf =0 je prázdná ( empty ). Funkce f nemá inflení body. Funkce f bude vždy konvení nebo konkávní na celém intervalu ze stejného výčtu jako v (5.) :, 1, 1,0, 0,1,a 1,. Kladné hodnoty druhé derivace značí konvení funkci a záporné funkci konkávní. Proto opět jako v kroku (4.) a v kroku (5.) zvolíme z každého intervalu nějakého zástupce, například -2, -0.5, 0.5, 2. Pak >> subs(ddf,-2) 0.2500 >> subs(ddf,-0.5) 16 >> subs(ddf,0.5) 6
>> subs(ddf,2) -0.2500 Závěr předchozího vyhodnocení je tedy ten, že funkce f je konvení (ddf() > 0 ) na intervalech, 1 a 1,0 a konkávní (ddf() < 0 ) na 0,1 a 1,. (7.) Lokální etrémy funkce f Stacionární body mohou být lokálním etrémem funkce.pokud v inflením bodě je hodnota druhé derivace kladná, jde o lokální mimimum, pokud je záporná, pak je lokální maimum. Stacionární body jsme nalezli v (5.). Jsou to 1 a, tedy >> subs(ddf,) 2 >> subs(ddf,1) -2 Tedy bod = je ostrým lokálním minimem a bod = 1 je ostrým lokálním maimem. Navíc si můžeme vyhodnotit funkční hodnoty v těchto etremálních bodech: >> subs(f,) >> subs(f,1) (8.) Asymptoty fumkce f (8a.) Vertikální asymptoty Chování funkce v bodech nespojitosti, tj. = a = 1. Pro 0 zleva je limita f rovna, >> lim_0_zleva = limit (f,,0,'left') lim_0_zleva = inf podobně pro je 0 zpava limita f rovna >> lim_0_zprava = limit (f,,0,'right') lim_0_zprava = - inf Vertikální asymptotou (tedy tzv. asymtotou bez směrnice) je tedy = 0. (8b.) Asymptoty v bodech a Jde o chování funkčních hodnot pro rostoucí nade vše meze. Pro je limita f rovna. >> lim_plus_inf = limit (f,,inf) lim_plus_inf = -inf >> lim_minus_inf = limit (f,,-inf) lim_minus_inf = inf Vyšetříme tedy, zda má funkce f asymptoty v a. Pokud budou hodnoty limit k=lim f a
q=lim f k nějaká konečná reálná čísla, pak je asymptotou v bodě přímka tvaru p =k q. Podobná podmínka platí pro bod. >> k_1 = limit (f/,,inf) k_1 = >> q_1 = limit (f - k*,,inf) q_1 = 1 Vidíme tedy, že funkce f má v bodě asymptotu p = 1. Podobně budeme postupovat v případě bodu : >> k_2 = limit (f/,,- inf) k_2 = >> q_2 = limit (f - k*,,- inf) q_2 = 1 I v bodě má funkce f asymptotu p = 1. (9.) Porovnání vlastního náčrtku s vykreslením pomocí programu MatLab. >> ezplot(f) Případně můžeme do grafu přidat asymptotu a vyznačit etrémy: >> p = - + 1 ; >> etremy = [ 1] ; hodnoty = [subs(f,) subs(f,1)] >> ezplot(f),hold on,plot(etremy,hodnoty,'or'),hold on,fplot(p,[-6 6],'g')