Binomická rovnice v oboru ℂ

Následující aplet umožňuje zobrazit řešení binomické rovnice (x^n)=a v obru komplexních čísel.
Pomocí posuvníků lze měnit reálnou a imaginární část komplexního čísla a mocninu n. Volitelně lze zobrazit:
	zadané komplexní číslo jak jeho obraz v Gaussově rovině, tak jeho popis;
	jeho absolutní hodnotu;
	řešení rovnice - obrazy v Gaussově rovině a absolutní hodnotu řešení a nejmenší argument čísla, které je řešením dané binomické rovnice;
	n-úhelník, v jehož vrcholech leží komplexní čísla, která jsou řešením zadané binomické rovnice.
	
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="binomicka_rce_.jpg";
cesta=NotebookDirectory[];
pocetulozeni=0;

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

n0=3;nmin=1;nmax=10;deltan=1;
a0=1;amin=-10;amax=10;deltaa=(1/2);
b0=1;bmin=-10;bmax=10;deltab=(1/2);
presnost=0.01;

tloustka=0.005;
velikostbodu=0.02;
velikostpisma=15;

barva=Black;
barvanuhelnik=Blue;
barvacislo=Blue;
barvacislo0=Orange;
barvabod=Red;

BinomickaRovnice=Manipulate[Deploy[
fi=Arg[a+b I];
If[fi<0,
fi=2π+fi,
""];
abshodnota=Abs[a+b I];
finula=(fi/n);
vrcholx=Table[((Abs[a+b I])^(1/n))Cos[finula+((2i π)/n)],{i,0,n-1,1}];
vrcholy=Table[((Abs[a+b I])^(1/n))Sin[finula+((2i π)/n)],{i,0,n-1,1}];
abshodnotareseni=Abs[vrcholx[[1]]+vrcholy[[1]] I];
cislo=Point[{a,b}];
bodyreseni=Point[Table[{vrcholx[[i]],vrcholy[[i]]},{i,1,n,1}]];
bodreseni0=Point[{((Abs[a+b I])^(1/n))Cos[finula],((Abs[a+b I])^(1/n))Sin[finula]}];
If[Depth[Abs[fi]]==Length[Abs[fi]]∨Length[Abs[fi]]==0,
zaokrouhlit=False,
{fi=Round[fi,presnost],
finula=Round[finula,presnost],
zaokrouhlit=True}];
If[jednotkyuhlu=="stupně",
{jednotka="°",
If[zaokrouhlit,
{fi=Round[(180/π)fi,presnost],
finula=Round[(180/π)finula,presnost]},
{fi=(180/π)fi,
finula=(180/π)finula}]},
jednotka=""];
If[n>2,
{delkastrany=(Sqrt[(((vrcholx[[2]]-vrcholx[[1]]))^2)+(((vrcholy[[2]]-vrcholy[[1]]))^2)]),
obvod=delkastrany n,
obsah=(n/2)(abshodnotareseni^2) Sin[((2π)/n)],
stranynuhelnika={
Table[Line[{{vrcholx[[i]],vrcholy[[i]]},{vrcholx[[i+1]],vrcholy[[i+1]]}}],{i,1,n-1,1}],
Line[{{vrcholx[[n]],vrcholy[[n]]},{vrcholx[[1]],vrcholy[[1]]}}]},
pisstranu=StringJoin[ToString[Style["a",barvanuhelnik],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[delkastrany,0.01],TraditionalForm],barva],StandardForm],ToString[Style[" j",barva],StandardForm]],
pisobvod=StringJoin[ToString[Style["o",barvanuhelnik],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[obvod,0.01],TraditionalForm],barva],StandardForm],ToString[Style[" j",barva],StandardForm]],
pisobsah=StringJoin[ToString[Style["S",barvanuhelnik],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[obsah,0.01],TraditionalForm],barva],StandardForm],ToString[Style[" (j^2)",barva],StandardForm]]},
""];
If[b≥0,
znamenkob=" + ",
znamenkob=" - "];
piscislo=StringJoin[ToString[Style["z",barvacislo],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[a,StandardForm],barva],StandardForm],ToString[Style[znamenkob,barva],StandardForm],ToString[Style[ToString[Abs[b],StandardForm],barva],StandardForm],ToString[Style[" i",barva],StandardForm]];
pisabshodnotu=StringJoin[ToString[Style["|z|",barvacislo],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[abshodnota,StandardForm],barva],StandardForm]];
pisuhel=StringJoin[ToString[Style["φ",barvacislo],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[fi,TraditionalForm],barva],StandardForm],ToString[Style[ToString[jednotka],barva],StandardForm]];
If[n≠1,
pisrovnici=StringJoin[ToString[Style[Superscript["x",n],barva],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[a,StandardForm],barva],StandardForm],ToString[Style[znamenkob,barva],StandardForm],ToString[Style[ToString[Abs[b],StandardForm],barva],StandardForm],ToString[Style[" i",barva],StandardForm]],
pisrovnici=StringJoin[ToString[Style["x",barva],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[a,StandardForm],barva],StandardForm],ToString[Style[znamenkob,barva],StandardForm],ToString[Style[ToString[Abs[b],StandardForm],barva],StandardForm],ToString[Style[" i",barva],StandardForm]]];
pisreseni1=StringJoin[ToString[Style["|(Subscript[z, 0])|",barvacislo0],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[abshodnotareseni,0.01]],barva],StandardForm]];
pisreseni2=StringJoin[ToString[Style["(Subscript[φ, 0])",barvacislo0],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[finula,TraditionalForm],barva],StandardForm],ToString[Style[ToString[jednotka],barva],StandardForm]];

grafik=Show[
Graphics[{
If[zobrazitzadanecislo,
{barvacislo,PointSize[velikostbodu],cislo},
Text[""]],
{barvabod,PointSize[0.75velikostbodu],bodyreseni},
If[zobrazitreseni,
{barvacislo0,PointSize[0.8velikostbodu],bodreseni0},
Text[""]],
If[zobrazitnuhelnik∧n>2,
{barvanuhelnik,Thickness[0.7tloustka],stranynuhelnika},
Text[""]]
}],
FormatType->StandardForm,AspectRatio->Automatic,Axes->True,AxesLabel->{"Re","Im"},PlotRange->{{x1,x2},{y1,y2}},ImageSize->500
]],

{{n,n0,Style["n",15,barva,Italic]},nmin,nmax,deltan},
{{a,a0,Style["a",15,barva,Italic]},amin,amax,deltaa},
{{b,b0,Style["b",15,barva,Italic]},bmin,bmax,deltab},
Delimiter,
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitzadanecislo,True,Style["- zadané číslo",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitabshodnotu,True,Style["- absolutní hodnotu",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitreseni,True,Style["- řešení",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Item[Style["",15,barva,FontFamily->Times],Alignment->Left],
{{zobrazitnuhelnik,False,Style["- n-úhelník",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
{{jednotkyuhlu,"radiány",Style["jednotky úhlů",15,barva,FontFamily->Times]},{"radiány","stupně"},ControlType->RadioButton},
Delimiter,
Dynamic[
Grid[{
{Item[Style[piscislo,velikostpisma,barvacislo,FontFamily->Times],Alignment->Left]},
{If[zobrazitabshodnotu,
Item[Style[pisabshodnotu,velikostpisma,barvacislo,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitabshodnotu,
Item[Style[pisuhel,velikostpisma,barvacislo,FontFamily->Times],Alignment->Left],
""]},
{Item[Style["",10,barva,FontFamily->Times],Alignment->Left]},
{Item[Style[pisrovnici,velikostpisma,barvacislo,FontFamily->Times],Alignment->Left]},
{Item[Style["",velikostpisma,barva,FontFamily->Times],Alignment->Left]},
{If[zobrazitreseni,
Item[Style[pisreseni1,velikostpisma,barvacislo,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitreseni,
Item[Style[pisreseni2,velikostpisma,barvacislo,FontFamily->Times],Alignment->Left],
""]},
{Item[Style["",velikostpisma,barva,FontFamily->Times],Alignment->Left]},
{If[zobrazitnuhelnik∧n>2,
Item[Style[pisstranu,velikostpisma,barvanuhelnik,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitnuhelnik∧n>2,
Item[Style[pisobvod,velikostpisma,barvanuhelnik,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitnuhelnik∧n>2,
Item[Style[pisobsah,velikostpisma,barvanuhelnik,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, 2008",10,Black,FontFamily->Times],"",Style["Binomická rovnice v oboru ℂ",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.

BinomickaRovnice