9 Kapitola POJEM FUNKCE VÍCE PROMÌNNÝCH Zde se vu ití poèítaèe p ímo nabíí. Tato èást matematické anal se probírá v dobì, kd nejsou probrán odpovídající partie geometrie (imní semestr v. roèníku uèitelského studia). Studenti proto èasto postrádají geometrickou p edstavu v prostoru, a tak jsou visualiaèní schopnosti poèítaèov ch sstémù velmi vítán. P ipomeòme, e v celé práci se ab váme reálnou funkcí dvou, event. t í reáln ch promìnn ch... Graf funkce dvou promìnn ch V imnìme si podrobnìji problematik tvorb grafù reálné funkce dvou reáln ch promìnn ch pomocí programu Maple V. Zamì íme se ejména na p ípad, kd poèítaèem ískan v stup (v dal ím na van PC-graf), neodpovídá grafu funkce. Definice.. Nech f je funkce n reáln ch promìnn ch definovaná na mno inì M R n, n. Grafem funkce f na váme mno inu bodù G(f) =f[; ] R n+ : =[ ;:::; n ] M; = f()g: Pro funkci dvou promìnn ch, tj. n =, je grafem funkce mno ina bodù v t íromìrném prostoru. Definujme funkci f(; ) = sin() cos(): > f:=(,)->sin()*cos(); f := ( ; )! sin( ) cos( ) a sestrojme PC-graf funkce f (obr..):
Pojem funkce více promìnn ch > plotd(f, -Pi..Pi, -Pi..Pi); obr.. Stejnì jednodu e je mo no ískat i PC-graf ploch dané parametrick, nap. = sin u cos v, = sin u sin v, = cos u, u [;ß], v [; ß] (obr..): > with(plots): > plotd([sin(u)*cos(v),sin(u)*sin(v),cos(u)],u=..pi,v=..*pi, > stle=patch, scaling=constrained, aes=framed, labels=[,,]);.5.5 -.5 -.5 - - - - - - -.5 -.5 -.5 -.5.5.5.5.5 obr.. obr.. Parametrem scaling=constrained jsme dosáhli stejného mì ítka na osách v sledného PC-grafu. Porovnejme PC-graf na obráku. s PC-grafem na obráku., na kterém je tatá koule generovaná be nastavení parametru scaling=constrained: > plotd([sin(u)*cos(v),sin(u)*sin(v),cos(u)],u=..pi,v=..*pi, > stle=patch, aes=framed, labels=[,,]); Jak m pùsobem probíhá konstrukce PC-grafu? Zadáme funkèní p edpis a mno inu bodù [; ], pro které chceme funkci obrait. Tato mno ina je tpu h min ; ma i h min ; ma i. Na ní pak program vtvo í sí, v jejich ulov ch bodech numerick spoèítá funkèní hodnot (tto jsou ulo en do objektu PLOTD). Hustotu sítì regulujeme pomocí parametru grid=[m,n], kde m a n udává poèet ulov ch bodù ve smìru os a. Implicitní nastavení tohoto parametru je [5,5]. Funkèní hodnot jsou poté podle interpolaèních pravidel pospojován a PC-graf obraen na v stupním a íení.
Pojem funkce více promìnn ch Tento postup v ak ejmì mù e vést k avádìjícím v sledkùm. Pro ilustraci nap. vtvo me PC-graf funkce g(; ) = sin(ß) sin(ß), pro a intervalu h; 5i bee mìn implicitního nastavení parametrù: > plotd(sin(*pi*)*sin(*pi*), =..5, =..5, aes=boed, > labels=[,,]); Podrobnìj í anal ou adané funkce v ak jistíme, e ískan PC-graf (obr..) neodpovídá skuteènosti, funkce sin(ß) a sin(ß) jsou periodické s periodou a tomu PC-graf na obráku. neodpovídá. Zhu tìním sítì dostáváme v sledek bli í skuteènému chování uva ované funkce (obr..5): > plotd(sin(*pi*)*sin(*pi*), =..5, =..5, aes=boed, > grid=[6,6], labels=[,,]);.5.5 -.5 -.5 - - 5 5 5 5 5 5 5 5 5 5 5 5 obr.. obr..5 Dal í problém vnikají p i tvorbì grafù nespojit ch funkcí. Nejjednodu í situace nastává v p ípadì, kd studovaná funkce není v bodì [ ; ] spojitá, ale v tomto bodì eistuje koneèná limita. Pak mù eme buï mìnit hustotu ulov ch bodù nebo funkci vhodn m pùsobem dodefinovat. P íklad.. Vtvo te PC-graf funkce f(; ) = + : P íkaem: > f:=(,)->(^*)/(^+^); f := ( ; )! + adáme funkci a p íkaem: > plotd(f,..,..,orientation=[-57,8],aes=framed,labels=[,,]); ískáme PC-graf obraen na obr..6.
Pojem funkce více promìnn ch.5.5.5.5 -.5 -.5 - - -.5 - - - - -.5 - - - - obr..6 obr..7 Bod, ve kterém v et ovaná funkce není spojitá, je p i této hustotì sítì toto n s ulov m bodem a program v nìm nemù e spoèítat funkèní hodnotu. P i obraování na v stupním a íení je funkèní hodnota v bodì nespojitosti vnechána a obraen PC-graf neodpovídá v okolí bodu [; ] grafu funkce. V imnìme si u tohoto p íkladu podrobnì struktur Mapleovské grafik. Generujme graf koumané funkce pro a intervalu h ; i p i hustotì sítì [7; 7] a podívejme se, jaká je struktura vtvo eného objektu PLOTD: > p:=plotd(f,..,.., orientation=[-57,8], aes=framed, > grid=[7,7], color=black, labels=[,,]);p; p := PLOTD(GRID( ::::; ::::; [[ :5; :86586585; :9; ; :9; :86586585; :5] ; [ :9769769; :; :8; ; :8; :; :9769769]; [ :; :; :5; ;:5; :;:]; [; ; ; FAIL; ; ; ]; [ :; :; :5; ; :5;:;:] ; [ :9769769; :; :8; ; :8; :; :9769769]; [ :5; :86586585; :9; ;:9; :86586585; :5]]; COLOR( RGB; ; ; )); AXESLABELS( ; ; ); TITLE( ); AXESSTYLE( FRAME ); PROJECTION( 57:; 8:; )) V objektu PLOTD jsou ulo en funkèní hodnot v ulov ch bodech sítì, které jsou poèítán numerick postupnì po adách. V imnìme si funkèních hodnot pro bod [; ], [; ], :::. Zde skuteènì v poèet funkèní hodnot pro bod [; ] havarujeß (FAIL). Ná-
Pojem funkce více promìnn ch slednì je tento objekt pou it p i obraování na v stupním a íení a chbìjící funkèní hodnota v bodì [; ] je vnechána (obr..7). Zmìníme ted hustotu ulov ch bodù tak, ab bod [; ] (bod nespojitosti) nebl ulov m bodem (obr..8): > plotd(f,..,.., orientation=[-57,8], aes=framed, > grid=[,], labels=[,,]); Jinou mo ností je dodefinovat funkèní hodnotu v bodì [; ] tak, ab funkce f v tomto bodì bla spojitá. Poté generujme PC-graf ískané spojité funkce: > g:=proc(,) if = and = then else (^*)/(^+^) fi end: > plotd(g,..,..,orientation=[-57,8],aes=framed,labels=[,,]); Obdr íme v sledek náornìn na obr..9..5.5.5.5 -.5 -.5 - - -.5 - - - - -.5 - - - - obr..8 obr..9 P íklad.. Funkce f(; ) = sin není spojitá v bodech le ících naosách a, ale má de koneènou limitu rovnu jedné. P i pokusu o tvorbu PC-grafu p íkaem: > plotd(sin(*)/(*), =.., =.., aes=framed, color=black, > orientation=[5,5], labels=[,,], tickmarks=[7,7,]); dostáváme PC-graf na obráku.. Zde jsou opìt patrné nespojené bod, ve kter ch v poèet funkèních hodnot havarovalß (bod nespojitosti na osách a opìt vcháejí do ulov ch bodù sítì). Vtvo me ted PC-graf spojité funkce (obr..) (dodefinujme funkci tak, ab bla spojitá) ( pro = nebo = g(; ) = f(; ) jinak. > g:=proc(,) if = or = then else sin(*)/(*) fi end: > plotd(g,..,.., aes=framed, orientation=[5,5], > color=black, labels=[,,], tickmarks=[7,7,]);
Pojem funkce více promìnn ch.5.5 - - - - - - - - obr.. obr.. Jinou mo ností je opìt vhodnì mìnit hustotu sítì tak, ab bod nespojitosti nebl toto né s ulov mi bod sítì. Pokud v bodech nespojitosti neeistuje koneèná limita, je náornìní chování takové funkce pomocí poèítaèe obtí nìj í. P íklad.. Generujte PC-graf funkce f(; ) = =. Proto e lim! + = = +, lim! = =, není funkce f na p ímce = spojitá. P íkaem: > plotd(/, =-5..5, =-5..5, orientation=[-6,7], aes=framed, > labels=[,,]); dostáváme PC-graf obr... -e+ -e+ -6e+ -8e+ -e+5 -.e+5 -.e+5 -.6e+5 -.8e+5 - - - - obr.. Vidíme, e PC-graf neodpovídá grafu koumané funkce. Podívejme se opìt na objekt PLOTD, pro jednodu ení volme grid=[7,] (obr..): > p:=plotd(/, =-5..5, =-5..5, orientation=[-6,7],aes=framed,
Pojem funkce více promìnn ch 5 > grid=[7,], color=black, labels=[,,]);p; p := PLOTD(GRID( 5:::5:; 5:::5:; [[ :; :; :]; [ :; :; :]; [ :5999999999999999; :5999999999999999; :5999999999999999]; [ :579986858 6 ; :579986858 6 ; :579986858 6 ]; [ :6;:6;:6 ] ; [ :;:;: ] ; [ :;:;: ] ]; COLOR( RGB; ; ; )); AXESLABELS( ; ; ); AXESSTYLE( FRAME ); TITLE( ); PROJECTION( 6:; 7:; )) Maple volí rosah obraovan ch hodnot a mì ítka na osách sám tak, ab se v sledn PCgraf co nejlépe ve elß na v stupní a íení. To ejména u funkcí, jejich limita v nìkterém bodì je rovna, pùsobuje problém (odli nost grafu a PC-grafu funkce). Z algoritmu realiace PC-grafu na v stupním a íení plne i spojení tìch funkèních hodnot, které b nemìl b t spojen (v okolí bodù nespojitosti, bod nespojitosti v tomto p ípadì nejsou toto né s ulov mi bod). Z objektu PLOTD je také vidìt, e p i této hustotì sítì a stanovené p esnosti aproimace jsou v PC-grafu potlaèen funkèní hodnot blíké +. Staèí v ak mìnit p esnost aproimace (mìnou hodnot promìnné Digits, implicitní nastavení je Digits:=9), a dostáváme jinou sí ulov ch bodù a také jin PC-graf (obr..): > Digits:=8; Digits := 8 > plotd(/, =-5..5, =-5..5, orientation=[-6,7],aes=framed, > grid=[7,], color=black, labels=[,,]); e+7-5e+ 8e+6 -e+5 -.5e+5 6e+6 e+6 e+6 -e+5 - - - - - - - - obr.. obr..
Pojem funkce více promìnn ch 6 Omeíme ted rosah obraovan ch hodnot (view=-5..5) p i pùvodní p esnosti aproimace (obr..5): > Digits:=9: > plotd(/, =-5..5, =-5..5, view=-5..5, > orientation=[-6,7], aes=framed, labels=[,,]); - - - - - - obr..5 Na PC-grafu je vidìt poitivní vliv mìn rosahu obraovan ch hodnot, nadále v ak p etrvává spojování i tìch bodù PC-grafu, které spojen b t nemìl. Skuteènosti odpovídající PC-graf ískáme následujícím pùsobem. Tvorbu PC-grafu rodìlíme do dvou èástí tím, e definièní obor rodìlíme na dvì oblasti: h 5; :i h ; i a h:; 5i h ; i. Jednotlivé samostatnì vtvá ené èásti PC-grafu v ávìru interpretujeme v jediném (obr..6) pomocí p íkau displad knihovn plots: > o:=plotd(/, =-5..-., =.., view=-5..5): > o:=plotd(/, =...5, =.., view=-5..5): > displad( o,o}, orientation=[-6,7],aes=framed, labels=[,,]); - - - - - - obr..6
Pojem funkce více promìnn ch 7 Ponámka.. Tvorba PC-grafu nespojité funkce jedné reálné promìnné je jednodu- ena parametrem discont=true. P i pou ití tohoto parametru program nejprve urèí bod nespojitosti adané funkce a poté rodìlí horiontální osu na interval, na kter ch je tato funkce spojitá, tak e nedojde ke spojení tìch bodù PC-grafu, které spojen b t nemìl. V nìkter ch p ípadech je vhodnìj í neobraovat funkci ve tvaru eplicitním, ale provést parametriaci funkce ( = ffi(u; v), = ψ(u; v), = χ(u; v), kde u a v jsou parametr). V hodné je to ejména u funkcí, které vkaují st edovou nebo osovou smetrii. P íklad.. Vtvo te PC-graf funkce f(; ) = + 9 : Definièním oborem funkce f je mno ina R f[; ] : + =9g, ted rovina kromì bodù le ících na kru nici se st edem v bodì [; ] a polomìrem r =. V tìchto bodech není funkce spojitá. Pokud se pokusíme vtvo it PC-graf funkce jednoduch m p íkaem: > f:=/(^+^-9); f := + 9 > plotd(f, =-5..5, =-5..5); dostáváme obr..7. Zmìna hustot ulov ch bodù a omeení rosahu obraovan ch hodnot v tomto p ípadì nepomáhá (obr..8): > plotd(f, =-5..5, =-5..5, view=-5..5, grid=[,]); obr..7 obr..8 Proveïme nní parametriaci = u cos v, = u sin v, = u 9 a generujme PC-graf této funkce: > plotd([u*cos(v), u*sin(v), subs( =u*cos(v), =u*sin(v)}, f)], > v=..*pi, u=..6, view=-5..5):
Pojem funkce více promìnn ch 8 obr..9 V imnìme si rodílu mei PC-grafem funkce f (dané eplicitnì, obr..7 a.8) a PCgrafem té e funkce dané parametrick (obr..9) (graf b mìl b t v obou p ípadech stejn ). Proto e ískan PC-graf stále neodpovídá grafu funkce, rodìlíme tvorbu PC-grafu opìt do dvou èástí, p ièem parametr u bude postupnì nab vat hodnot intervalù h; :999i a h:; 6i: > s:=plotd([u*cos(v), u*sin(v), subs( =u*cos(v), =u*sin(v)}, f)], > v=..*pi, u=...999): > s:=plotd([u*cos(v), u*sin(v), subs( =u*cos(v), =u*sin(v)}, f)], > v=..*pi, u=...6): > displad( s,s}, view=-8..8); > displad( s,s}, view=-8..8, orientation=[,]); Z dùvodu náornosti je funkce obraena e dvou rùn ch pohledù (obr.. a obr..). obr.. obr.. V imnìme si nní je tì nìkter ch parametrù p íkau plotd, kter mi mù eme ovlivnit vhled v sledného PC-grafu. Doposud jsem generovali PC-graf v d nad ètvercovou nebo obdélníkovou oblastí. Ale rosah druhého parametru mù e b t udán v ávislosti na prvním. Nap íklad p i generování PC-grafu povrchu polokoule nad ètvercov m oborem: > plotd(sqrt(-^-^), =-.., =-.., scaling=constrained); dostáváme PC-graf na obráku.. Získan PC-graf neodpovídá na okrajích oblasti grafu funkce ( ubaté okrajeß jsou opìt pùsoben spojováním funkèních hodnot v ulov ch bodech).
Pojem funkce více promìnn ch 9 P i pou ití kruhové oblasti: > plotd(sqrt(-^-^), =-.., =-sqrt(-^)..sqrt(-^), > scaling=constrained); (tj. promìnného rosahu na ose ) dostáváme PC-graf odpovídající grafu funkce (obr..). obr.. obr.. Rosah obraovan ch hodnot ve smìru os mìníme parametrem view=[min..ma]. Pokud tento parametr neadáme, volí Maple rosah obraovan ch hodnot sám, co opìt mù e vést k avádìjícím v sledkùm (vi. také komentá k p íkladu.). Porovnejme následující dva PC-graf (obr.. a obr..5), generované p íka: > plotd(/(^+^), =-.., =-.., aes=boed, color=black, > labels=[,,]); > plotd(/(^+^), =-.., =-.., view=..6, stle=patch, > aes=boed, labels=[,,]); 7e+ 6 6e+ 5 5e+ e+ e+ e+ e+ - - - - -.5 -.5 -.5 -.5.5.5.5.5 obr.. obr..5 Pro koumanou funkci je lim (;)!(;)=( + )=+, rosah obraovan ch hodnot a mì ítka naosách v prvním p ípadì Maple volil sám (+ aproimoval hodnotou 7 ). V sledn PC-graf (obr..) pak neodpovídá grafu funkce. Obor obraovan ch hodnot ted omeíme parametrem view=..6 na interval h; 6i, ískan PC-graf je náornìn na obr..5.
Pojem funkce více promìnn ch.. Vrstevnice Pro vtvo ení p edstav o tvaru a prùbìhu náoròované ploch nám èasto pomáhají vrstevnice grafu funkce a e rovinami =, =, =, p íp. rovinami s nimi rovnobì n mi. Maple nám tak mù e pomoci p i vsvìtlování geometrického v namu pojmu vrstevnice funkce a p i jejich náoròování. Uka me si nní konstrukci vrstevnice funkce f(; ) = + na hladinì c = 6. Nejd íve generujme PC-graf funkce f a onaème jej P (obr..6). Poté vtvo me PC-graf rovin = 6, onaèíme jej P, a interpretujme funkci i rovinu v jednom PC-grafu (obr..7): 8 8 6 6 - - - - - - - - obr..6 obr..7 > with(plots): > f := (,) -> ^+^: > P := plotd(f(,), =.., = -sqrt(9-^)..sqrt(9-^), aes=framed, > tickmarks=[7,7,5], orientation=[5,6], labels=[,,]): "; > P := plotd(6, =.., =.., stle = patchnogrid): > displad( P,P}, aes=framed,tickmarks = [7,7,5],orientation=[5,6], > labels=[,,]); K ivka, vniklá jako prùseènice grafu funkce f a rovin = 6 je dána parametrick rovnicemi = p 6 cos t, = p 6 sin t, =6 a p edstavuje vrstevnici funkce f na hladinì c = 6. Znáornìní vrstevnice v rovinì ískáme prùmìtem do rovin. Situaci náoròují následující dva obrák (obr..8, obr..9). Pro vkreslení prostorové k ivk jsme pou ili procedur spacecurve knihovn plots: > P := spacecurve([sqrt(6)*cos(t), sqrt(6)*sin(t),6],t=..*pi, > color=black, thickness=): > P := spacecurve([sqrt(6)*cos(t), sqrt(6)*sin(t),],t=..*pi, > color=red, thickness=): > displad( P,P,P},tickmarks=[7,7,5],orientation = [,], > aes=boed, labels=[,,]); > displad( P,P,P,P},tickmarks=[7,7,5],orientation =[,], > aes=boed, labels=[,,]);
Pojem funkce více promìnn ch 8 8 6 6 - - - - - - - - obr..8 obr..9 Podobn m pùsobem mù eme náornit i e rovinami rovnobì n mi s rovinami a. Nap. obrame prùnik rovin = a grafu funkce f. Jako prùseènici ískáme k ivku, kterou mù eme popsat parametrick rovnicemi =; = t; = f(;t)=+t : Graf funkce, rovinu i jejich prùseènici interpretujme v jednom PC-grafu (obr..): > P := plotd(f(,),=..,=..): > P := implicitplotd(=,=..,=..,=..,stle=patchnogrid): > P := spacecurve([,t,j(,t)],t=..,thickness=,color=black): > displad( P,P,P},tickmarks=[7,7,5],aes=framed, > orientation=[,], labels=[,,]); 5 5 - - - - obr.. Pro p ímé náoròování vrstevnic pou íváme p íka contourplot (obr..): > plots[contourplot](f(,), =.., =-sqrt(9-^)..sqrt(9-^), > aes=boed, color=black, contours=, numpoints=5, > scaling=constrained, tickmarks=[7,7,]);
Pojem funkce více promìnn ch - - - - obr.. Parametr stle=patchcontour p íkau plotd slou í k obraení grafu funkce s vrstevnicemi (obr..) a pro obraení vrstevnice na dané hladinì mù eme pou ít p íkau levelcurve knihovn mvcalp (obr..): > plotd(f(,), =.., =-sqrt(9-^)..sqrt(9-^), stle=patchcontour, > aes=boed, orientation=[,], tickmarks=[7,7,5], labels=[,,]); > with(mvcalp): > levelcurve(f(,),6, =.., =.., color=black, scaling=constrained, > tickmarks=[7,7]); 8 6 - - - - - - - - obr.. obr.. Proto e tvorba matematické grafik není èasto jednoduchou ále itostí a vhled v sledného PC-grafu mù eme ovlivòovat celou adou parametrù, uvádíme na ávìr této kapitol i struèn p ehled ákladních pou it ch p íkaù a jejich parametrù. Popis v ech p íkaù ètená najde buï v manuálech [], [] a [] nebo p ímo v sstému nápovìd programu Maple V.
Pojem funkce více promìnn ch P ehled pou it ch p íkaù Generování PC-grafu funkce dvou promìnn ch: plotd(f(,),=a..b,=c..d,volb); pro v ra a plotd(f,a..b,c..d,volb); pro funkce. Volitelné parametr volb ovlivòují vhled v sledného PC-grafu. Nejèastìji pou ívané parametr jsou popsán v následující tabulce: Volba scaling = UNCONSTRAINED CONSTRAINED view = min..ma orientation = [theta,phi] stle = POINT HIDDEN PATCH WIREFRAME CONTOUR PATCHCONTOUR PATCHNOGRID LINE aes = BOXED NORMAL FRAME NONE grid = [m,n] numpoints = n labels = [,,] tickmarks = [n,m,p] Efekt p íkau plotd(..., volb); mì ítka na osách volba rosahu obraovan ch hodnot úhel pohledu pùsob vkreslení grafu náornìní os regulace hustot sítì alternativní adání poètu bodù sítì popis os poèet naèek na osách Generování PC-grafu funkce dvou promìnn ch dané parametrick: plotd([f(s,t), g(s,t), h(s,t)], s=a..b, t=c..d, volb); (obr..). K ro í ení mo ností práce s grafikou slou í knihovna plots. Procedur této knihovn p ístupníme p íkaem with(plots): Vkreslení prostorové k ivk: plots[spacecurve]([f(t), g(t), h(t)], t=a..b, volb); (obr..8 a.9). Znáornìní vrstevnic: plots[contourplot](f(,), =a..b, =c..d, volb); (obr..). Znáornìní vrstevnice na dané hladinì: mvcalp[levelcurve](f(,), hladina, =a..b, =c..d, volb); (obr..). plots[implicitplotd](epr, =a..b,=c..d,=p..q, volb); (obr.. a vi. také Kapitola 7);