Coulombův zákon

Následující aplet umožňuje pochopit Coulombův zákon - zejména závislost elektrostatické síly na hodnotách nábojů, jejich vzájemné vzdálenosti a na relativní permitivitě prostředí.

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

Příprava pro vykreslení grafu

jmenosouboru="coulomb_.jpg";
cesta=NotebookDirectory[];
pocetulozeni=0;


x1=-20;x2=-x1;
y1=-10;y2=-y1;
rmax=0.1(x2-x1);korekcer=0.05;
stredx=((x2+x1)/2);

Qmin=-10;Qmax=-Qmin;deltaQ=0.5;
dmin=2rmax;dmax=8rmax;deltad=0.5rmax;
epsilonrmin=1;epsilonrmax=10;deltaepsilon=0.5;

tloustka=0.005;
velikostbodu=0.015;

tloustkamax=50tloustka;
tloustkamin=2tloustka;

barva=Black;
barvaQplus=Blue;
barvaQminus=Red;
barvasily1=Magenta;
barvasily2=Brown;
barvanaboje=White;

<<PhysicalConstants`;
epsilonnula=VacuumPermittivity/.{Ampere->1,Second->1,Meter->1,Volt->1};

Fmax=((10^(-12))/(4π epsilonnula epsilonrmin))((((Qmax/(0.01dmin))))^2);
Fmin=(1/(4π epsilonnula epsilonrmax))((((0.01/dmax)))^2);

CoulombLaw=Manipulate[Deploy[
F=((Q1 Q2 (10^(-12)))/(4π epsilonnula epsilonr (((0.01d))^2)));
polomer1=((Abs[Q1])/Qmax)rmax;polomer2=((Abs[Q2])/Qmax)rmax;
If[Q1>0,
{barvanaboje1=Lighter[barvaQplus,1-(Q1/Qmax)],
typnaboje1="+"},
If[Q1<0,
{barvanaboje1=Lighter[barvaQminus,1+(Q1/Qmax)],
typnaboje1="-"},
{barvanaboje1=White,
polomer1=korekcer rmax}]];
If[Q2>0,
barvanaboje2=Lighter[barvaQplus,1-(Q2/Qmax)],
If[Q2<0,
barvanaboje2=Lighter[barvaQminus,1+(Q2/Qmax)],
{barvanaboje2=White,
polomer2=korekcer rmax}]];

naboj1plny=Disk[{stredx-(d/2),0.5y2},polomer1];
naboj1=Circle[{stredx-(d/2),0.5y2},polomer1];
naboj2plny=Disk[{stredx+(d/2),0.5y2},polomer2];
naboj2=Circle[{stredx+(d/2),0.5y2},polomer2];
sila1={
Arrowheads[{0,6tloustka}],
Arrow[{{stredx-(d/2),0.5y2},{stredx-(d/2)-(F/Fmax)Fmin,0.5y2}}]};
sila2={
Arrowheads[{0,6tloustka}],
Arrow[{{stredx+(d/2),0.5y2},{stredx+(d/2)+(F/Fmax)Fmin,0.5y2}}]};
F=Abs[Round[100F]];
(*Síla je násobena činitelem 100 kvůli jejímu správnému zaokrouhlení na dvě desetinná místa. Při výpisu velikosti síly je činitelem 100 opět vydělena.*)
grafik=Show[
Graphics[{
{barvanaboje1,naboj1plny},
{barva,Thickness[0.8tloustka],naboj1},
{barvanaboje2,naboj2plny},
{barva,Thickness[0.8tloustka],naboj2},
If[F≠0,
{{barvasily1,Thickness[1.4tloustka],sila1},
{barvasily2,Thickness[1.4tloustka],sila2},
Text[Style["(Overscript[(Subscript[F, 1]), ⟶])",20,barvasily1,FontFamily->Times,Bold],{stredx-(d/2)-(F/(Abs[F]))1.4polomer1,0.5y2+0.5rmax},{Center,Center}],
Text[Style["(Overscript[(Subscript[F, 2]), ⟶])",20,barvasily2,FontFamily->Times,Bold],{stredx+(d/2)+(F/(Abs[F]))1.4polomer2,0.5y2+0.5rmax},{Center,Center}]},
Text[""]],
If[zobrazithodnoty,
{Text[Style[StringJoin["(Subscript[Q, 1]) = ",ToString[Round[Q1,0.1]]," μC"],20,barvanaboje1,FontFamily->Times,Bold],{stredx-(d/2),0.5y2+1.5rmax},{Right,Center}],
Text[Style[StringJoin["(Subscript[Q, 2]) = ",ToString[Round[Q2,0.1]]," μC"],20,barvanaboje2,FontFamily->Times,Bold],{stredx+(d/2),0.5y2+1.5rmax},{Left,Center}],
Text[Style[StringJoin["r = ",ToString[Round[d,0.1]]," cm"],20,barva,FontFamily->Times,Bold],{stredx,0.5y2-1.5rmax},{Center,Center}],
Text[Style[StringJoin["(Subscript[ϵ, r]) = ",ToString[Round[epsilonr,0.1]]],20,barva,FontFamily->Times,Bold],{stredx,0.5y2-2.1rmax},{Center,Center}],
Text[Style[StringJoin[ToString[Style["(Subscript[F, 1])",barvasily1],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style["(Subscript[F, 2])",barvasily2],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[(F/100.)]," N"],20,barva,FontFamily->Times,Bold],{stredx,0.5y2-2.7rmax},{Center,Center}]},
Text[""]]
}],
FormatType->StandardForm,PlotRange->{{1.7x1,1.7x2},{1.2y1,1.2y2}},AxesLabel->{"x","y"},ImageSize->800
]],

{{Q1,(Qmax/2),Style["(Subscript[Q, 1])",15,barva,Italic]},Qmin,Qmax,deltaQ},
{{Q2,(Qmax/2),Style["(Subscript[Q, 2])",15,barva,Italic]},Qmin,Qmax,deltaQ},
{{d,(dmax/2),Style["r",15,barva,Italic]},dmin,dmax,deltad},
{{epsilonr,epsilonrmin,Style["(Subscript[ϵ, r])",15,barva,Italic]},epsilonrmin,epsilonrmax,deltaepsilon},
Delimiter,
{{zobrazithodnoty,True,Style["zobrazit hodnoty",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Button[" Ulož obrázek ",{pocetulozeni=pocetulozeni+1,Export[StringInsert[StringJoin[cesta,jmenosouboru],ToString[pocetulozeni],-5],grafik]},ImageSize->{100,Automatic}],
ControlPlacement->Top,
FrameLabel->{Style["© Jaroslav Reichl, 2008",10,Black,FontFamily->Times],"",Style["Coulombův zákon",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.

CoulombLaw