Předpis grafu lineární funkce

Tento notebook slouží k procvičení hledání přespisu lineární funkce na základě jejího grafu.
Parametry lineární funkce (tj. koeficienty a a b v předpisu funkce y = a x + b) je možné měnit stiskem tlačítka Další funkce, kterým se náhodně nageneruje jedna dvojice hodnot a a b.
Volitelně je možné zobrazit předpis zobrazené funkce.

Tlačítkem Ulož obrázek se uloží právě zobrazené "bílé" okno 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.
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, 2012

Příprava pro vykreslení grafu

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

x1=-5;x2=-x1;
y1=-5;y2=-y1;

tloustka=0.007;
velikostpisma=15;

barva=Black;
barvaa=Blue;
barvab=Magenta;
barvafce=Red;
barvamrizky=Gray;

mrizkax=Table[i,{i,x1,x2,1}];
mrizkay=Table[i,{i,y1,y2,1}];

xA=0;yA=0;
xB=1;yB=1;
LinearniFunkce=Manipulate[Deploy[
If[xA==xB,
{a=0,
b=yA},
{a=((yB-yA)/(xB-xA)),
b=yA-a xA}];
fce[x_]:=a x+b;
If[a≥0,
znamenkoa="",
znamenkoa="-"];
If[b≥0,
znamenkob=" + ",
znamenkob=" - "];
pispredpis=StringJoin[ToString[Style["y = ",barva],StandardForm],ToString[Style[znamenkoa,barvaa],StandardForm],ToString[Style[ToString[Abs[a],StandardForm],barvaa],StandardForm],ToString[Style["·x",barva],StandardForm],ToString[Style[znamenkob,barvab],StandardForm],ToString[Style[ToString[Abs[b],StandardForm],barvab],StandardForm]];

grafik=Show[
Plot[fce[x],{x,x1,x2},PlotStyle->{barvafce,Thickness[tloustka]},TicksStyle->Directive[barva,velikostpisma],GridLines->{mrizkax,mrizkay}, GridLinesStyle->Directive[barvamrizky,Thickness[0.2tloustka],Dashed]],
FormatType->StandardForm,AspectRatio->Automatic,AxesOrigin->{0,0},
AxesLabel->{Style["x",velikostpisma,barva],Style["y",velikostpisma,barva]},
PlotRange->{{x1,x2},{y1,y2}},
ImageSize->450
]],

Delimiter,
{{zobrazitpredpis,False,Style["zobrazit předpis",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Dynamic[
Grid[{
{If[zobrazitpredpis,
Item[Style[pispredpis,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]}
}]],
Delimiter,
Button[" Další funkce ",{xA=0,yA=((RandomInteger[{2y1,2y2}])/2),xB=RandomInteger[{x1,x2}],yB=RandomInteger[{y1,y2}]},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, Aleš Ryšavý, 2012",10,Black,FontFamily->Times],"",Style["Předpis grafu lineární funkce",25,Black,FontFamily->Times],""}];

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

LinearniFunkce