Taylorův rozvoj funkce

Následující interaktivní notebook zobrazuje Taylorův rozvoj vybraných funkcí: lineární, kvadratická, kubická, sinus, kosinus, tangens, kotangens, exponenciální a logaritmická (obě poslední se základem e).
Volitelně lze měnit:
	vybranou funkci;
	bod (Subscript[x, 0]), v němž se zadaná funkce nahrazuje Taylorovým rozvojem;
	stupeň n Taylorova polynomu.

Volitelně lze zobrazit:
	graf vybrané funkce;
	graf Taylorova polynomu;
	bod (Subscript[x, 0]);
	výpis souřadnice bodu (Subscript[x, 0]) a předpisu Taylorova polynomu.

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

Příprava pro vykreslení grafu

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

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

n0=1;nmin=1;nmax=15;deltan=1;
x00=0;x0min=x1;x0max=x2;deltax0=(1/2);

tloustka=0.005;
velikostbodu=0.02;

barva=Black;
barvafce=Blue;
barvataylor=Red;
barvabodu=Darker[Green];

seznamfci={"y = x","y = (x^2)","y = (x^3)","y = sin (x)","y = cos (x)","y = tg (x)","y = cotg (x)","y = (e^x)","y = ln (x)"};
funkcedefce[x_]:={
x,
(x^2),
(x^3),
Sin[x],
Cos[x],
Tan[x],
Cot[x],
(E^x),
Log[x]
};
defaultnifce=seznamfci[[4]];

TayloruvPolynom=Manipulate[Deploy[
For[i=1,i≤Length[seznamfci],i++,
If[vybranafce==seznamfci[[i]],
{cislofce=i,
Break[]},
""]];
funkce[x_]:=funkcedefce[x][[cislofce]];
funkcetaylor[x_]=Normal[Series[funkce[x],{x,x0,n}]];
If[cislofce==6,
{problemdefoboru={Cos[x]==0},
If[Cos[x0]≠0,
zobrazitbod=True,
zobrazitbod=False]},
If[cislofce==7,
{problemdefoboru={Sin[x]==0},
If[Sin[x0]≠0,
zobrazitbod=True,
zobrazitbod=False]},
If[cislofce==9,
{problemdefoboru={x==0},
If[x0>0,
zobrazitbod=True,
zobrazitbod=False]},
{problemdefoboru={x==x1},
zobrazitbod=True}]]];
If[zobrazitbod,
bodx0=Point[{x0,funkce[x0]}],
""];

pisbodx0=StringJoin[ToString[Style["(Subscript[x, 0])",barvabodu],StandardForm],ToString[Style[" = [",barva],StandardForm],ToString[Style[ToString[x0,StandardForm],barvabodu],StandardForm],ToString[Style["; ",barva],StandardForm],ToString[Style[ToString[Round[funkce[x0],0.01]],barvabodu],StandardForm],ToString[Style["] ",barva],StandardForm]];
pispredpisfce=StringJoin[ToString[Style["(Subscript[f, Taylor]): y = ",barva],StandardForm],ToString[Style[ToString[funkcetaylor[x],StandardForm],barvataylor],StandardForm]];

grafik=Show[
If[zobrazitfunkci,
Plot[funkce[x],{x,x1,x2},PlotStyle->{barvafce,Thickness[tloustka]},Exclusions->problemdefoboru],
Plot[1.1x1,{x,0,0.001},PlotStyle->{White}]],
If[zobrazittaylora,
Plot[funkcetaylor[x],{x,x1,x2},PlotStyle->{barvataylor,Thickness[tloustka]}],
Plot[1.1x1,{x,0,0.001},PlotStyle->{White}]],
Graphics[{
If[zobrazitbodx0∧zobrazitbod,
{barvabodu,PointSize[velikostbodu],bodx0},
Text[""]]
}],
FormatType->StandardForm,AspectRatio->Automatic,AxesOrigin->{0,0},AxesLabel->{Style["x",15,barva,FontFamily->Times],Style["y",15,barva,FontFamily->Times]},Ticks->None,PlotRange->{{x1,x2},{y1,y2}},ImageSize->500
]],

{{vybranafce,defaultnifce,Style["funkce",15,barva,FontFamily->Times]},seznamfci,ControlType->PopupMenu},
{{x0,x00,Style["(Subscript[x, 0])",15,barva]},x0min,x0max,deltax0},
{{n,n0,Style["n",15,barva]},nmin,nmax,deltan},
Delimiter,
Item[Style["Zobrazit",20,barva,FontFamily->Times,Bold,Underlined],Alignment->Left],
{{zobrazitfunkci,True,Style["- funkci",15,barvafce,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazittaylora,True,Style["- Taylor",15,barvataylor,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitbodx0,True,Style["- bod (Subscript[x, 0])",15,barvabodu,FontFamily->Times]},{True,False},ControlType->Checkbox},
{{zobrazitpopis,True,Style["- popis",15,barva,FontFamily->Times]},{True,False},ControlType->Checkbox},
Delimiter,
Dynamic[
Grid[{
{If[zobrazitpopis∧zobrazitbodx0∧zobrazitbod,
Item[Style[pisbodx0,15,barva,FontFamily->Times],Alignment->Left],
""]},
{If[zobrazitpopis∧zobrazittaylora,
Item[Style[pispredpisfce,15,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, 2010",10,Black,FontFamily->Times],"",Style["Taylorův rozvoj",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.

TayloruvPolynom