Testování hodnot logaritmů

Následující aplet umožňuje rychle testovat znalost hodnot logaritmů. Základ logaritmu, není-li vybráno jinak (viz dále), je generován náhodně. Argument je generován náhodně vždy, ale tak, aby hodnoty logaritmů vycházely "pěkně".

Logaritmus je možné vybrat z roletky, v níž jsou tyto možnosti výběru: (Subscript[log, 2]) (x), log (x), ln (x) a vše. Je-li vybrán logaritmus s konkrétním základem (tj. se základem 2, 10 nebo e), je náhodně vygenerován argument logaritmu. Argument je určen tak, že je příslušný základ umocněn na náhodně vybraný exponent ze seznamu exponentů. Je-li vybrán logaritmus s obecným základem, generuje se základ tak, že se náhodně vybraný základ z množiny přípustných základů umocní na náhodně vybraný exponent. Argument logaritmu se vybere tak, že se již vygenerovaný základ opět umocní na náhodně vybraný exponent.

Čas na úlohu lze nastavit kdykoliv během běhu apletu, ale projeví se až při generování další úlohy. Po uplynutí tohoto času, který je zadán v sekundách, se zobrazí na 5 sekund řešení úlohy.

Tlačítkem Spustit se spustí náhodné generování úloh.
Tlačítkem Zastavit lze v kterékoliv fázi výpočtu jeho běh zastavit (bílé okno, ve kterém se úlohy zobrazují, se smaže).
Tlačítkem Ulož obrázek se uloží právě zobrazený pracovní prostor (tj. bílý obdélník) do aktuální složky (složka, v níž je uložen tento notebook) pod jménem, které je uloženo v proměnné jmenosouboru. K tomuto jménu souboru je při opakovaném ukládání grafu přidáváno pořadové číslo. Soubor je uložen ve formátu *.JPG.
Pozor! Při každém spuštění tohoto apletu se začínají soubory číslovat opět od jedné! Tak může dojít k přepsání minule uložených obrázků.

© Jaroslav Reichl, 2008

Příprava pro vykreslení grafu

ClearAll["Global`*"];
jmenosouboru="fce_logaritmicka_vypocet_.jpg";
cesta=NotebookDirectory[];
pocetulozeni=0;

x1=-10;x2=10;
y1=0;y2=10;
t0=5;tmin=5;tmax=60;deltat=5;
casnareseni=5;
stredx=((x1+x2)/2);stredy=((y1+y2)/2);

seznamfci={"(Subscript[log, 2]) (x)","log (x)","ln (x)","vše"};
defaultnifce=seznamfci[[4]];
minulavybranafce="";

pocetkroku=0;
dalsipriklad=False;
poprve=True;
okzadani=False;

vyberzakladu={2,2,2,2,3,3,3,4,4,5,5,10,10,10,10,E,E};
vyberexponentu={-4,-3,-3,-3,-2,-2,-2,-1,-1,-1,((-1)/2),((-1)/2),((-1)/2),((-1)/3),((-1)/3),((-1)/3),0,(1/3),(1/3),(1/3),(1/2),(1/2),(1/2),1,2,2,2,3,3};
(*Opakování hodnot ve výše uvedených seznamech ovlivňuje pouze pravděpodobnost výběru té které hodnoty.*)

barva=Black;
barvareseni=Magenta;
barvavarovani=Red;

TestovaniLogaritmu=Manipulate[
If[dalsipriklad,
{dalsipriklad=False,
casnaulohu=zadanycas,
okzadani=True},
""];
If[okzadani,
{If[minulavybranafce≠vybranafce,
{minulavybranafce=vybranafce,
caszacatku=AbsoluteTime[],
If[vybranafce==seznamfci[[1]],
{zaklad=2,
argument=(zaklad^(RandomChoice[vyberexponentu])),
nazevfce="(Subscript[log, 2])"},
If[vybranafce==seznamfci[[2]],
{zaklad=10,
argument=(zaklad^(RandomChoice[vyberexponentu])),
nazevfce="log"},
If[vybranafce==seznamfci[[3]],
{zaklad=E,
argument=(zaklad^(RandomChoice[vyberexponentu])),
nazevfce="ln"},
If[vybranafce==seznamfci[[4]],
{zaklad=((RandomChoice[vyberzakladu])^(RandomChoice[vyberexponentu])),
argument=(zaklad^(RandomChoice[vyberexponentu])),
If[zaklad==10,
nazevfce="log",
If[zaklad==E,
nazevfce="ln",
nazevfce=ToString[Subscript["log",ToString[zaklad,TraditionalForm]],TraditionalForm]]]}
]]]]},
""],
If[caszacatku+casnaulohu+casnareseni-0.5≤Refresh[AbsoluteTime[],UpdateInterval->0.1],
{dalsipriklad=True,
minulavybranafce=""},
""]},
""];

grafik=Deploy[
Show[
Graphics[{
If[okzadani&&poprve==False,
{Text[Style[StringJoin[nazevfce," ( ",ToString[argument,TraditionalForm]," ) = ?"],40,barva,FontFamily->Times],{x1,y2},{Left,Top}],
If[caszacatku+casnaulohu-0.5≤AbsoluteTime[],
{Text[Style[StringJoin["Další úloha za: ",ToString[Round[caszacatku+casnaulohu+casnareseni-AbsoluteTime[]]]," s"],15,barva,FontFamily->Times],{x1,y1},{Left,Bottom}],
If[NumberQ[Quiet[Log[zaklad,argument]]],
Text[Style[StringJoin[nazevfce," ( ",ToString[argument,TraditionalForm]," ) = ",ToString[Log[zaklad,argument],TraditionalForm]],40,barvareseni,FontFamily->Times],{x1,stredy},{Left,Top}],
If[zaklad≠1,
Text[Style[StringJoin[nazevfce," ( ",ToString[argument,TraditionalForm]," ) = ",ToString[Round[1.Log[zaklad,argument],0.001],TraditionalForm]],40,barvareseni,FontFamily->Times],{x1,stredy},{Left,Top}],
Text[Style["N E N Í   D E F I N O V Á N O!",25,barvavarovani,FontFamily->Times,Bold],{stredx,stredy},{Center,Center}]]]},
Text[Style[StringJoin["Na řešení zbývá: ",ToString[Round[caszacatku+casnaulohu-AbsoluteTime[]]]," s"],15,barva,FontFamily->Times],{x1,y1},{Left,Bottom}]]},
If[poprve==False,
Text[Style["N E N Í   Z A D Á N A   Č Í S E L N Á   H O D N O T A",17,barvavarovani,FontFamily->Times,Bold],{stredx,stredy},{Center,Center}],
Text[Style["Úlohy se začnou generovat stiskem tlačítka 'Spustit'.",17,barvavarovani,FontFamily->Times,Bold],{stredx,stredy},{Center,Center}]]]
}],
FormatType->StandardForm,
AspectRatio->Automatic,PlotRange->{{x1,x2},{y1,y2}},ImageSize->500
]],

{{zadanycas,t0,Style["čas na úlohu",15,barva,FontFamily->Times]},tmin,tmax,deltat,Appearance->"Labeled"},
Delimiter,
{{vybranafce,defaultnifce,Style["logaritmus",15,barva,FontFamily->Times]},seznamfci,ControlType->PopupMenu},
Delimiter,
Button[" Spustit ",{
poprve=False,
dalsipriklad=True,
caszacatku=AbsoluteTime[],
minulavybranafce=""},ImageSize->{100,Automatic}],
Button[" Zastavit ",{
poprve=True,
dalsipriklad=False},ImageSize->{100,Automatic}],
Delimiter,
Button[" Ulož obrázek ",{pocetulozeni=pocetulozeni+1,Export[StringInsert[StringJoin[cesta,jmenosouboru],ToString[pocetulozeni],-5],grafik]},ImageSize->{100,Automatic}],
ControlPlacement->Left,
FrameLabel->{Style["© Jaroslav Reichl, 2009",10,Black,FontFamily->Times],"",Style["Testování hodnot logaritmů",25,Black,FontFamily->Times],""}];

Spuštění výpočtu
Zpracujte běžným způsobem následující buňku a na dotaz, který se objeví, odpovězte ANO.

TestovaniLogaritmu