INFORMATIKA Pascal v trojhelnk
;
REDAKCE
1
1
1 6
1 5
1 4 15
1
3 10
1
2 6 20
Sestaven Pascalova trojheln ku pat mezi vdn lohy v poten fzi vuky programovn . kolem je sestavit (tj. vytisknout) tento trojheln k pro zadan pirozen slo N . Nap. pro N = 6 dostaneme:
1 3 10
1 4 15
1 5
1 6
1
1
Pi een tto lohy samozejm nejde o trojheln kov tvar vsledku, ale o vpoet sel v jednotlivch ; dc ; ch. ; V n-tm ; dku (po naje nultm) tato sla jsou, jak v me, n0 n1 n2 : : : nn . Dle si ukeme p stup k een zadan lohy u t stedokolskch student. Prvn ; z nich vyel prv z t skutenosti, e sta po tat kombinan sla nk . Pouil promnn typu Real a a pi tisku se vrtil do celo selnho typu Longint. Pro vpoet kombinan ho sla denoval funkci KombC. Matematika - fyzika - informatika 17 2007/2008
493
Zadv se N jako poet dk (program funguje pro N od 1 do 34, tedy maximln Pascalv trojheln k m 34 dk a je vytvoen pro n od 0 do 33 na dal dek u rozsah datovho typu Longint nesta ). Poznamenejme jet, e by bylo vhodnj vbec nevnet do een tohoto ryze celo selnho problmu datov typ Real a provdt cel vpoet p mo v promnnch typu Longint, by v takovm p pad vzhledem ke st daj c mu se nsoben a dlen promnn KC meme program pou t pouze do hodnoty N = 30. Za poznmku dle stoj , e promnn Q1, podm nka Q2 < Q1 i vtev else uveden uvnit for-cyklu jsou naprosto zbyten. program PasTrojA var I, J, N: Integer function KombC(N, K: Integer): Real var M: Integer Q1, Q2, KC: Real begin Q1 := N - K Q2 := 0 if N > K then begin KC := 1 for M := K + 1 to N do if Q2 < Q1 then begin Q2 := Q2 + 1 KC := KC * M / Q2 end else KC := KC * M KombC := KC end else KombC := 1 end
494
Matematika - fyzika - informatika 17 2007/2008
begin Write('Pascaluv trojuhelnik pocet radku: ') ReadLn(N) for I := 0 to N - 1 do begin for J := 0 to I do Write(Trunc(KombC(I, J)), ' ') WriteLn end ReadLn end.
;
;
n Druh eitel vyuil znm vlastnosti kombinan ch sel: nk + k+1 = = k+1 a tvoil nsleduj c dek se tn m dvojic prvk v dku pedchoz m. Pitom ve dvourozmrnm poli A uchovv vechny vypoten hodnoty a nakonec toto pole A vytiskne. Toto een je vcelku elegantn a vrazn rychlej ne pedchoz , vytknout bychom mu mohli zbyten velk pamov nroky a tak zbyten nulovn vech prvk pole A na zatku vpotu.
;n+1
program PasTrojB var I, J, N: Integer A: array 0..40, 0..40] of Longint begin Write('Pascaluv trojuhelnik pocet radku: ') ReadLn(N) for I := 0 to N do for J := 0 to N do AI, J] := 0 A0,0] := 1 for I := 1 to N do for J := 1 to I do AI, J] := AI - 1, J - 1] + AI - 1, J] for I := 1 to N do begin
Matematika - fyzika - informatika 17 2007/2008
495
for J := 1 to I do Write(AI, J], ' ') WriteLn end ReadLn end.
;
Tet eitel pibral do een soumrnost Pascalova trojheln ku: nk = n;k Narozd l od pedchoz ho een pracuje jen se dvma dky (jednorozmrnmi poli) StaryR a NovyR a daje nachzej c se v NovyR se ihned tisknou, piem druh polovina dku se tiskne v opanm poad vzhledem k 1. polovin. Mus se ovem rozliovat, jestli je v dku sud nebo lich poet sel. Po tisku pesune program pole NovyR do pole StaryR a provd se vpoet prvn poloviny novho dku tou metodou jako u pedchoz ho programu. ; = n .
program PasTrojC var I, J, K, N: Integer StaryR, NovyR: array 0..40] of Longint SudyPocet: Boolean begin Write('Pascaluv trojuhelnik pocet radku: ') ReadLn(N) for I := 0 to N do NovyRI] := 0 K := 1 SudyPocet := false NovyR1] := 1 for I := 1 to N do begin for J := 1 to K do Write(NovyRJ], ' ') for J := K + Ord(SudyPocet) - 1 downto 1 do Write(NovyRJ], ' ') WriteLn if SudyPocet then
496
Matematika - fyzika - informatika 17 2007/2008
K := K + 1 SudyPocet := not SudyPocet StaryR := NovyR for J := 1 to K do NovyRJ] := StaryRJ - 1] + StaryRJ] if not SudyPocet then NovyRJ] := NovyRJ] + StaryRJ - 1] end ReadLn end.
V nsleduj c m redakn m een je za N volen nikoli poet dk, ale n posledn ho dku, co je pirozenj , a volba je pojitna, aby nedolo k zadn N mimo p pustn rozsah (pedchoz programy v tomto p pad
tak i onak havaruj ). Vpoet dk se provd stejnou metodou jako v programu PasTrojB, ale s t m, e vypoten hodnoty se ihned tisknou (jako v programu PasTrojC). T m se vzhledem k programu PasTrojB velmi sn pamov nronost. Na rozd l od PasTrojC se vak po taj cel dky, protoe organizace zptnho tisku 2. poloviny dku a hl dn sudosti a lichosti potu len zbyten komplikuj program, ani by vznikla jakkoli zjistiteln spora. Pracuje se tak se dvma dky jako v programu PasTrojC, ale kad z tchto dk je st dav star a nov, take se uet pesouvn novho dku do starho. program PasTrojR const MaxN = 33 var I, J, K, N: Integer KC: array 0..1, 0..MaxN+1] of Longint begin Write('Pascaluv trojuhelnik repeat ReadLn(N) until N in 1..MaxN] for I := 0 to 1 do for J := 0 to N + 1 do
radek 0 az: ')
Matematika - fyzika - informatika 17 2007/2008
497
KCI, J] := 0 KC0,1] := 1 K := 0 for I := 1 to N + 1 do begin for J := 1 to I do begin KC1 - K, J] := KCK, J - 1] + KCK, J] Write(KC1 - K, J], ' ') end WriteLn K := 1 - K end ReadLn end.
Pedloen programy mohou bt vhodnm materilem pro posouzen jejich pednost a nedostatk. (Po strnce formln ho zpisu zdrojovho textu byly vak redakn upraveny, take pvodn formln nedostatky u zde vidt nejsou.) Vimnme si, e v programech PasTrojB a PasTrojC byl proveden jen hrub odhad rozsahu N (v PasTrojA provdn nebyl), e v programech pracuj c ch s celmi sly je tu asov sloitost O(N 2 ) a v PasTrojA je to O(N 3 ), vimnme si i pamov sloitosti, zvlt u PasTrojB. Studenti mohou eit i rzn pravy zadn , nap. poadavek tisku jen k posledn ch dk Pascalova trojheln ku nebo vpoet Pascalova trojheln ku i pro vt N , kde by se m sto len pesahuj c ch formt Longint tiskly nap. hvzdiky. (Autorkou ilustrace je Mgr. Jaroslava ermkov z Hlinska v echch.)
498
Matematika - fyzika - informatika 17 2007/2008
Graf nespojit funkce s parametry v Excelu V CLAV MATY
Purkyovo gymnzium, Strnice
V lnku #1] jsme probrali pouit posuvn k pi zobrazovn funkc s parametry. Nyn se pod vme na p pady tch nespojitch funkc , kter maj v nkterm bod nevlastn limitu nebo jednostrann nevlastn limity.
Funkce y = (x ;a b)2 + c Vid me, e tato funkce m bod nespojitosti b, nen v nm denovna a m v nm limitu +1 v p pad, e a > 0, a limitu ;1 v p pad, e a < 0. Excel nen nejvhodnj prostedek pro zobrazovn neomezench (a tedy i nespojitch) funkc . Jestlie toti vol me bodov graf a podtyp Bodov s datovmi body spojenmi pomoc hladkch spojnic a bez znaek, pak t m vlastn po Excelu poadujeme, aby vechny jemu pedkldan funkce povaoval za spojit. V p pad na funkce, pokud hodnota b nen v tabulce funkce, spoj Excel zadan tabulkov bod #x1 y1 ], kde x1 < b je hodnota nejbli k b zleva, s tabulkovm bodem #x2 y2 ], kde x2 > b je hodnota nejbli k b zprava, take graf je spojit. V tomto p pad je vhodn volit v obrzku rozsah funkn ch hodnot tak, aby uveden nepovolen spojen vylo mimo obrzek. Ovem vzhledem k tomu, e mme funkci s parametry, nepoda se to pro vechny kombinace hodnot parametru a mus me bt vi Excelu trochu tolerantn . Ke zlepen dojde, vol me-li tabulku nezvisle promnn
hust , protoe pak vyjdou body x1 a x2 velmi bl zko b a onen spojovac efekt se uke jen velmi vzcn. Jestlie se bod b vyskytuje v tabulce funkce jako jedna z hodnot nezvisle promnn, pak Excel hodnotu funkce samozejm nevypo t (nab dne nm zahrdky), ale graf vykresl tak, jako by hodnota funkce byla nula, tedy velmi radikln jej pozmn . I tento p pad vyaduje nai toleranci. Samozejm v jednotlivch p padech lze zsahem do tabulky obrzek vylepit, ale pracujeme-li s parametry, pak takov mimodn zsah do tabulky ji me pro dal prci znehodnotit. Matematika - fyzika - informatika 17 2007/2008
499
Postupem popsanm v #1] lze z skat graf na funkce, ale tento graf ns neuspokoj z toho dvodu, e pro vt nzornost prbhu funkce nm budou chybt asymptoty zde je horizontln asymptota y = c a vertikln asymptota x = b. Tyto asymptoty, protoe jde o p mky, lze z skat z dvouhodnotovch tabulek (viz obr. 1) a to tak, e v jednom obrzku zobraz me ti bodov ady: zadan funkce nm vytv adu 1 a asymptoty adu 2 a adu 3 (tak je tak zadvme). Pro nzornost je vhodn pro graf funkce volit ponkud tlust ru (poklepem levm tla tkem myi na ru grafu lze otev t okno, v nm lze volit tlouku i barvu grafu). Nzornost zv me, kdy pro asymptoty vol me jinou barvu.
; ; Obr. 1
Takto zpracovan graf lze pou t pi prob rn uiva v sti 5.5 #2] Racionln a polynomick funkce. +b Funkce y = ax cx + d Tato funkce nen denovna v bod ; dc a pokud itatel nen nsobkem jmenovatele, je p mka x = ; dc vertikln asymptotou grafu funkce. Jeto 500
Matematika - fyzika - informatika 17 2007/2008
+b a lim ax cx + d = c
x!1
je p mka y = ac horizontln asymptotou grafu tto funkce. Zadanou funkci uve%me jet na tvar, v nm lze nzornji rozpoznvat vlastnosti funkce. Upravujme:
ax + b = a x + dc + ab ; dc = a + 1 a bc ; ad = y + k (1) p cx + d c c x + dc c ac x ; xp x + dc kde jsme oznaili xp = ; dc , yp = ac , k = bc;c2ad . Z (1) je vidt, e grafem na funkce je hyperbola vznikl posunut m grafu funkce y = kx . Jestlie by tedy novou souadnicovou soustavu tvoily asymptoty zadan hyperboly, mla by nae hyperbola v tto soustav rovnici prv y = xk . Jet se zabvejme spojovac vlastnost Excelu u tto funkce. Pro k > 0 plat +b lim ax cx + d = ;1
x!xp;
+b lim ax cx + d = +1 :
x!xp+
To znamen, e posledn bod vlevo nahoe tabulky funkce, tj. bod #x1 y1], kde x1 < xp a je nejbl e k xp , se nm v grafu spoj s bodem #x2 y2], kde x2 je nejmen tabulkovou hodnotou nezvisle promnn x, pro ni x2 > xp spojovac arou je seka, kter jde velmi strm zleva shora vpravo dol. Je-li tabulka x dostaten hust, je strmost prakticky vertikln a my meme vyu t tuto seku nav c tak, e ji povaujeme za vertikln asymptotu. Na obr. 2 jsou vytvoeny ob asymptoty a protoe obrzek nen barevn, vid me, e nedovedeme odliit asymptotu od falenho grafu. Pi nep zniv volb konstant (obr. 3) vak me dopadnout obrzek katastrofln. Takto zpracovan graf lze pou t pi prob rn uiva v kapitole 5 #2] Linern lomen funkce. Matematika - fyzika - informatika 17 2007/2008
501
; ; ; ; Obr. 2
Obr. 3
Funkce y = a tg(bx + c) + d Je volen rozsah x od ;360 do 360 s krokem 5. P prava posuvn k prob h jako u pedchoz ch funkc , jen parametr c vol me ve vt m rozsahu (zde od ;90 do 90). Proto je vhodn pro tento parametr volit Formt ovldac ho prvku jemnji, nap. do 10 000. Pi zadvn vpotu hodnot funkce do tabulky mus me dt pozor na to, e Excel pracuje s goniometrickmi funkcemi v obloukov m e, take je teba pevst bx + c do obloukov m ry. Do bu&ky C3 tedy zadme: $F$2*TG((B3*$F$4+$F$6)*PI()/180)+$F$8 Spojen konc jednotlivch vtv opt vytv dojem asymptot (obr. 4). Graf funkce tangens vychz troch hrub, z toho dvodu jsme rozsah b omezili jen na interval ;2 2. Graf by bylo mono zjemnit t m, e bychom v tabulce volili krok 1, pak ovem rozsah tabulky velmi naroste a je uiten zde znt p kazy Ctrl Home, resp. Ctrl End (z klvesnice) pro posun kurzoru na jej zatek resp. konec. 502
Matematika - fyzika - informatika 17 2007/2008
; ; Obr. 4
Grafy goniometrickch funkc s parametry pipraven v Excelu lze vyu t pi prob rn uiva v sti 2.5 a 2.6 #3]. Literatura 1] Maty, V.: Graf funkce s parametry v Excelu, MFI, ro. 17 (2007/08), . 2, s. 106. 2] Odvrko, O.: Matematika pro gymnzia (Funkce). Prometheus, Praha 2002. 3] Odvrko, O.: Matematika pro gymnzia (Goniometrie). Prometheus, Praha 2002.
Matematika - fyzika - informatika 17 2007/2008
503