Šíření vlnění

Tento interaktivni notebook umožňuje názorně pochopit šíření vlnění určitým prostředím pomocí grafů závislosti okamžité výchylky na čase a závislosti okamžité výchylky na vzdálenosti. Pomocí posuvníků lze měnit:
	maximální výchylku (Subscript[y, m]) zdroje vlnění;
	periodu T zdroje vlnění
	velikost rychlosti v šíření vlnění daným prostředím;
	čas t od začátku vlnění;
	vzdálenost x, do níž vlnění dospělo za určitou dobu.

Volitelně pak lze zobrazit:
	zdroj vlnění;
	aktuální bod ve vzdálenosti x od zdroje vlnění;
	popis - tj. výpis veličin T, λ a v;
	periodu - zobrazí periodu v grafu a je-li vybrána volba popis, vypíše i její číselnou hodnotu;
	velikost rychlosti - je-li vybrána volba popis, vypíše i její číselnou hodnotu;
	vlnovou délku - zobrazí vlnovou délku v grafu a je-li vybrána volba popis, vypíše i její číselnou hodnotu;

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

Příprava pro vykreslení grafu

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

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

ym0=1;ymmin=0.1;ymmax=3;deltaym=0.1;
perioda0=1;periodamin=0.1;periodamax=5;deltaperioda=0.1;
v0=1;vmin=0.5;vmax=10;deltav=0.1;
t0=1.5perioda0;tmin=0;tmax=2periodamax;deltat=deltaperioda;
x0=0;xmin=0;xmax=10;deltax=0.05;

tloustka=0.005;
velikostbodu=0.025;
velikostsipky=0.04;
velikostpisma=18;
rozmerobrazku=380;

barva=Black;
barvakrivky1=Red;
barvakrivky2=Blue;
barvaboduzdroje=Magenta;
barvaaktualnihobodu=Brown;
barvavlndelky=Orange;
barvaperiody=Darker[Green,0.7];

SireniVlneni=Manipulate[Deploy[
vlna[t_,x_]:=ym Sin[2π((t/perioda)-(x/(perioda rychlost)))];
xmaxgraf=cas rychlost;
If[poloha>xmaxgraf,
poloha=xmaxgraf,
""];
bodzdroje=Point[{tmin,vlna[cas,xmin]}];
aktualnibod=Point[{poloha,vlna[cas,poloha]}];
kotaperiody={
Arrowheads[{-velikostsipky,velikostsipky}],
Arrow[{{tmin,0.5ymmax},{tmin+perioda,0.5ymmax}}]};
pruvodicperiody=Line[{{tmin+perioda,vlna[tmin+perioda,poloha]},{tmin+perioda,0.55ymmax}}];
kotavlndelky={
Arrowheads[{-velikostsipky,velikostsipky}],
Arrow[{{xmin,0.5ymmax},{xmin+perioda rychlost,0.5ymmax}}]};
pruvodicvlndelky=Line[{{xmin+perioda rychlost,vlna[cas,perioda rychlost]},{xmin+perioda rychlost,0.55ymmax}}];

pislambda=StringJoin[ToString[Style["λ",barvavlndelky],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[perioda rychlost,0.1]],barvavlndelky],StandardForm],ToString[Style[" m",barva],StandardForm]];
pisperiodu=StringJoin[ToString[Style["T",barvaperiody],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[perioda,0.1]],barvaperiody],StandardForm],ToString[Style[" s",barva],StandardForm]];
pisrychlost=StringJoin[ToString[Style["v = ",barva],StandardForm],ToString[Style[ToString[Round[rychlost,0.1]],barva],StandardForm],ToString[Style[" m.(s^(-1))",barva],StandardForm]];

grafik=Grid[{
{Show[
Plot[vlna[t,poloha],{t,-0.001,cas},PlotStyle->{barvakrivky1,Thickness[tloustka]}],
Graphics[{
If[zobrazitperiodu,
{{barvaperiody,Thickness[tloustka],Dashed,kotaperiody},
{barvaperiody,Thickness[0.5tloustka],Dashed,pruvodicperiody},
Text[Style["T",velikostpisma,barvaperiody,FontFamily->Times],{tmin+0.5perioda,0.55ymmax},{Center,Bottom}]},
Text[""]]
}],
FormatType->StandardForm,AxesOrigin->{0,0},AxesLabel->{Style["(t/s)",1.25velikostpisma,barva,FontFamily->Times,Bold],Style["(y/m)",velikostpisma,barva,FontFamily->Times]},PlotRange->{{tmin,tmax},{-ymmax,ymmax}},ImageSize->rozmerobrazku]
},
{Show[
Plot[vlna[cas,x],{x,-0.001,xmaxgraf},PlotStyle->{barvakrivky2,Thickness[tloustka]}],
Graphics[{
If[zobrazitzdroj,
{barvaboduzdroje,PointSize[velikostbodu],bodzdroje},
Text[""]],
If[zobrazitaktualnibod,
{barvaaktualnihobodu,PointSize[velikostbodu],aktualnibod},
Text[""]],
If[zobrazitvlnovoudelku,
{{barvavlndelky,Thickness[tloustka],Dashed,kotavlndelky},
{barvavlndelky,Thickness[0.5tloustka],Dashed,pruvodicvlndelky},
Text[Style["λ",velikostpisma,barvavlndelky,FontFamily->Times],{xmin+0.5perioda rychlost,0.55ymmax},{Center,Bottom}]},
Text[""]]

}],
FormatType->StandardForm,AxesOrigin->{0,0},AxesLabel->{Style["(x/m)",1.25velikostpisma,barva,FontFamily->Times,Bold],Style["(y/m)",velikostpisma,barva,FontFamily->Times]},PlotRange->{{tmin,tmax},{-ymmax,ymmax}},ImageSize->rozmerobrazku]
}}
]],

{{ym,ym0,Style["(Subscript[y, m])",15,barva]},ymmin,ymmax,deltaym},
{{perioda,perioda0,Style["T",15,barva,Italic]},periodamin,periodamax,deltaperioda},
{{rychlost,v0,Style["v",15,barva,Italic]},vmin,vmax,deltav},
Delimiter,
{{cas,t0,Style["t",15,barva,Italic]},tmin,tmax,deltat},
{{poloha,x0,Style["x",15,barva,Italic]},xmin,xmax,deltax},
Delimiter,
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitzdroj,True,Style["- zdroj vlnění",15,barvaboduzdroje,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitaktualnibod,True,Style["- aktuální bod",15,barvaaktualnihobodu,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitpopis,True,Style["- popis",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitperiodu,False,Style["- periodu",15,barvaperiody,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitrychlost,False,Style["- velikost rychlosti",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitvlnovoudelku,False,Style["- vlnovoou délku",15,barvavlndelky,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Dynamic[
Grid[{
{If[zobrazitpopis∧zobrazitperiodu,
Item[Style[pisperiodu,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitpopis∧zobrazitrychlost,
Item[Style[pisrychlost,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitpopis∧zobrazitvlnovoudelku,
Item[Style[pislambda,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, 2011",10,Black,FontFamily->Times],"",Style["Šíření vlnění",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.

SireniVlneni