Závislost napětí, proudu a výkonu na čase v RLC obvodu

Následující interaktivní notebook umožňuje názorně pochopit vzájemný vztah grafu závislosti okamžitého napětí na čase, grafu závislosti okamžitého proudu na čase a grafu závislosti okamžitého výkonu na čase v sériovém RLC obvodu.

Pomocí posuvníků lze nastavit:
	maximální proud (Subscript[I, max]);
	maximální napětí (Subscript[U, max]);
	frekvenci napětí a proudu f;
	fázový posun mezi proudem a napětím φ.
Volitelně lze zobrazit:
	graf závislosti proudu na čase;
	graf závislosti výkonu na čase;
	práci - vyšrafovanou část pod grafem výkonu;
	výpis hodnot.
V notebooku není možné nastavovat parametry RLC obvodu - notebook má sloužit pouze pro zobrazení grafů a jejich vzájemné vztahy, závislost práce na činném výkonu, ...

Poznámka:
Práce vykonaná střídavým proudem za jednu periodu je v notebooku počítána pomocí odvozeného vztahu. Matematicky lepší by byl výpočet pomocí určitého integrálu (je v notebooku v poznámce). Vzhledem k rychlosti výpočtu v rámci příkazu Manipulate[] je vhodnější použít jednodušší vzorec než určitý integrál.

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

Příprava pro vykreslení grafu

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

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

I0=2;Imin=0.1;Imax1=5;deltaI=0.1;
U0=4;Umin=0.1;Umax1=5;deltaU=0.1;
f0=50;fmin=20;fmax=60;deltaf=1;
fi0=0;fimin=-(π/2);fimax=(π/2);deltafi=(π/10);
t1=0;t2=(1/fmin);

tloustka=0.005;
velikostpisma=18;

barva=Black;
barvaI=Red;
barvaU=Darker[Orange];
barvaP=Blue;
barvaprace=Darker[Green,0.6];
barvapracegraf=Lighter[Green,0.9];

GrafyRLCObvodu=Manipulate[Deploy[
u[t_]:=Umax Sin[2π f t];
i[t_]:=Imax Sin[2π f t+fi];
p[t_]:=i[t] u[t];
(*prace=(∫_0^(1/f))p[t]\[DifferentialD]t;*)
prace=1000((Umax Imax)/(2f))Cos[fi];
pispraci=StringJoin[ToString[Subscript[Style["W",barvaprace,Italic],Style["za periodu",barva]],StandardForm],ToString[Style[" = ",barva,Italic],StandardForm],ToString[Style[ToString[Round[prace,0.1]],barvaprace],StandardForm],ToString[Style[" mJ",barva],StandardForm]];
pisproudmax=StringJoin[ToString[Subscript[Style["I",barvaI,Italic],Style["max",barva]],StandardForm],ToString[Style[" = ",barva,Italic],StandardForm],ToString[Style[ToString[Round[Imax,0.1]],barvaI],StandardForm],ToString[Style[" A",barva],StandardForm]];
pisnapetimax=StringJoin[ToString[Subscript[Style["U",barvaU,Italic],Style["max",barva]],StandardForm],ToString[Style[" = ",barva,Italic],StandardForm],ToString[Style[ToString[Round[Umax,0.1]],barvaU],StandardForm],ToString[Style[" V",barva],StandardForm]];
pisvykonmax=StringJoin[ToString[Subscript[Style["P",barvaP,Italic],Style["max",barva]],StandardForm],ToString[Style[" = ",barva,Italic],StandardForm],ToString[Style[ToString[Round[Umax Imax,0.1]],barvaP],StandardForm],ToString[Style[" W",barva],StandardForm]];
pisfrekvenci=StringJoin[ToString[Style["f",barva,Italic],StandardForm],ToString[Style[" = ",barva,Italic],StandardForm],ToString[Style[ToString[Round[f,0.1]],barva],StandardForm],ToString[Style[" Hz",barva],StandardForm]];
pisfazi=StringJoin[ToString[Style["φ",barva,Italic],StandardForm],ToString[Style[" = ",barva,Italic],StandardForm],ToString[Style[ToString[fi,StandardForm],barva],StandardForm]];

grafik=Show[
If[zobrazitvykon,
If[zobrazitproud,
If[zobrazitpraci,
Plot[{u[t],i[t],p[t]},{t,t1,t2},PlotStyle->{{barvaU,Thickness[tloustka]},{barvaI,Thickness[tloustka]},{barvaP,Thickness[tloustka]}},AxesLabel->{"(t/s)",StringJoin[ToString[Style["(u/V)",15,barvaU,FontFamily->Times],StandardForm],",",ToString[Style["(i/V)",15,barvaI,FontFamily->Times],StandardForm],",",ToString[Style["(p/W)",15,barvaP,FontFamily->Times],StandardForm]]},Filling->{3->{Axis,barvapracegraf}}],
Plot[{u[t],i[t],p[t]},{t,t1,t2},PlotStyle->{{barvaU,Thickness[tloustka]},{barvaI,Thickness[tloustka]},{barvaP,Thickness[tloustka]}},AxesLabel->{"(t/s)",StringJoin[ToString[Style["(u/V)",15,barvaU,FontFamily->Times],StandardForm],",",ToString[Style["(i/V)",15,barvaI,FontFamily->Times],StandardForm],",",ToString[Style["(p/W)",15,barvaP,FontFamily->Times],StandardForm]]}]],
If[zobrazitpraci,
Plot[{u[t],p[t]},{t,t1,t2},PlotStyle->{{barvaU,Thickness[tloustka]},{barvaP,Thickness[tloustka]}},AxesLabel->{"(t/s)",StringJoin[ToString[Style["(u/V)",15,barvaU,FontFamily->Times],StandardForm],",",ToString[Style["(p/W)",15,barvaP,FontFamily->Times],StandardForm]]},Filling->{2->{Axis,barvapracegraf}}],
Plot[{u[t],p[t]},{t,t1,t2},PlotStyle->{{barvaU,Thickness[tloustka]},{barvaP,Thickness[tloustka]}},AxesLabel->{"(t/s)",StringJoin[ToString[Style["(u/V)",15,barvaU,FontFamily->Times],StandardForm],",",ToString[Style["(p/W)",15,barvaP,FontFamily->Times],StandardForm]]}]]],
If[zobrazitproud,
Plot[{u[t],i[t]},{t,t1,t2},PlotStyle->{{barvaU,Thickness[tloustka]},{barvaI,Thickness[tloustka]}},AxesLabel->{"(t/s)",StringJoin[ToString[Style["(u/V)",15,barvaU,FontFamily->Times],StandardForm],",",ToString[Style["(i/V)",15,barvaI,FontFamily->Times],StandardForm]]}],
Plot[u[t],{t,t1,t2},PlotStyle->{barvaU,Thickness[tloustka]},AxesLabel->{"(t/s)",ToString[Style["(u/V)",15,barvaU,FontFamily->Times],StandardForm]}]]],

FormatType->StandardForm,PlotRange->{{t1,t2},{y1,y2}},ImageSize->530
]],

{{Imax,I0,Style["(Subscript[I, max])",15,barvaI,Italic]},Imin,Imax1,deltaI},
{{Umax,U0,Style["(Subscript[U, max])",15,barvaU,Italic]},Umin,Umax1,deltaU},
{{f,f0,Style["f",15,barva,Italic]},fmin,fmax,deltaf},
{{fi,fi0,Style["φ",15,barva,Italic]},fimin,fimax,deltafi},
Delimiter,
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitproud,True,Style["graf proudu",15,barvaI,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitvykon,True,Style["graf výkonu",15,barvaP,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitpraci,True,Style["práci",15,barvaprace,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
{{zobrazitvypis,True,Style["výpis hodnot",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Dynamic[
Grid[{
{If[zobrazitvypis,
Item[Style[pisnapetimax,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitproud∧zobrazitvypis,
Item[Style[pisproudmax,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitvykon∧zobrazitvypis,
Item[Style[pisvykonmax,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitpraci∧zobrazitvypis,
Item[Style[pispraci,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitvypis,
Item[Style[" ",0.5velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitvypis,
Item[Style[pisfrekvenci,velikostpisma,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitvypis,
Item[Style[pisfazi,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, 2009",10,Black,FontFamily->Times],"",Style[StringJoin["Závislost ",ToString[Style["napětí",barvaU],StandardForm],", ",ToString[Style["proudu",barvaI],StandardForm]," a ",ToString[Style["výkonu",barvaP],StandardForm]," na čase v RLC obvodu "],25,barva,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.

GrafyRLCObvodu