Zobrazení intervalu, průnik a sjednocení

Tento interaktivní notebook umožňuje zobrazit dva intervaly na číselné ose a jejich sjednocení a průnik.

Pomocí posuvníků lze nastavit dolní a horní mez obou intervalů. Pomocí zaškrtávacích tlačítek lze měnit incidenci krajního bodu intervalu v tomto intervalu a omezenost intervalu. V závislosti na těchto parametrech se pak oba intervaly interaktivně vykreslují.

Volitelně lze zobrazit:
	1. interval;
	2. interval;
	průnik obou intervalů;
	sjednocení obou intervalů;
	výpis množinového zápisu obou intervalů, průniku i sjednocení.

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

xmin=-10;xmax=10;
ymin=-8;ymax=10;
ybod1=0.25ymax;ybod2=0.5ymax;(*y-ová souřadnice vykreslovaných krajních bodů inervalu.*)
ybodsjednoceni=0.75ymax;(*y-ová souřadnice vykreslovaných krajních bodů sjednocení obou intervalů.*)
ybodpruniku=ymax;(*y-ová souřadnice vykreslovaných krajních bodů průniku obou intervalů.*)
deltavypis=0.2ymin;

polomer=0.25;(*Poloměr vykreslovaných krajních bodů intervalu.*)
velikostpisma=20;

a0=xmin;amin=xmin;amax=xmax;delta=(xmax/10);
b0=0;bmin=xmin;bmax=xmax;
c0=(xmin/2);cmin=xmin;cmax=xmax;
d0=(xmax/2);dmin=xmin;dmax=xmax;

velikostsipky=0.05;
tloustka=0.005;
barva=Black;
barva1=Blue;
barva2=Orange;
barvapruniku=Red;
barvasjednoceni=Magenta;

osax={
Arrowheads[{0,velikostsipky}],
Arrow[{{1.1xmin,0},{1.2xmax,0}}]};
aminule=a0;bminule=b0;cminule=c0;dminule=d0;

Intervaly=Manipulate[
If[a≥b,
If[aminule≠a,
a=b-delta,
b=a+delta],
""];
If[c≥d,
If[cminule≠c,
c=d-delta,
d=c+delta],
""];
aminule=a;bminule=b;cminule=c;dminule=d;
interval1vycet=Table[a+i ,{i,0,b-a,delta}];
interval2vycet=Table[c+i ,{i,0,d-c,delta}];
sjednoceni=Union[interval1vycet,interval2vycet];
prunik=Intersection[interval1vycet,interval2vycet];
delkasjednoceni=Length[sjednoceni];
delkapruniku=Length[prunik];

If[pocatek1=="(-∞",
{a=amin,
vypisdolnimeze1=ToString[Style[pocatek1,barva],StandardForm],
kreslibod11={
Arrowheads[{0,velikostsipky}],
Arrow[{{a+polomer,ybod1},{a-delta,ybod1}}]},
kreslipruvodic11=Line[{{1.5amin,ybod1},{1.5amin,0.9999ybod1}}]},
{If[pocatek1=="(",
kreslibod11=Circle[{a,ybod1},polomer],
kreslibod11=Disk[{a,ybod1},polomer]],
kreslipruvodic11=Line[{{a,ybod1-polomer},{a,0}}],
vypisdolnimeze1=StringJoin[ToString[Style[pocatek1,barva],StandardForm],ToString[Style[ToString[a],barva1],StandardForm]]}];
If[konec1=="∞)",
{b=bmax,
vypishornimeze1=ToString[Style[konec1,barva],StandardForm],
kreslibod12={
Arrowheads[{0,velikostsipky}],
Arrow[{{b-polomer,ybod1},{b+delta,ybod1}}]},
kreslipruvodic12=Line[{{1.5bmax,ybod1},{1.5bmax,0.9999ybod1}}]},
{If[konec1==")",
kreslibod12=Circle[{b,ybod1},polomer],
kreslibod12=Disk[{b,ybod1},polomer]],
kreslipruvodic12=Line[{{b,ybod1-polomer},{b,0}}],
vypishornimeze1=StringJoin[ToString[Style[ToString[b],barva1],StandardForm],ToString[Style[konec1,barva],StandardForm]]}];
kreslispojnici1=Line[{{a+polomer,ybod1},{b-polomer,ybod1}}];
If[pocatek2=="(-∞",
{c=cmin,
vypisdolnimeze2=ToString[Style[pocatek2,barva],StandardForm],
kreslibod21={
Arrowheads[{0,velikostsipky}],
Arrow[{{c+polomer,ybod2},{c-delta,ybod2}}]},
kreslipruvodic21=Line[{{1.5cmin,ybod2},{1.5cmin,0.9999ybod2}}]},
{If[pocatek2=="(",
kreslibod21=Circle[{c,ybod2},polomer],
kreslibod21=Disk[{c,ybod2},polomer]],
kreslipruvodic21=Line[{{c,ybod2-polomer},{c,0}}],
vypisdolnimeze2=StringJoin[ToString[Style[pocatek2,barva],StandardForm],ToString[Style[ToString[c],barva1],StandardForm]]}];
If[konec2=="∞)",
{d=bmax,
vypishornimeze2=ToString[Style[konec2,barva],StandardForm],
kreslibod22={
Arrowheads[{0,velikostsipky}],
Arrow[{{d-polomer,ybod2},{d+delta,ybod2}}]},
kreslipruvodic22=Line[{{1.5dmax,ybod2},{1.5dmax,0.9999ybod2}}]},
{If[konec2==")",
kreslibod22=Circle[{d,ybod2},polomer],
kreslibod22=Disk[{d,ybod2},polomer]],
kreslipruvodic22=Line[{{d,ybod1-polomer},{d,0}}],
vypishornimeze2=StringJoin[ToString[Style[ToString[d],barva1],StandardForm],ToString[Style[konec2,barva],StandardForm]]}];
kreslispojnici2=Line[{{c+polomer,ybod2},{d-polomer,ybod2}}];

If[pocatek1=="(-∞"∨pocatek2=="(-∞",
{pocateksjednoceni=ToString[Style["(-∞",barva],StandardForm],
kreslibodsjednoceni1={
Arrowheads[{0,velikostsipky}],
Arrow[{{sjednoceni[[1]]+polomer,ybodsjednoceni},{sjednoceni[[1]]-delta,ybodsjednoceni}}]},
kreslipruvodicsjednoceni1=Line[{{1.5amin,ybod1},{1.5amin,0.9999ybod1}}]},
{kreslipruvodicsjednoceni1=Line[{{sjednoceni[[1]],ybodsjednoceni-polomer},{sjednoceni[[1]],0}}],
If[(pocatek1=="⟨"∧a≤c)∨(pocatek2=="⟨"∧c≤a),
{kreslibodsjednoceni1=Disk[{sjednoceni[[1]],ybodsjednoceni},polomer],
pocateksjednoceni=StringJoin[ToString[Style["⟨",barva],StandardForm],ToString[Style[ToString[sjednoceni[[1]]],barvasjednoceni],StandardForm]]},
{kreslibodsjednoceni1=Circle[{sjednoceni[[1]],ybodsjednoceni},polomer],
pocateksjednoceni=StringJoin[ToString[Style["(",barva],StandardForm],ToString[Style[ToString[sjednoceni[[1]]],barvasjednoceni],StandardForm]]}]}];
If[konec1=="∞)"∨konec2=="∞)",
{konecsjednoceni=ToString[Style["∞)",barva],StandardForm],
kreslibodsjednoceni2={
Arrowheads[{0,velikostsipky}],
Arrow[{{sjednoceni[[delkasjednoceni]]-polomer,ybodsjednoceni},{sjednoceni[[delkasjednoceni]]+delta,ybodsjednoceni}}]},
kreslipruvodicsjednoceni2=Line[{{1.5amin,ybod1},{1.5amin,0.9999ybod1}}]},
{kreslipruvodicsjednoceni2=Line[{{sjednoceni[[delkasjednoceni]],ybodsjednoceni-polomer},{sjednoceni[[delkasjednoceni]],0}}],
If[(konec1=="⟩"∧d≤b)∨(konec2=="⟩"∧b≤d),
{kreslibodsjednoceni2=Disk[{sjednoceni[[delkasjednoceni]],ybodsjednoceni},polomer],
konecsjednoceni=StringJoin[ToString[Style[ToString[sjednoceni[[delkasjednoceni]]],barvasjednoceni],StandardForm],ToString[Style["⟩",barva],StandardForm]]},
{kreslibodsjednoceni2=Circle[{sjednoceni[[delkasjednoceni]],ybodsjednoceni},polomer],
konecsjednoceni=StringJoin[ToString[Style[ToString[sjednoceni[[delkasjednoceni]]],barvasjednoceni],StandardForm],ToString[Style[")",barva],StandardForm]]}]}];
kreslispojnicisjednoceni=Line[{{sjednoceni[[1]]+polomer,ybodsjednoceni},{sjednoceni[[delkasjednoceni]]-polomer,ybodsjednoceni}}];

If[delkapruniku≥1,
{If[pocatek1=="(-∞"∧pocatek2=="(-∞",
{pocatekpruniku=ToString[Style["(-∞",barva],StandardForm],
kreslibodpruniku1={
Arrowheads[{0,velikostsipky}],
Arrow[{{prunik[[1]]+polomer,ybodpruniku},{prunik[[1]]-delta,ybodpruniku}}]},
kreslipruvodicpruniku1=Line[{{1.5amin,ybod1},{1.5amin,0.9999ybod1}}]},
{kreslipruvodicpruniku1=Line[{{prunik[[1]],ybodpruniku-polomer},{prunik[[1]],0}}],
If[(pocatek1=="⟨"∧c<a)∨(pocatek2=="⟨"∧a<c)∨(pocatek1=="⟨"∧pocatek2=="⟨"∧a==c)∨(pocatek1=="(-∞"∧pocatek2=="⟨"∧a==c)∨(pocatek1=="⟨"∧pocatek2=="(-∞"∧a==c),
{kreslibodpruniku1=Disk[{prunik[[1]],ybodpruniku},polomer],
pocatekpruniku=StringJoin[ToString[Style["⟨",barva],StandardForm],ToString[Style[ToString[prunik[[1]]],barvapruniku],StandardForm]]},
{kreslibodpruniku1=Circle[{prunik[[1]],ybodpruniku},polomer],
pocatekpruniku=StringJoin[ToString[Style["(",barva],StandardForm],ToString[Style[ToString[prunik[[1]]],barvapruniku],StandardForm]]}]}],
If[konec1=="∞)"∧konec2=="∞)",
{konecpruniku=ToString[Style["∞)",barva],StandardForm],
kreslibodpruniku2={
Arrowheads[{0,velikostsipky}],
Arrow[{{prunik[[delkapruniku]]+polomer,ybodpruniku},{prunik[[delkapruniku]]+delta,ybodpruniku}}]},
kreslipruvodicpruniku2=Line[{{1.5amin,ybod1},{1.5amin,0.9999ybod1}}]},
{kreslipruvodicpruniku2=Line[{{prunik[[delkapruniku]],ybodpruniku-polomer},{prunik[[delkapruniku]],0}}],
If[(konec1=="⟩"∧b<d)∨(konec2=="⟩"∧d<b)∨(konec1=="⟩"∧konec2=="⟩"∧d==b)∨(konec1=="∞)"∧konec2=="⟩"∧d==b)∨(konec1=="⟩"∧konec2=="∞)"∧d==b),
{kreslibodpruniku2=Disk[{prunik[[delkapruniku]],ybodpruniku},polomer],
konecpruniku=StringJoin[ToString[Style[ToString[prunik[[delkapruniku]]],barvapruniku],StandardForm],ToString[Style["⟩",barva],StandardForm]]},
{kreslibodpruniku2=Circle[{prunik[[delkapruniku]],ybodpruniku},polomer],
konecpruniku=StringJoin[ToString[Style[ToString[prunik[[delkapruniku]]],barvapruniku],StandardForm],ToString[Style[")",barva],StandardForm]]}]}],
kreslispojnicipruniku=Line[{{prunik[[1]]+polomer,ybodpruniku},{prunik[[delkapruniku]]-polomer,ybodpruniku}}]},
""];

vypisintervalu1=StringJoin[ToString[Style["(Subscript[I, 1])",barva1],StandardForm],ToString[Style[" = ",barva],StandardForm],vypisdolnimeze1,ToString[Style["; ",barva],StandardForm],vypishornimeze1];
vypisintervalu2=StringJoin[ToString[Style["(Subscript[I, 2])",barva2],StandardForm],ToString[Style[" = ",barva],StandardForm],vypisdolnimeze2,ToString[Style["; ",barva],StandardForm],vypishornimeze2];
vypissjednoceni=StringJoin[ToString[Style["(Subscript[I, 1]) ⋃ (Subscript[I, 2])",barvasjednoceni],StandardForm],ToString[Style[" = ",barva],StandardForm],pocateksjednoceni,ToString[Style["; ",barva],StandardForm],konecsjednoceni];
If[delkapruniku>1,
vypispruniku=StringJoin[ToString[Style["(Subscript[I, 1]) ⋂ (Subscript[I, 2])",barvapruniku],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[pocatekpruniku,barva],StandardForm],ToString[Style["; ",barva],StandardForm],ToString[Style[konecpruniku,barva],StandardForm]],
If[delkapruniku==1∧((konec1=="⟩"∧pocatek2=="⟨")∨(konec2=="⟩"∧pocatek1=="⟨")),
vypispruniku=StringJoin[ToString[Style["(Subscript[I, 1]) ⋂ (Subscript[I, 2])",barvapruniku],StandardForm],ToString[Style[" = {",barva],StandardForm],ToString[Style[ToString[prunik[[1]]],barvapruniku],StandardForm],ToString[Style["}",barva],StandardForm]],
vypispruniku=StringJoin[ToString[Style["(Subscript[I, 1]) ⋂ (Subscript[I, 2])",barvapruniku],StandardForm],ToString[Style[" = ∅",barva],StandardForm]]]];

Graphics[{
{barva,Thickness[1.5tloustka],osax},
Text[Style["x",15,barva,FontFamily->Times],{1.2xmax,0.02ymin},{Center,Top}],
If[zobrazitprvniinterval,
{{barva1,Thickness[tloustka],kreslibod11},
{barva1,Thickness[tloustka],kreslibod12},
{barva1,Thickness[tloustka],kreslispojnici1},
{barva,Dotted,Thickness[0.5tloustka],kreslipruvodic11},
{barva,Dotted,Thickness[0.5tloustka],kreslipruvodic12}},
Text[""]],
If[zobrazitdruhyinterval,
{{barva2,Thickness[tloustka],kreslibod21},
{barva2,Thickness[tloustka],kreslibod22},
{barva2,Thickness[tloustka],kreslispojnici2},
{barva,Dotted,Thickness[0.5tloustka],kreslipruvodic21},
{barva,Dotted,Thickness[0.5tloustka],kreslipruvodic22}},
Text[""]],
If[zobrazitprunik∧zobrazitprvniinterval∧zobrazitdruhyinterval,
If[delkapruniku>1,
{{barvapruniku,Thickness[tloustka],kreslibodpruniku1},
{barvapruniku,Thickness[tloustka],kreslibodpruniku2},
{barvapruniku,Thickness[tloustka],kreslispojnicipruniku},
{barva,Dotted,Thickness[0.5tloustka],kreslipruvodicpruniku1},
{barva,Dotted,Thickness[0.5tloustka],kreslipruvodicpruniku2}},
If[delkapruniku==1,
{If[(konec1=="⟩"∧pocatek2=="⟨")∨(konec2=="⟩"∧pocatek1=="⟨"),
{barvapruniku,Thickness[tloustka],Disk[{prunik[[1]],ybodpruniku},polomer]},
{barvapruniku,Thickness[tloustka],Circle[{prunik[[1]],ybodpruniku},polomer]}],
{barva,Dotted,Thickness[0.5tloustka],kreslipruvodicpruniku1}},
Text[""]]],
Text[""]],
If[zobrazitsjednoceni∧zobrazitprvniinterval∧zobrazitdruhyinterval,
{{barvasjednoceni,Thickness[tloustka],kreslibodsjednoceni1},
{barvasjednoceni,Thickness[tloustka],kreslibodsjednoceni2},
{barvasjednoceni,Thickness[tloustka],kreslispojnicisjednoceni},
{barva,Dotted,Thickness[0.5tloustka],kreslipruvodicsjednoceni1},
{barva,Dotted,Thickness[0.5tloustka],kreslipruvodicsjednoceni2}},
Text[""]],

If[zobrazitvypis,
{If[zobrazitprvniinterval,
{Text[Style[vypisintervalu1,barva,velikostpisma,FontFamily->Times],{xmin,2deltavypis},{Left,Center}],
If[pocatek1≠"(-∞",
Text[Style[ToString[a],15,barva1,FontFamily->Times],{a,0.02ymin},{Center,Top}],
Text[""]],
If[konec1≠"∞)",
Text[Style[ToString[b],15,barva1,FontFamily->Times],{b,0.02ymin},{Center,Top}],
Text[""]]},
Text[""]],
If[zobrazitdruhyinterval,
{Text[Style[vypisintervalu2,barva,velikostpisma,FontFamily->Times],{xmin,3deltavypis},{Left,Center}],
If[pocatek2≠"(-∞",
Text[Style[ToString[c],15,barva2,FontFamily->Times],{c,0.02ymin},{Center,Top}],
Text[""]],
If[konec2≠"∞)",
Text[Style[ToString[d],15,barva2,FontFamily->Times],{d,0.02ymin},{Center,Top}],
Text[""]]},
Text[""]],
If[zobrazitsjednoceni∧zobrazitprvniinterval∧zobrazitdruhyinterval,
Text[Style[vypissjednoceni,barva,velikostpisma,FontFamily->Times],{xmin,4deltavypis},{Left,Center}],
Text[""]],
If[zobrazitprunik∧zobrazitprvniinterval∧zobrazitdruhyinterval,
Text[Style[vypispruniku,barva,velikostpisma,FontFamily->Times],{xmin,5deltavypis},{Left,Center}],
Text[""]]},
Text[""]]
},PlotRange->{{1.2xmin,1.3xmax},{1.1ymin,1.1ymax}}],

Item[Style["První interval",15,barva1,FontFamily->Times],Alignment->Left],
{{a,a0,Style["a",15,barva]},amin,amax,delta},
{{b,b0,Style["b",15,barva]},bmin,bmax,delta},
{{pocatek1,"(",Style["počáteční bod",15,barva,FontFamily->Times]},{"(","⟨","(-∞"},ControlType->RadioButton},
{{konec1,")",Style["koncový bod",15,barva,FontFamily->Times]},{")","⟩","∞)"},ControlType->RadioButton},
Delimiter,
Item[Style["Druhý interval",15,barva2,FontFamily->Times],Alignment->Left],
{{c,c0,Style["c",15,barva]},cmin,cmax,delta},
{{d,d0,Style["d",15,barva]},dmin,dmax,delta},
{{pocatek2,"(",Style["počáteční bod",15,barva,FontFamily->Times]},{"(","⟨","(-∞"},ControlType->RadioButton},
{{konec2,")",Style["koncový bod",15,barva,FontFamily->Times]},{")","⟩","∞)"},ControlType->RadioButton},
Delimiter,
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitprvniinterval,True,Style["- 1. interval",15,barva1,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitdruhyinterval,True,Style["- 2. interval",15,barva2,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitprunik,True,Style["- průnik",15,barvapruniku,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitsjednoceni,True,Style["- sjednocení",15,barvasjednoceni,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitvypis,True,Style["- výpis",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
ControlPlacement->Left,
FrameLabel->{Style["© Jaroslav Reichl, 2011",10,Black,FontFamily->Times],"",Style["Zobrazení intervalu, průnik a sjednocení",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.

Intervaly