Parabola

Následující interaktivní notebook umožňuje názorně pochopit zobrazení paraboly a její základní vlastnosti.
Pomocí posuvníků lze měnit:
	souřadnice vrcholu paraboly;
	parametr paraboly.
Hodnoty posuvníku t se v zobrazeném grafu uplatní pouze tehdy, je-li vybrána možnost zobrazit průvodič (popis je níže).

Volitelně lze zobrazit:
	souřadnice vrcholu a ohniska;
	popis důležitých bodů a přímek;
	rovnici paraboly ve vrcholovém tvaru;
	osu paraboly;
	vrchol paraboly;
	ohnisko paraboly;
	řídící přímku paraboly;
	průvodič, tj. lomenou čáru, která vyznačuje vzdálenost bodu na parabole od ohniska paraboly a od řídící přímky paraboly; polohu bodu na parabole lze měnit pomocí posuvníku t.

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, 2010

Příprava pro vykreslení grafu

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

x1=-10;x2=-x1;
y1=-10;y2=-y1;
delta=0.025(x2-x1);

m0=0;mmin=(8/10)x1;mmax=(8/10)x2;deltam=(2/100)(x2-x1);
n0=0;nmin=(8/10)x1;nmax=(8/10)x2;deltan=(2/100)(x2-x1);
p0=1;pmin=(8/10)x1;pmax=(8/10)x2;deltap=(5/1000)(x2-x1);
t0=0;tmin=x1;tmax=x2;deltat=(1/1000)(x2-x1);

tloustka=0.005;
velikostbodu=0.017;
velikostpisma=15;

barva=Black;
barvam=Darker[Blue,0.4];
barvan=Darker[Green,0.6];
barvap=Magenta;
barvakrivky=Red;
barvaohnisko=Magenta;
barvaprimka=Magenta;
barvapruvodic=Darker[Brown];
barvavrchol=Blue;
barvavarovani=Red;

Parabola=Manipulate[Deploy[
vrchol=Point[{m,n}];
pruvodicm=Line[{{0,n},{m,n}}];
pruvodicn=Line[{{m,0},{m,n}}];
If[osa==" osou y ",
If[p≠0,
{parabola[x_]:=((((x-m))^2)/(2p))+n,
xdolni=x1,
xhorni=x2,
ohniskox=m,
ohniskoy=n+(p/2),
ridiciprimka=Line[{{x1,n-(p/2)},{x2,n-(p/2)}}],
osaparaboly=Line[{{m,y1},{m,y2}}]},
{parabola[x_]:=0,
xdolni=x1,
xhorni=x2}],
{parabola[x_]:=(Sqrt[2p(x-m)]),
ohniskox=m+(p/2),
ohniskoy=n,
ridiciprimka=Line[{{m-(p/2),y1},{m-(p/2),y2}}],
osaparaboly=Line[{{x1,n},{x2,n}}],
If[p>0,
{xdolni=m,
xhorni=x2},
{xdolni=x1,
xhorni=m}]}];
ohnisko=Point[{ohniskox,ohniskoy}];
pruvodicohnisko=Line[{{0,ohniskoy},{ohniskox,ohniskoy},{ohniskox,0}}];
If[osa==" osou y ",
If[p≠0,
{bodpruvodice=Point[{t,parabola[t]}],
bodpruvodicenaprimce=Point[{t,n-(p/2)}],
pruvodicbodu=Line[{{ohniskox,ohniskoy},{t,parabola[t]},{t,n-(p/2)}}]},
""],
If[p≠0,
{bodpruvodice=Point[{((((t-n))^2)/(2p))+m,t}],
bodpruvodicenaprimce=Point[{m-(p/2),t}],
pruvodicbodu=Line[{{ohniskox,ohniskoy},{((((t-n))^2)/(2p))+m,t},{m-(p/2),t}}]},
""]
];

(*Příprava výpisu*)
pisvrchol=StringJoin[ToString[Style["V",barvavrchol],StandardForm],ToString[Style[" = [",barva],StandardForm],ToString[Style[ToString[1.m],barvam],StandardForm],ToString[Style["; ",barva],StandardForm],ToString[Style[ToString[1.n],barvan],StandardForm],ToString[Style["]",barva],StandardForm]];
pisohnisko=StringJoin[ToString[Style["F",barvaohnisko],StandardForm],ToString[Style[" = [",barva],StandardForm],ToString[Style[ToString[1.ohniskox],barvaohnisko],StandardForm],ToString[Style["; ",barva],StandardForm],ToString[Style[ToString[1.ohniskoy],barvaohnisko],StandardForm],ToString[Style["]",barva],StandardForm]];
If[m≥0,
znamenko1=" - ",
znamenko1=" + "];
If[n≥0,
znamenko2=" - ",
znamenko2=" + "];
If[p≥0,
znamenko3="",
znamenko3="-"];
If[osa==" osou y ",
pisrovnici=StringJoin[ToString[Style["(x ",barva],StandardForm],ToString[Style[znamenko1,barva],StandardForm],ToString[Style[ToString[Abs[1.m],StandardForm],barvam],StandardForm],ToString[Style[")^2 =",barva],StandardForm],ToString[Style[znamenko3,barva],StandardForm],ToString[Style["2 ",barva],StandardForm],ToString[Style[ToString[Abs[1.p],StandardForm],barvap],StandardForm],ToString[Style["(y",barva],StandardForm],ToString[Style[znamenko2,barva],StandardForm],ToString[Style[ToString[Abs[1.n],StandardForm],barvan],StandardForm],ToString[Style[")",barva],StandardForm]],
pisrovnici=StringJoin[ToString[Style["(y",barva],StandardForm],ToString[Style[znamenko2,barva],StandardForm],ToString[Style[ToString[Abs[1.n],StandardForm],barvan],StandardForm],ToString[Style[")^2 = ",barva],StandardForm],ToString[Style[znamenko3,barva],StandardForm],ToString[Style["2 ",barva],StandardForm],ToString[Style[ToString[Abs[1.p],StandardForm],barvap],StandardForm],ToString[Style["(x ",barva],StandardForm],ToString[Style[znamenko1,barva],StandardForm],ToString[Style[ToString[Abs[1.m],StandardForm],barvam],StandardForm],ToString[Style[")",barva],StandardForm]]];

grafik=Show[
If[p≠0,
If[osa==" osou y ",
Plot[parabola[x],{x,x1,x2},PlotStyle->{Thickness[tloustka],barvakrivky},AxesOrigin->{0,0},Axes->True,Ticks->None,AxesLabel->{Style["x",15,barva,FontFamily->Times],Style["y",15,barva,FontFamily->Times]}],
Plot[{parabola[x]+n,-parabola[x]+n},{x,xdolni,xhorni},PlotStyle->{{Thickness[tloustka],barvakrivky},{Thickness[tloustka],barvakrivky}},AxesOrigin->{0,0},Ticks->None,Axes->True,AxesLabel->{Style["x",15,barva,FontFamily->Times],Style["y",15,barva,FontFamily->Times]}]],
Plot[0,{x,0,0.1},PlotStyle->{Thickness[0.0001tloustka],barva},AxesOrigin->{0,0},Axes->True,Ticks->None,AxesLabel->{Style["x",15,barva,FontFamily->Times],Style["y",15,barva,FontFamily->Times]}]],

Graphics[{
If[zobrazitosuparaboly∧p≠0,
{{barva,Dashed,Thickness[0.5tloustka],osaparaboly},
If[zobrazitpopis,
If[osa==" osou y ",
Text[Style["o",15,barva,FontFamily->Times],{m-delta,y2-delta},{Center,Center}],
If[osa==" osou x ",
Text[Style["o",15,barva,FontFamily->Times],{x1+delta,n+delta},{Center,Center}],
Text[""]]],
Text[""]]},
Text[""]],
If[zobrazitvrchol∧p≠0,
{{barvavrchol,PointSize[velikostbodu],vrchol},
If[zobrazitpopis,
Text[Style["V",15,barvavrchol,FontFamily->Times],{m+delta,n-Sign[p]delta},{Center,Center}],
Text[""]],
If[zobrazitsouradnice,
{{barvam,Thickness[0.5tloustka],Dotted,pruvodicm},
{barvan,Thickness[0.5tloustka],Dotted,pruvodicn},
Text[Style[ToString[1.m],15,barvam,FontFamily->Times],{m,0.02y1},{Right,Top}],
Text[Style[ToString[1.n],15,barvan,FontFamily->Times],{0.02x1,n},{Right,Bottom}]},
Text[""]]},
Text[""]],
If[zobrazitohnisko∧p≠0,
{{barvaohnisko,PointSize[velikostbodu],ohnisko},
If[zobrazitpopis,
Text[Style["F",15,barvaohnisko,FontFamily->Times],{ohniskox+delta,ohniskoy+Sign[p]delta},{Center,Center}],
Text[""]],
If[zobrazitsouradnice,
{{barvaohnisko,Thickness[0.5tloustka],Dotted,pruvodicohnisko},
Text[Style[ToString[1.ohniskox],15,barvaohnisko,FontFamily->Times],{ohniskox,0.02y1},{Right,Top}],
Text[Style[ToString[1.ohniskoy],15,barvaohnisko,FontFamily->Times],{0.02x1,ohniskoy},{Right,Bottom}]},
Text[""]]},
Text[""]],
If[zobrazitridiciprimku∧p≠0,
{{barvaprimka,Thickness[0.75tloustka],ridiciprimka},
If[zobrazitpopis,
If[osa==" osou y ",
Text[Style["d",15,barvaprimka,FontFamily->Times],{x1+delta,n-(p/2)+delta},{Center,Center}],
If[osa==" osou x ",
Text[Style["d",15,barvaprimka,FontFamily->Times],{m-(p/2)-delta,y2-delta},{Center,Center}],
Text[""]]],
Text[""]]},
Text[""]],
If[p==0,
Text[Style["P A R A B O L A   N E N Í   D E F I N O V Á N A!",20,barvavarovani,Bold,FontFamily->Times],{0.5(x1+x2),0.25y2},{Center,Center}],
Text[""]],
If[zobrazitpruvodic∧p≠0,
{{barva,PointSize[velikostbodu],bodpruvodice},
{barva,PointSize[velikostbodu],bodpruvodicenaprimce},
{barva,Dashed,Thickness[0.75tloustka],pruvodicbodu}},
Text[""]]
}],
FormatType->StandardForm,AspectRatio->Automatic,PlotRange->{{x1,x2},{y1,y2}},ImageSize->500
]],

{{m,m0,Style["m",15,barvam,Italic]},mmin,mmax,deltam},
{{n,n0,Style["n",15,barvan,Italic]},nmin,nmax,deltan},
{{p,p0,Style["p",15,barvap,Italic]},pmin,pmax,deltap},
Delimiter,
{{t,t0,Style["t",15,barva,Italic]},tmin,tmax,deltat},
Delimiter,
{{osa," osou y ",Style["osa \[VerticalSeparator]\[VerticalSeparator] s",15,barva,FontFamily->Times]},{" osou x "," osou y "}},
Delimiter,
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitsouradnice,False,Style["- souřadnice",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitpopis,True,Style["- popis",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitrovnici,True,Style["- rovnici",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitosuparaboly,True,Style["- osu paraboly",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitvrchol,True,Style["- vrchol",15,barvavrchol,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitohnisko,True,Style["- ohnisko",15,barvaohnisko,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitridiciprimku,True,Style["- řídící přímku",15,barvaohnisko,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitpruvodic,False,Style["- průvodič",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Dynamic[
Grid[{
{If[zobrazitvrchol&&zobrazitsouradnice&&zobrazitpopis&&p≠0,
Item[Style[pisvrchol,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitohnisko&&zobrazitsouradnice&&zobrazitpopis&&p≠0,
Item[Style[pisohnisko,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitrovnici&&p≠0,
Item[Style["",velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitrovnici&&p≠0,
Item[Style[pisrovnici,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]}
}]],
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, 2010",10,Black,FontFamily->Times],"",Style["Parabola",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.

Parabola