Heineho věta

Tomáš Kalvoda, KAM FIT ČVUT, ZS 2013/2014

Heineho věta nám nám ukazuje jak mezi sebou souvisí pojmy “limita posloupnosti” a “limita funkce”. Přesné znění této věty je následující:

Věta: Buď f reálná funkce reálné proměnné, body a,c∈(OverBar[ℝ]), a funkce f definovaná na okolí bodu a s možnou vyjímkou bodu a samotného. Potom platí (lim_(x->∞))f(x)=a právě tehdy, když pro každou posloupnost ((Subscript[x, n])), jejíž každý člen patří do množiny (Subscript[D, f]) vyjma bod a, konvergující k a platí (lim_(n->∞))f((Subscript[x, n])).

Velmi hrubě můžeme říci, že (lim_(x->a))f(x)=c právě tehdy, když limita posloupnosti (f((Subscript[x, n]))) je rovna c nezávisle na způsobu jakým se posloupnost ((Subscript[x, n])) blíží k bodu a.

Neexistence limity funkce sin(1/x) když x->0

Nadefinujme si naší funkci.

f[x_]=Sin[1/x];

A podívejme se na její graf.

Plot[
f[x],{x,-.5,.5},
PlotStyle->Black,
Frame->True,
PlotRange->{-1.1,1.1},
PlotPoints->100,MaxRecursion->10, (* vetsi presnost vykreslovani, vizte napovedu *)
ImageSize->500,
FrameLabel->{x,TraditionalForm[y==f[x]]}
]

Z obrázku vidíme, že tato funkce velmi osciluje, když se nezávisle proměnná x blíží k bodu 0. Jak je to s její limitou v bodě nula? To, že na obrázku vidíme jen černý flek nic neznamená, co když na vhodně zvolené horizontální škále již funkce “zkonverguje” do nuly?

Zoom

Pokusme se podívat na menší okolí bodu nula, je snadné předchozí obrázek rozpohybovat. Vidíme, že chování u nuly je zřejmě velmi divoké.

Manipulate[
Plot[
f[x],{x,-radius,radius},
PlotStyle->Black,
Frame->True,
PlotRange->{-1.1,1.1},
PlotPoints->100,MaxRecursion->10,
ImageSize->500,
FrameLabel->{x,TraditionalForm[y==Sin[1/x]]}
],
{{radius,.5,"Ploměr okolí nuly:"},0.01,.5}
]

Dvě vhodné posloupnosti

Zvolme dvě posloupnosti.

(* Definice posloupnosti *)
x[n_]=(1/(2π n));z[n_]=(1/(2π n +(π/2)));

Obě patří do definičního oboru naší funkce ((Subscript[D, f])=ℝ-{0}), obě očividně konvergují k nule. Otestujme si tyto vlastnosti pomocí Mathematica.

(* Konvergence k nule *)
Limit[x[n],n->∞]
Limit[z[n],n->∞]

Zároveň jsou různé od nuly.

(* Nenulovost (vzpomente, ze bod kde resime limitu je 0) *)
Simplify[x[n]≠0,n∈Integers]
Simplify[z[n]≠0,n∈Integers]

Avšak pro limity jejich obrazů máme.

(* Limity funkcnich hodnot ? *)
Limit[f[x[n]],n->∞]
Limit[f[z[n]],n->∞]

Copak? Mathematica nepředpokládá, že by n bylo přirozené číslo. Uvažuje reálné n a pak ovšem příkaz Limit vrací všechny hromadné body dané funkce v ∞, což jak je z grafu nahoře patrné, je celý interval ⟨-1,1⟩. Pokud nás zajímá limita funkčních hodnot, musíme být přesnější:

(* Limity funkcnich hodnot *)
Limit[f[x[n]],n->∞,Assumptions->{n∈Integers}]
Limit[f[z[n]],n->∞,Assumptions->{n∈Integers}]

Ve skutečnosti se jedná o konstatní posloupnosti (tak jsme je vlastně na přednášce i volili).

Simplify[f[x[n]],n∈Integers]
Simplify[f[z[n]],n∈Integers]

Následuje opět grafické interaktivní znázornění. Vizte komentář níže.

Manipulate[
Plot[
f[x],{x,-.1,.1},
PlotStyle->Black,
Frame->True,
PlotRange->{-1.1,1.1},
PlotPoints->100,MaxRecursion->10,
ImageSize->500,
FrameLabel->{x,TraditionalForm[y==f[x]]},
Epilog->{
Red,Disk[{x[n],f[x[n]]},.003{1/1.1,1/.1}],
Blue,Disk[{z[n],f[z[n]]},.003{1/1.1,1/.1}]
},
AspectRatio->1
],
{{n,2,Style["n",Italic]},1,100,1}
]

Červené puntíky označují body o souřadnicích ((Subscript[x, n]),f((Subscript[x, n]))), modré puntíky označují body o souřadnicích ((Subscript[z, n]),f((Subscript[z, n]))). V demonstraci můžeme manipulovat indexem n. Vidíme, že když se n zvětšuje, pak x-ové souřadnice bodů konvergují k nule ((Subscript[x, n])->0 a (Subscript[z, n])->0 když n->∞) a posloupnosti y-nových souřadnic, tedy funkčních hodnot, (f((Subscript[x, n])))a (f((Subscript[z, n]))) konvergují po řadě k 1 a 0. Podle Heineho věty proto limita funkce f v bodě 0 neexistuje.

Dodatek: Vidíte, že kdybychom zvolili posloupnost jinak, mohli bychom jako limitu dostat libovolné číslo z intervalu ⟨-1,1⟩. V následující demonstraci jsme naschvál zhoršili kvalitu vykreslování. Pak dostáváme hbytější rozhranní, ale nepřesnější obrázky.

Manipulate[
Plot[
f[x],{x,-.1,.1},
PlotStyle->Black,
Frame->True,
PlotRange->{-1.1,1.1},
PlotPoints->80,MaxRecursion->5,
ImageSize->500,
FrameLabel->{x,TraditionalForm[y==f[x]]},
Epilog->{
Red,Disk[{(1/(ArcSin[c]+2π n)),f[(1/(ArcSin[c]+2π n))]},.003{1/1.1,1/.1}]
},
AspectRatio->1,
GridLines->{None,{c}},
GridLinesStyle->Directive[{Red,Dashed}]
],
{{n,2,Style["n",Italic]},1,100,1},
{{c,.5,Style["c",Italic]},-1,1,.1}
]

Existence limity funkce x sin(1/x) když x->0

Nadefinujme si naší funkci.

g[x_]=x Sin[1/x];

A podívejme se na její graf.

Plot[
g[x],{x,-.5,.5},
PlotStyle->Black,
Frame->True,
PlotRange->{-.23,.23},
PlotPoints->100,MaxRecursion->10, (* vetsi presnost vykreslovani, vizte napovedu *)
ImageSize->500,
FrameLabel->{x,TraditionalForm[y==g[x]]}
]

Z obrázku vidíme, že tato funkce sice pořád velmi osciluje okolo nuly, když se nezávisle proměnná x blíží k bodu 0. Ale díky tomu, že se násobí nezávisle proměnnou x, tak je tato oscilace utolumena. Odhadujeme proto, že limita v nule existuje. To je jak již víme pravda, díky Větě o limitě sevřené funkce. Podívejme se na tento problém z pohledu Heineho věty.

Dvě vhodné posloupnosti

Zvolme opět dvě posloupnosti, stejně jako v minulém odstavci.

(* Definice posloupnosti *)
x[n_]=(1/(2π n));z[n_]=(1/(2π n +(π/2)));

Připomeňme, že obě patří do definičního oboru naší funkce ((Subscript[D, f])=ℝ-{0}), obě očividně konvergují k nule. Otestujme si tyto vlastnosti pomocí Mathematica.

Avšak pro limity jejich obrazů máme.

(* Limity funkcnich hodnot ? *)
Limit[g[x[n]],n->∞]
Limit[g[z[n]],n->∞]

Všiměnte si, že teď jsme ani nemuseli specifikovat přirozenost n.

Manipulate[
Plot[
g[x],{x,-.5,.5},
PlotStyle->Black,
Frame->True,
PlotRange->{-.22,.22},
PlotPoints->100,MaxRecursion->10,
ImageSize->500,
FrameLabel->{x,TraditionalForm[y==g[x]]},
Epilog->{
Red,Disk[{x[n],g[x[n]]},.002{1/.22,1/.5}],
Blue,Disk[{z[n],g[z[n]]},.002{1/.22,1/.5}]
},
AspectRatio->1
],
{{n,2,Style["n",Italic]},1,100,1}
]

Červené puntíky označují body o souřadnicích ((Subscript[x, n]),g((Subscript[x, n]))), modré puntíky označují body o souřadnicích ((Subscript[z, n]),g((Subscript[z, n]))). V demonstraci můžeme manipulovat indexem n. Vidíme, že když se n zvětšuje, pak x-ové souřadnice bodů konvergují k nule ((Subscript[x, n])->0 a (Subscript[z, n])->0 když n->∞) a posloupnosti y-nových souřadnic, tedy funkčních hodnot, (g((Subscript[x, n])))a (g((Subscript[z, n]))) konvergují obě k 0.

Dodatek: Vidíme, že kdybychom zvolili posloupnost jinak, dostaneme jako limitu funkčních hodnot vždy 0. Skutečně. Buď ((Subscript[u, n])) libovolná posloupnost nenulových členů konvergující k bodu 0. Potom 0≤|g((Subscript[u, n]))|=|(Subscript[u, n])sin(1/(Subscript[u, n]))|≤|(Subscript[u, n])|->0, když n->∞. Podle věty o limitě sevřené posloupnosti proto je limita posloupnosti (g((Subscript[u, n]))) rovna nule. Podle Heineho věty je tedy limitou funkce g v bodě 0 číslo 0. Na přednášce si tento fakt později ukážeme i pomocí věty o limitě sevřené funkce.