Obsah plochy pod grafem funkce

Tento interaktivní notebook umožňuje pochopit výpočet obsahu plochy pod grafem spojité funkce. V notebooku je možné nastavit:
	a - počáteční bod intervalu, na kterém se uvedená plocha vyšetřuje;
	b - koncový bod tohoto intervalu;
	posun f - posun funkce f po ose y;
	posun g - posun funkce g po ose y;

Volitelně lze zobrazit:
	graf funkce f;
	graf funkce g;
	krajní body intervalu na ose x kartézského systému souřadnic, v němž je vykreslen graf vyšetřované funkce;
	typ plochy, která se v grafu vyznačí;
	popis - zobrazí se obsah v grafu vyznačené plochy vypočtený pomocí integrálu.

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 a Aleš Ryšavý, 2010

Příprava pro vykreslení grafu

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

x1=-10;x2=-x1;
y1=-10;y2=-y1;
stredy=((y1+y2)/2);deltay=(((x2-x1))/20);

c0=5;cmin=-10;cmax=10;deltac=1;
d0=3;dmin=-10;dmax=10;deltad=1;
a0=(x1/2);amin=x1;amax=x2;deltaa=(((x2-x1))/40);
b0=((3x2)/4);bmin=x1;bmax=x2;deltab=(((x2-x1))/40);

tloustka=0.005;
velikostbodu=0.02;
velikostpisma=17;

barva=Black;
barvafcef=Blue;
barvafceg=Darker[Orange];
barvabodu1=Darker[Red];
barvabodu2=Lighter[Red];
barvaplochypodf=Lighter[barvafcef,0.8];
barvaplochypodg=Lighter[barvafceg,0.8];
barvaplochy=Green;

minulea=a0;
minuleb=b0;

UrcityIntegralPlocha=Manipulate[Deploy[
(*funkcef[x_]:=10(((x+3)(x+1)(x-4))/(((x-50))^2))+c;
funkceg[x_]:=-10(((x+4)(x-1)(x-5))/(((x-40))^2))+d;*)
funkcef[x_]:=(3/2)(((x+2)(x-4))/(((3/2)x-50)))+c;
funkceg[x_]:=-(((x+6)(x-5))/((3/2)((x/3)-40)))+d;
If[a≥b,
If[minulea≠a,
a=b-deltaa,
b=a+deltab],
""];
minulea=a;
minuleb=b;
boda=Point[{a,stredy}];
bodb=Point[{b,stredy}];
pruvodica=Line[{{a,y1},{a,y2}}];
pruvodicb=Line[{{b,y1},{b,y2}}];
If[zobrazitplochu=="mezi f a g",
{barvavypisplocha=Darker[barvaplochy],
Splochy=Abs[(∫_a^b)(funkcef[x]-funkceg[x])\[DifferentialD]x]},
If[zobrazitplochu=="pod f",
{barvavypisplocha=barvafcef,
Splochy=Abs[(∫_a^b)funkcef[x]\[DifferentialD]x]},
If[zobrazitplochu=="pod g",
{barvavypisplocha=barvafceg,
Splochy=Abs[(∫_a^b)funkceg[x]\[DifferentialD]x]},
""]]];
pisobsah=StringJoin[ToString[Style["S",barvavypisplocha],StandardForm],ToString[Style[" = ",barva],StandardForm],ToString[Style[ToString[Round[Splochy,0.01]],barva],StandardForm],ToString[Style[" (j^2)",barva],StandardForm]];

grafik=Show[
If[zobrazitfcif,
Plot[funkcef[x],{x,x1,x2},PlotStyle->{Thickness[tloustka],barvafcef}],
Plot[1.1x1,{x,0,0.001},PlotStyle->{Thickness[0.0001],White}]],
If[zobrazitfcig,
Plot[funkceg[x],{x,x1,x2},PlotStyle->{Thickness[tloustka],barvafceg}],
Plot[1.1x1,{x,0,0.001},PlotStyle->{Thickness[0.0001],White}]],
If[zobrazitplochu=="pod f",
If[zobrazitfcif,
Plot[funkcef[x],{x,a,b},PlotStyle->{Thickness[tloustka],barvafcef},Filling->0,FillingStyle->Directive[Opacity[0.6],barvaplochypodf]],
Plot[1.1x1,{x,0,0.001},PlotStyle->{Thickness[0.0001],White}]],
If[zobrazitplochu=="pod g",
If[zobrazitfcig,
Plot[funkceg[x],{x,a,b},PlotStyle->{Thickness[tloustka],barvafceg},Filling->0,FillingStyle->Directive[Opacity[0.6],barvaplochypodg]],
Plot[1.1x1,{x,0,0.001},PlotStyle->{Thickness[0.0001],White}]],
If[zobrazitplochu=="mezi f a g",
If[zobrazitfcif∧zobrazitfcig,
Plot[{funkcef[x],funkceg[x]},{x,a,b},PlotStyle->{{Thickness[tloustka],barvafcef},{Thickness[tloustka],barvafceg}},Filling->1->{2},FillingStyle->Directive[Opacity[0.6],Lighter[barvaplochy,0.8]]],
Plot[1.1x1,{x,0,0.001},PlotStyle->{Thickness[0.0001],White}]],
Text[""]]]],

Graphics[{
If[zobrazitkrajnibody,
{{barva,Thickness[0.5tloustka],Dotted,pruvodica},
{barvabodu1,PointSize[velikostbodu],boda},
{barva,Thickness[0.5tloustka],Dotted,pruvodicb},
{barvabodu2,PointSize[velikostbodu],bodb}},
Text[""]],
If[zobrazitpopis,
{If[zobrazitfcif,
Text[Style["f",15,barvafcef,FontFamily->Times,Bold],{x2,funkcef[x2]+deltay},{Right,Center}],
Text[""]],
If[zobrazitfcig,
Text[Style["g",15,barvafceg,FontFamily->Times,Bold],{x1,funkceg[x1]+deltay},{Left,Center}],
Text[""]]},
Text[""]]
}],
FormatType->StandardForm,AspectRatio->Automatic,PlotRange->{{x1,x2},{y1,y2}},AxesOrigin->{0,0},AxesLabel->{Style["x",barva,15,FontFamily->Times],Style["y",barva,15,FontFamily->Times]},ImageSize->500
]],

{{a,a0,Style["a",15,barvabodu1]},amin,amax,deltaa},
{{b,b0,Style["b",15,barvabodu2]},bmin,bmax,deltab},
Delimiter,
{{c,c0,Style["posun f",15,barvafcef]},cmin,cmax,deltac},
{{d,d0,Style["posun g",15,barvafceg]},dmin,dmax,deltad},
Delimiter,
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitfcif,True,Style[" - funkci f",15,barvafcef,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitfcig,True,Style[" - funkci g",15,barvafceg,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitkrajnibody,True,Style[" - kraje intervalu",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitplochu,"pod f",Style["- plochu",15,barva,FontFamily->Times]},{"žádná","pod f","pod g", "mezi f a g"},
ControlType->RadioButton},
{{zobrazitpopis,True,Style[" - popis",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Dynamic[
Grid[{
{If[zobrazitpopis∧((zobrazitplochu=="pod f"∧zobrazitfcif)∨(zobrazitplochu=="pod g"∧zobrazitfcig)∨(zobrazitplochu=="mezi f a g"∧zobrazitfcif∧zobrazitfcig)),
Item[Style[pisobsah,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 a Aleš Ryšavý, 2010",10,Black,FontFamily->Times],"",Style["Obsah plochy pod grafem funkce",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.

UrcityIntegralPlocha