INFORMATIKA V ky osob v z stupu REDAKCE Dnes p in me lohu, kter nen n ro n po str nce program torsk techniky, ale kde m e b t pro za naj c program tory probl mem nalezen vhodn ho algoritmu. N lid r zn ch v ek stoj v z stupu. Ka d lov k v, kolik je p ed n m lid, kte jsou v t ne on. Tyto informace od za tku z stupu k jeho konci tvo posloupnost A. Napi te program, kter pracuje takto: Na kl vesnici se zadaj sla N (po et lid v z stupu, tj. po et len posloupnosti A) a leny posloupnosti A. Program vyp e po ad ka d mu lov ku v z stupu (v po ad od prvn ho do posledn ho) jeho relativn v ku pomoc po adov ch sel 1 (nejmen lov k) a N (nejvy lov k). Uk eme si ty i studentsk e en, v nich jsme stejn programov prvky sjednotili. program VyskyA var A: array [1..99] of Integer N,I,J,K: Integer Write('Vysky pocet lidi: ') ReadLn(N) for I:=1 to N do ReadLn(A[I]) for J:=N downto 1 do I:=N 236 Matematika - fyzika - informatika 18 2008/2009
while A[I]<>0 do Dec(I) WriteLn('V[',I,']=',J) for K:=N downto I do Dec(A[K]) end ReadLn end. e itel A vyu v toho, e nejvy m lov kem v z stupu je ten, u kter ho p i zp tn m postupu od konce posloupnosti poprv naraz me na nulov len posloupnosti A. Kdy ho nalezneme, p i ad me mu relativn v ku N a pak zmen me o 1 v echny leny posloupnosti A od tohoto prvku a do konce posloupnosti. Dos hneme t m toho, e ohodnocen len z stupu u z dal ho vy et ov n vypadne (jeho len posloupnosti A je roven 1) a e se situace opakuje { nov nejvy lov k (o relativn v ce N 1) je op t ten, u kter ho p i zp tn m postupu od konce posloupnosti poprv naraz me na nulov len posloupnosti A. Toto e en je p kn, ale jeho z vadou je to, e nen spln na podm nka spr vn ho po ad v pisu. Uvedenou vadu bychom ale mohli snadno odstranit pou it m pomocn ho pole V, do kter ho bychom si nalezen relativn v ky jednotliv ch lid pr b n ukl dali. Nam sto p kazu WriteLn bychom v cyklu prov d li p kaz V[I]:=J a po zapln n cel ho pole V bychom jednodu e vypsali jeho obsah v po ad od hodnoty V[1] do V[N]. program VyskyB var A,V: array [1..99] of Integer N,I,K: Integer Write('Vysky pocet lidi: ') ReadLn(N) for I:=1 to N do ReadLn(A[I]) V[1]:=0 for K:=2 to N do for I:=1 to K-1 do if V[I]>=K-1-A[K] then Inc(V[I]) V[K]:=K-1-A[K] Matematika - fyzika - informatika 18 2008/2009 237
end for I:=1 to N do WriteLn('V[',I,']=',V[I]+1) ReadLn end. e itel B vytvo il algoritmus my lenkov n ro n j a posloupnost v - ek vytv odp edu v poli V postupn m vyhodnocov n m vztahu mezi hodnotou lenu posloupnosti A a jeho indexem. Hodnoty ulo en v poli Vud vaj po ka d m pr chodu hlavn ho cyklu programu vz jemn po ad v ek t ch lid, kte se nach zej v po te n m seku z stupu d lky K. Pro v t n zornost v m doporu ujeme prov st na jednoduch m p kladu simulaci tohoto postupu. program VyskyC var A,X: array [1..99] of Integer N,I,K,S: Integer Write('Vysky pocet lidi: ') ReadLn(N) for I:=1 to N do ReadLn(A[I]) X[I]:=1 end for K:=N downto 1 do S := 0 I := 0 repeat Inc(I) S := S+X[I] until S >= A[K]+1 A[K] := N+1-I X[I] := 0 end for I:=1 to N do WriteLn('A[',I,']=',A[I]) ReadLn end. 238 Matematika - fyzika - informatika 18 2008/2009
e itel C vych z z toho, e relativn v ku posledn ho lov ka v z stupu lze ur it zcela jednodu e { je-li posledn len posloupnosti A roven nap. 5, znamen to, e vp edu je 5 osob vy ch, tak e posledn lov k v z stupu je podle v ky est. e itel v programu zavedl pomocn pole X pou it ch relativn ch v ek { jedni ka v n m zna, e dan relativn v ka je t nebyla pou ita, nula ozna uje, e u pou ita byla. Pak od konce posloupnosti A vyhodnocuje jej jednotliv leny, pomoc pole X jim p i azuje relativn v ku v z stupu a tu ukl d odzadu p mo do pole A. program VyskyD var A,V: array [1..99] of Integer N,I,K: Integer Write('Vysky pocet lidi: ') ReadLn(N) for I:=1 to N do ReadLn(A[I]) for K:=N downto 1 do I := N+1 repeat Dec(I) Dec(A[I]) until A[I]=-1 V[I] := K end for I:=1 to N do WriteLn('V[',I,']=',V[I]) ReadLn end. e itel D pou il pln stejnou my lenku jako e itel A, ale zvolil jin zp sob jej ho naprogramov n. Nav c pou il pomocn pole V, o kter m jsme se zm nili v z v ru koment e k e en A. D ky n mu vypisuje v sledky v po adovan m po ad. V echna ty i studentsk e en lohy jsouv cn spr vn, maj podobnou asovou i pam ovou n ro nost a m eme je proto hodnotit jako stejn dobr. (Autorkou vodn ilustrace je Mgr. Jaroslava erm kov z Hlinska v ech ch.) Matematika - fyzika - informatika 18 2008/2009 239
e en rovnic v Excelu V CLAV MATY Purky ovo gymn zium, Str nice Zobrazov n funkc, o n m jsme pojedn vali v [1], [2] je mo no jednoduch m zp sobem p stupn m i st edo kolsk m student m vyu t p i grack m a p i numerick m e en rovnic. V hodin ch matematiky se prob raj vybran typy rovnic, kter lze e it analyticky, ale je docela vhodn podpo it a doplnit tuto v uku i vyu it m Excelu, pokud ho ji studenti ovl daj. P klad 1. e te rovnici 2 x +3 x =3 2x: Prvn zp sob, kter d v velmi n zorn obr zky, spo v v tom, e zn zorn me do jednoho obr zku funkci f(x) =2 x +3 x (levou stranu rovnice) a funkci g(x) =3 2x (pravou stranu rovnice) a e en rovnice dostaneme jako x-ovou sou adnici pr se ku obou graf. Obr. 1 240 Matematika - fyzika - informatika 18 2008/2009
Postupem dle [1] ob funkce tabelujeme (zde je z tiskov ch d vod zvolen jen interval od 1 do 1) do C3 zad me =2^B3+3^B3, dod3 pak =3-2*B3. Z grafu vid me, e zadan rovnice m e en x 0 2 (0 1). Z tabulky zjist me, e f(0 2) <g(0 2) ale f(0 3) >g(0 3) tedy bod x 0, v n m se ob funkce rovnaj, le n kde mezi 0,2 a 0,3, tj. x 0 2 (0 2 0 3). Chceme-li tuto hodnotu up esnit, p ejdeme na jednoduch numerick e en. K tomu si tabelujeme ob funkce na intervalu (0,2 0,3), viz obr. 2. Obr. 2 Zjist me, e f(0 24) <g(0 24) ale f(0 25) >g(0 25) tak e x 0 2 (0 24 0 25). Nyn tabelujeme tento interval a zjist me, e f(0 248) <g(0 248) ale f(0 249) >g(0 249) Matematika - fyzika - informatika 18 2008/2009 241
tak e x 0 2 (0 248 0 249). Pokra ujeme a d le tabelujeme tento interval anajdeme f(0 2487) <g(0 2487) ale f(0 2488) >g(0 2488) tak e x 0 2 (0 2487 0 2488). V dal m kroku m me f(0 24876) <g(0 24876) ale f(0 24877) >g(0 24877) tak e x 0 2 (0 24876 0 24877). Tak m eme pokra ovat, pokud sta p esnost Excelu. Samoz ejm p itom mus me podle pot ebn ho po tu desetinn ch m st roz i ovat sloupce. Druh zp sob e en takov rovnice je zalo en na tom, e rovnici anulujeme a porovn v me z skanou levou stranu, tj. funkci y = f(x) =2 x + +3 x +2x 3anulu do C3 tedy zad me =2^B3+3^B3+2*B3-3. Hled me pak bod, kde graf t to funkce prot n osu x. Kontrola spr vnosti je pro n s trochu obt n j, proto e se nejedn o n jakou zn mou funkci, viz obr. 3. Obr. 3 242 Matematika - fyzika - informatika 18 2008/2009
Na druh stran je pro n s jednodu orientace v tabulce, proto e hled me v dy jen p echod mezi z porn mi a kladn mi hodnotami funkce f, viz t obr. 4. Obr. 4 P klad 2. e en goniometrick rovnice tg 2 x +2tgx 3=0 viz [3], nen p i v uce matematiky probl mem. Provede se substituce tg x = z, najdouseko eny vznikl kvadratick rovnice z 2 +2z 3=0, z 1 =1,z 2 = 3, tak e x 1 = 4 + k (= 45 + k 180 ) x 2 : = 1 249 + k( : = 72 + k 180 ) k 2 Z: Matematika - fyzika - informatika 18 2008/2009 243
Zobrazme si nyn v Excelu funkci y =tg 2 x+2tg x3 (obr. 5). P i tabelaci t to funkce vlo me do bu ky C3 v raz =(TG(B3*PI()/180)^2+2*TG(B3* PI()/180)-3 adod3v raz=b3*pi()/180. Funkce tangens m v Excelu argument vobloukov m e pomoc slo en funkce jsme pro v t n zornost zadali argument v m e stup ov, ale sloupec x rad n m umo uje, abychom e en rovnice dost vali v m e obloukov. Z grafu vid me, e zadan funkce je z ejm periodick s periodou 180 (), v intervalu (0 )jsoudv e en x 1 a x 2, a jist dovedeme z obr zku odhadnout, e jsou to pr v e en vypo ten v e. Numerick nalezen hodnot x 1 a x 2 se prov d stejn jako v p kladu 1. Obr. 5 Zadan rovnice lze r zn obm ovat, p i em algoritmus e en se podstatn nem n. Tak lze pozm nit nap. zad n z p kladu 2. P klad 3. e en goniometrick rovnice tg 2 x +2tgx x =0: 244 Matematika - fyzika - informatika 18 2008/2009
S touto rovnic si u kolsk matematika neporad. Pou ijeme-li Excel, pak op t zobraz me funkci na lev stran rovnice (obr. 6). P itom do C3 d me =(TG(B3*PI()/180)^2+2*TG(B3*PI()/180)-B3*PI()/180. (1) Obr. 6 Obr zek 6 n m umo uje z kladn orientaci, nap. e tu ji nen periodi nost, e jeden ko en rovnice je z porn, ko enem je i 0 a pak n sleduje z ejm nekone n mnoho ko en kladn ch, pro jejich z pis nem me n jak elegantn zp sob. Z nezkr cen tabulky, je byla pou ita pro vykreslen grafu, lze zjistit prvn odhady p ibli n hodnoty prvn ch p ti ko en : x 1 2 (0 96 0 87) tj. (55 50 ) x 2 =0 tj. 0 x 3 2 (1 92 2 01) tj. (110 115 ) x 4 2 (4 00 4 16) tj. (230 235 ) x 5 2 (4 97 5 06) tj. (285 290 ): Matematika - fyzika - informatika 18 2008/2009 245
Obr. 7 Cht jme nyn naj t p esn j hodnotu z porn ho ko ene. M eme postupovat jako v p kladu 1, ale cel postup lze racionalizovat. P i v po techvedouc ch k obr. 2 n m lo o n zorn p edveden principu zji ov n dal ch desetinn ch m st. Nyn v ak lze uva ovat takto: Z hlav ponech me jako v obr. 6 a budeme pracovat jen v t chto t ech sloupc ch. Je to x 1 2 (55 50 ), vlo me do bu ky B3 hodnotu 55, do B4 p kaz =B3+0,1, do C3 op t (1) a do D3 op t p epo t n x na obloukovou m ru =B3*PI()/180. Nyn B4 kop rujeme dol, ale jen do chv le, a se hodnoty ve sloupci C zm n z kladn ch na z pornou. Vid me, e se to stane na intervalu (52 4, 52 3 ). Do n sleduj c bu ky B31 vlo me prvn z t chto hodnot 52 4, do B32 pak =B31+0,01 akop rujeme B32 op t tak dlouho, dokud hodnoty ve sloupci C se z kladn ch ne- 2 (52 32 52 31 ). V dal m zm n na z pornou tak dost v me x 1 kroku budeme od 1. hodnoty 52,32 postupovat po tis cin ch, tj. do B42 d me =B41+0,001, v B45 pak bude =B41+ 0,0001 a v B48 podobn =B41+0,00001. Nakonec tak dostaneme x 1 2 (52 31883 52 31882 ), : tj. x 1 = 52 19 0 8 00 a v obloukov m e je to zaokrouhlen 0 913136. Literatura [1] Maty,V.: Graf funkce s parametry v Excelu. MFI, r.17 (2007/08),. 2, str. 106{ 113. [2] Maty, V.: Graf nespojit funkce s parametry v Excelu. MFI, r. 17,. 8, str. 499{ 503. [3] Odv rko, O.: Matematika pro gymn zia. Goniometrie. Prometheus, Praha 1997. 246 Matematika - fyzika - informatika 18 2008/2009