Kinematika přímočarého pohybu

Následující interaktivní notebook umožňuje názorně pochopit vzájemnou korespondenci grafu závislosti uražené dráhy na čase a grafu závislosti velikosti rychlosti na čase pohybujícího se hmotného bodu.
Pomocí posuvníků lze nastavit:
	velikost počáteční rychlosti (Subscript[v, 0]);
	počáteční dráhu (Subscript[s, 0]);
	velikost zrychlení a.

Pro zobrazení lze vybrat jeden z následujících typů pohybu:
	jednoduchý - lze zobrazit grafy rovnoměrného pohybu, grafy rovnoměrně zrychleného pohybu nebo grafy rovnoměrně zpomaleného pohybu (tento typ pouze v případě, že jak počáteční dráha tak velikost počáteční rychlosti jsou nenulové, aby měla úloha fyzikální smysl);
	rozjezd - lze zobrazit grafy pohybu složeného z pohybu rovnoměrně zrychleného a pohybu rovnoměrného. Dobu, po kterou se hmotný bod rozjíždí, je možné volit pomocí posuvníku (Subscript[t, rozjezd]);
	rozjezd - brždění - lze zobrazit grafy pohybu, který je složen z pohybu rovnoměrně zrychleného, rovnoměrného a pohybu rovnoměrně zpomaleného. Dobu, po kterou se hmotný bod rozjíždí, lze volit posuvníkem (Subscript[t, rozjezd]), dobu, po kterou hmotný bod zastavuje, posuvníkem (Subscript[t, brždění]).
	
Dále lze v apletu volitelně zobrazit:
	graf závislosti uražené dráhy na čase;
	graf závislosti velikosti okamžité rychlosti na čase;
	bod v grafu - tj. aktuální polohu v grafu; tu lze měnit pomocí posuvníku t;
	tečnu ke grafu závislosti uražené dráhy na čase, aby bylo vidět, jak "rychle" dráha v závislosti na čase narůstá;
	hodnoty jak zadané, tak vypočtené na základě aktuálního nastavení.

Tlačítkem Ulož obrázky se uloží právě zobrazené grafy v "bílém" okně do aktuální složky (složka, v níž je uložen tento notebook) pod jmény, která jsou uložena v proměnných jmenosouboru1 a jmenosouboru2. K těmto jménům souborů je při opakovaném ukládání grafů 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, 2009

Příprava pro vykreslení grafu

ClearAll["Global`*"];
jmenosouboru1="pohyby_grafs_t_.jpg";
jmenosouboru2="pohyby_grafv_t_.jpg";
cesta=NotebookDirectory[];
pocetulozeni=0;

x1=-10;x2=-x1;
y1=-10;y2=-y1;
deltatprov=0.00001;

tmin=0;tmax=30;
v0=2;vmin=0;vmax=10;deltav=0.5;
s0=0;smin=0;smax=100;deltas=5;
a0=0;amin=-10;amax=10;deltaa=0.1;
t10=0.1tmax;t1min=0;t1max=0.4tmax;deltat1=1;
t20=0.7tmax;t2min=0.6tmax;t2max=0.9tmax;deltat2=1;

tloustka=0.005;
velikostbodu=0.022;
velikostobrazku=400;
velikostpismaosy=18;
velikostpisma=17;

barva=Black;
barvas=Blue;
barvav=Red;
barvabodu=Magenta;
barvatecny=Orange;

seznampohybu={"jednoduchý","rozjezd","rozjezd - brždění"};
defaultnipohyb=seznampohybu[[1]];

drahamax=vmax tmax+smax;
rychlostmax=3vmax;

GrafyPohybu=Manipulate[Deploy[
If[typpohybu==seznampohybu[[1]],
draha[t_]:=0.5apoc (t^2)+vpoc t+spoc,
If[typpohybu==seznampohybu[[2]],
draha[t_]:=(Piecewise[{{0.5apoc (t^2)+vpoc t+spoc, tmin<t≤t1}, {0.5apoc (t1^2)+(apoc t1 +vpoc) (t-t1)+vpoc t1+spoc, t1<t≤tmax}}]),
draha[t_]:=(Piecewise[{{0.5apoc (t^2)+vpoc t+spoc, tmin≤t<t1}, {0.5apoc (t1^2)+(apoc t1 +vpoc) (t-t1)+vpoc t1+spoc, t1≤t<t2}, {0.5apoc (t1^2)+(apoc t1 +vpoc) (t2-t1)+(apoc t1 +vpoc) (t-t2)-0.5(((apoc t1 +vpoc))/(tmax-t2))(((t-t2))^2)+vpoc t1+spoc, t2≤t≤tmax}}])
]];
rychlost[t_]:=draha'[t];
tkonec=tmax;
If[typpohybu==seznampohybu[[1]],
If[vpoc==0∨spoc==0,
If[apoc<0,
apoc=0,
""],
If[apoc<0,
{reseni=Solve[draha[tpom]==0,tpom],
tkonec=tpom/.reseni[[2]]},
""]],
If[apoc<0,
apoc=0,
""]];
tecna[t_]:=(apoc t1+vpoc)*(t-t1)+0.5*apoc*(t1^2)+vpoc t1+spoc;
bodvgrafu1=Point[{aktualnicas,draha[aktualnicas]}];
bodvgrafu2=Point[{aktualnicas,rychlost[aktualnicas+deltatprov]}];

pisrychlost=StringJoin[ToString[Style["(Subscript[v, 0]) = ",barva],StandardForm],ToString[Style[ToString[Round[vpoc,0.1]],barva],StandardForm],ToString[Style[" m.(s^(-1))",barva],StandardForm]];
piszrychleni=StringJoin[ToString[Style["a = ",barva],StandardForm],ToString[Style[ToString[Round[apoc,0.1]],barva],StandardForm],ToString[Style[" m.(s^(-2))",barva],StandardForm]];
pisdrahu=StringJoin[ToString[Style["(Subscript[s, 0]) = ",barva],StandardForm],ToString[Style[ToString[Round[spoc,0.1]],barva],StandardForm],ToString[Style[" m",barva],StandardForm]];
pisrychlostvcase=StringJoin[ToString[Style["v(",barva],StandardForm],ToString[Style[ToString[Round[aktualnicas,0.1]],barvabodu],StandardForm],ToString[Style[") = ",barva],StandardForm],ToString[Style[ToString[Round[rychlost[aktualnicas+deltatprov],0.01]],barvabodu],StandardForm],ToString[Style[" m.(s^(-1))",barva],StandardForm]];
pisdrahuvcase=StringJoin[ToString[Style["s(",barva],StandardForm],ToString[Style[ToString[Round[aktualnicas,0.1]],barvabodu],StandardForm],ToString[Style[") = ",barva],StandardForm],ToString[Style[ToString[Round[draha[aktualnicas],0.01]],barvabodu],StandardForm],ToString[Style[" m",barva],StandardForm]];
piscasrozjezdu=StringJoin[ToString[Style["(Subscript[t, rozjezd]) = ",barva],StandardForm],ToString[Style[ToString[Round[t1,0.1]],barva],StandardForm],ToString[Style[" s",barva],StandardForm]];
piscasbrzdeni=StringJoin[ToString[Style["(Subscript[t, brždění]) = ",barva],StandardForm],ToString[Style[ToString[Round[t2,0.1]],barva],StandardForm],ToString[Style[" s",barva],StandardForm]];
piszrychlenibrzdeni=StringJoin[ToString[Style["(Subscript[a, brždění]) = ",barva],StandardForm],ToString[Style[ToString[Round[((vpoc+apoc t1)/t2),0.01]],barva],StandardForm],ToString[Style[" m.(s^(-2))",barva],StandardForm]];

Grid[{
{If[zobrazitgrafs,
grafs=Show[
Plot[draha[t],{t,tmin,tkonec},PlotStyle->{barvas,Thickness[tloustka]},AxesLabel->{Style["(t/s)",velikostpismaosy,barva,FontFamily->Times],Style["(s/m)",velikostpismaosy,barva,FontFamily->Times]}],
If[zobrazittecnu∧typpohybu==seznampohybu[[3]],
Plot[tecna[t],{t,tmin,tkonec},PlotStyle->{barvatecny,Dashed,Thickness[0.75tloustka]}],
Plot[0,{t,tmin,0.01},PlotStyle->{barva,Thickness[0.0001tloustka]}]
(*Vykreslení části osy - else větev zde nemůže být prázdná*)],
Graphics[
If[zobrazitbod,
{barvabodu,PointSize[velikostbodu],bodvgrafu1},
Text[""]]],
FormatType->StandardForm,PlotRange->{{tmin,tmax},{0,drahamax}},AxesOrigin->{0,0},ImageSize->velikostobrazku]]},
{If[zobrazitgrafv,
grafv=Show[
Plot[rychlost[t],{t,tmin,tkonec},PlotStyle->{barvav,Thickness[tloustka]},AxesLabel->{Style["(t/s)",velikostpismaosy,barva,FontFamily->Times],Style["(v/(m.(s^(-1))))",velikostpismaosy,barva,FontFamily->Times]},PerformanceGoal->"Quality"],
Graphics[
If[zobrazitbod,
{barvabodu,PointSize[velikostbodu],bodvgrafu2},
Text[""]]
],
FormatType->StandardForm,PlotRange->{{tmin,tmax},{0,rychlostmax}},AxesOrigin->{0,0},ImageSize->velikostobrazku]]}
}]],

{{vpoc,v0,Style["(Subscript[v, 0])",15,barva,Italic]},vmin,vmax,deltav},
{{spoc,s0,Style["(Subscript[s, 0])",15,barva,Italic]},smin,smax,deltas},
{{apoc,a0,Style["a",15,barva,Italic]},amin,amax,deltaa},
Delimiter,
{{t1,t10,Style["(Subscript[t, rozjezd])",15,barva,Italic]},t1min,t1max,deltat1},
{{t2,t20,Style["\!\(\*SubscriptBox[\(t\), \(brždění\)]\)",15,barva,Italic]},t2min,t2max,deltat2},
Delimiter,
{{aktualnicas,tmin,Style["t",15,barva,Italic]},tmin,tmax,deltat1},
Delimiter,
{{typpohybu,defaultnipohyb,Style["typ pohybu",15,barva,FontFamily->Times]},seznampohybu,ControlType->PopupMenu},
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitgrafs,True,Style["- graf dráhy",15,barvas,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitgrafv,True,Style["- graf rychlosti",15,barvav,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitbod,True,Style["- bod v grafu",15,barvabodu,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazittecnu,True,Style["- tečnu",15,barvatecny,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazithodnoty,True,Style["- hodnoty",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Dynamic[
Grid[{
{If[zobrazithodnoty,
Item[Style[StringJoin[pisrychlost,"   ",pisdrahu],velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty,
Item[Style[piszrychleni,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty,
Item[Style[StringJoin[pisrychlostvcase,"   ",pisdrahuvcase],velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty∧(typpohybu==seznampohybu[[2]]∨typpohybu==seznampohybu[[3]]),
Item[Style[piscasrozjezdu,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty∧typpohybu==seznampohybu[[3]],
Item[Style[piscasbrzdeni,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazithodnoty∧typpohybu==seznampohybu[[3]],
Item[Style[piszrychlenibrzdeni,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]}
}]],
Delimiter,
Button[" Ulož obrázky ",{pocetulozeni=pocetulozeni+1,{Export[StringInsert[StringJoin[cesta,jmenosouboru1],ToString[pocetulozeni],-5],grafs],Export[StringInsert[StringJoin[cesta,jmenosouboru2],ToString[pocetulozeni],-5],grafv]}},ImageSize->{100,Automatic}],
ControlPlacement->Left,
FrameLabel->{Style["© Jaroslav Reichl, 2009",10,Black,FontFamily->Times],"",Style["Kinematika přímočarého pohybu",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.

GrafyPohybu