\[
\def\_#1{\mathbf{#1}}
\def\x{\times}
\def\R{\mathbb{R}}
\def\mat#1{\begin{bmatrix}#1\end{bmatrix}}
\def\matr#1{\begin{bmatrix*}[r]#1\end{bmatrix*}}
\]
===== Taylorův polynom ====
(Tomáš Werner, 2011)
Je dána množina $X\subseteq\R^n$ a zobrazení $\_f{:}\ X\to\R^m$.
Cílem je spočítat pro toto zobrazení Taylorův polynom v daném bodě
$\_x^*$ a poté vizualizovat zobrazení $\_f$ a Taylorův polynom.
Způsob vizualizace se liší podle dimenzí definičního oboru a oboru
hodnot, ale je vždy stejný pro zobrazení $\_f$ a pro Taylorův polynom.
Zopakujme (viz skripta):
* Pro zobrazení $\_f{:}\ X\to\R^m$ je Taylorův polynom prvního stupně v bodě $\_x^*$ zobrazení $\_T_1{:}\ X\to\R^m$ dané předpisem \[\_T_1(\_x) = \_f(\_x^*) + \_f'(\_x^*)\,(\_x-\_x^*),\] kde $\_f'(\_x^*)$ je totální derivace (Jacobiho matice) zobrazení $\_f$ v bodě $\_x^*$.
* Pro funkci $f{:}\ X\to\R$ je Taylorův polynom druhého stupně v bodě $\_x^*$ funkce $T_2{:}\ X\to\R$ daná předpisem \[T_2(\_x) = f(\_x^*) + f'(\_x^*)\,(\_x-\_x^*) + \frac12 (\_x-\_x^*)^T f''(\_x^*)\, (\_x-\_x^*),\] kde $f'(\_x^*)$ je totální derivace funkce $f$ v bodě $\_x^*$ (tj. řádkový vektor délky $n$) a $f''(\_x^*)$ je Hessova matice funkce $f$ v bodě $\_x^*$ (tj. symetrická matice $n\x n$ druhých parciálních derivací).
* Pro zobrazení $\_f{:}\ X\to\R^m$ je Taylorův polynom druhého stupně zobrazení $\_T_2{:}\ X\to\R^m$, jehož složky jsou funkce $T_2$ (uvedené výše) pro každou složku zobrazení $\_f$.
Podotkněme, že $\_T_1$ a $\_T_2$ přísně vzato nejsou polynomy, protože
jsou to zobrazení a ne funkce.
Úlohu vypracujeme pro následující zobrazení:
- $n=1$, $m=1$, $X=[-3,2]$, $f(x)=x^3/3+x^2/2-x$
- $n=1$, $m=2$, $X=[0,2\pi]$, $\_f(x)=\mat{\cos x \\ \sin x}$
- $n=2$, $m=1$, $X=[-2,2]\x[-2,2]$, $f(\_x)=f(x_1,x_2)=2\text{e}^{-\_x^T\_x}$ ($\text{e}$ značí Eulerovo číslo)
- $n=2$, $m=3$, $X=[0,2\pi]\x[0,2\pi]$, $\_f(\_x)=\_f(x_1,x_2)=\mat{(R+r\cos x_2)\cos x_1\\(R+r\cos x_2)\sin x_1\\r\sin x_2}$
- $n=2$, $m=2$, $X=[-1,1]\x[-1,1]$, $\_f(\_x)=\_f(x_1,x_2)=\_x\log(1+\_x^T\_x)$ ($\log$ značí přirozený logaritmus)
- $n=1$, $m=3$, $X$ je jako v bodu 2, zobrazení je složením zobrazení z bodu 2 a zobrazení z bodu 4
==== Postup vypracování ====
Stáhněte si matlabské funkce ''prikladn.m'' {{./zarodky.zip|zde}}. Číslo ''n'' odpovídá pořadí ve výše uvedeném seznamu.
Každá funkce vizualizuje zobrazení $\_f$ žlutou barvou, definuje bod $\_x^*$ (označený jako ''xx'') a nakreslí ho jako červené kolečko.
Vaším úkolem je doplnit funkce ''T1'' a ''T2'', což jsou Taylorovy polynomy prvního a druhého řádu pro zobrazení $\_f$.
Odkomentováním příslušných řádků se pak polynom prvního řádu zobrazí zeleně a polynom druhého řádu fialově.
Jako vzor jsme úlohu vypracovali pro zobrazení 1.
Pro zobrazení 6 (tj. složení zobrazení 2 a 4) vypracujte pouze polynom prvního řádu. Pro výpočet první totální derivace použijte
řetězové pravidlo.
Kontrolou správnosti polynomů je to, že polynomy mají v bodě $\_x^*$ se zobrazením $\_f$ společnou hodnotu a první a druhou derivaci. Tedy polynom prvního řádu je vždy `tečný' k zobrazení a polynom druhého řádu je kvadratickou aproximací zobrazení.
Požadovaný výstup cvičení:
* Fungující doplněné funkce ''prikladn.m''. Cvičící si odevzdané funkce pustí a z obrázku ihned uvidí, zda je vše v pořádku.
* Písemná zpráva, ve které budou vzorce pro Taylorovy polynomy každého zobrazení (nic jiného tam být nemusí).
/*
===== Nepoužité podúkoly (neozkoušené, možno zakomentovat) =====
==== Cvičení na derivace ====
V tomto cvičení se blízce spřátelíte s derivacemi funkcí a zobrazení. První část je na první derivace zobrazení $\_f{:}\ \R^n\to\R^m$, druhá část je na druhé derivace funkcí $f{:}\ \R^n\to\R$. Výstupem cvičení bude funkční kód na kreslení požadovaných obrázků a krátká zpráva ve formátu PDF, ve které budou požadované obrázky se stručným popisem.
=== Cvičení na první derivaci ===
V této první části cvičení máte za úkol vizualizovat v Matlabu dané zobrazení $\_f{:}\ X\to\R^m$, kde $X\subseteq\R^n$, a jeho aproximaci prvního řádu $\_g$ ve zvoleném bodě $\_x_0$ danou jako \[\_T_1(\_x) = \_f(\_x_0) + \_f'(\_x_0)(\_x-\_x_0)\] kde $\_f'(\_x_0)$ je (totální) derivace zobrazení (Jacobiho matice) v bodě $\_x_0$. Vaším úkolem je
* Vizualizovat zobrazení $\_f$ na množině obrazů $X$ jednou barvou.
* Do stejného obrázku přikreslit bod $\_x_0$ jako červený puntík.
* Do stejného obrázku vizualizovat zobrazení $\_g$ jinou barvou. Množina obrazů zobrazení $\_g$ může být opět $X$, ale může to být i podmnožina $X$ (aby vizualizace vypadala hezky).
Udělejte to pro tři následující zobrazení. Způsob vizualizace se liší podle hodnot $m,n$ a je popsáno v každém jednotlivém případě.
- $n=1$, $m=3$ a $\_f$ je šroubovice \[\_f(t) = \mat{\cos t \\ \sin t \\ t},\] kde $X=[0,10]$. Vycházejte z následujícího kódu (a předtím ho pochopte), který vizualizuje zobrazení tak, že vykreslí body $\_f(t)$ pro $t$ probíhající $X$ jako křivku v prostoru. Dále nakreslí bod $\_f(t_0)$ jako červený puntík. Kód doplňte tak, že do obrázku dokreslí zobrazení $\_g$.
t = linspace(0,10,1000);
x = cos(t);
y = sin(t);
z = t;
clf
plot3(x,y,z)
axis vis3d
hold on
t0 = 2.3;
x0 = cos(t0);
y0 = sin(t0);
z0 = t0;
plot3(x0,y0,z0,'r.')
Pokud chcete vytisknout obrázek z Matlabu do souboru, nejlepší je tisknout do formátu //Encapsulated Postscript// příkazem ''print -depsc jmeno.eps''.
* $n=2$, $m=1$ a $f$ je funkce dvou proměnných \[f(x,y) = 3x - x^3 - 3xy^2\] definovaná na obdélníku $X=[-1,1]^2$. Následující kód doplňte tak, že do obrázku dokreslí bod $(x_0,y_0,f(x_0,y_0))$ a zobrazení $g$, tj. tečnou rovinu v bodě $(x_0,y_0)$.
N = 40;
x = ones(N,1)*linspace(-1,1,N);
y = linspace(-1,1,N)'*ones(1,N);
z = 3*x - x.^3 - 3*x.*y.^2;
clf
mesh(x,y,z,zeros(size(z))+.6);
axis vis3d; caxis([0 1])
hold on
* $n=2$, $m=3$, $\_f$ popisuje torus v prostoru \[\_f(u,v)=\mat{(R+r\cos v)\cos u \\ (R+r\cos v)\sin u \\ r\sin v}\] pro $(u,v)\in X=[0,2\pi)^2$. Vycházejte z kódu pro předešlé zobrazení a doplňte ho, aby vykreslil zobrazení $\_g$ v nějakém vhodně zvoleném bodě $(u_0,v_0)$.
=== Cvičení na druhou derivaci ===
V této druhé části cvičení máte dánu funkci dvou proměnných $\_f{:}\ X\to\R$, kde $X\subseteq\R^2$, a máte vizualizovat její aproximaci Taylorovým polynomem druhého řádu okolo bodu $\_x_0$, který je dán jako \[h(\_x) = f(\_x_0) + f'(\_x_0)(\_x-\_x_0) + \frac{1}{2}(\_x-\_x_0)^T f''(\_x_0)(\_x-\_x_0)\] kde $f''(\_x_0)$ je druhá derivace funkce (Hessova matice) v bodě $\_x_0$. Vypracujte pro funkci z bodu 2 v první části cvičení. Kód
doplňte tak, že přikreslí do obrázku funkci $h$.
=== Cvičení na derivaci složeného zobrazení ===
//Metoda konečných diferencí// počítá derivaci funkce přibližně jako $f'(x)\approx [f(x+h)-f(x)]/h$, kde $h$ je malé číslo (dobrá volba je $h=\sqrt{\epsilon}$ kde $\epsilon$ je strojová přesnost). Toto jde zjevně použít i na parciální derivace.
Vymyslete si dvě zobrazení $\_g{:}\ \R^n\to\R^m$ a $\_f{:}\ \R^m\to\R^\ell$ pro nějaké navzájem různé dimenze $n,m,\ell>1$. Zvolte bod $\_x\in\R^n$. Spočítejte přibližně totální derivace (Jacobiho matice) $\_g'(\_x)$ a $\_f'(\_g(\_x))$ metodou konečných diferencí. Potom spočítejte derivaci složeného zobrazení $(\_f\circ\_g)'(\_x)$ jednak metodou konečných diferencí a jednak vynásobením matic $\_g'(\_x)$ a $\_f'(\_g(\_x))$.
N=40; x=ones(N,1)*linspace(-5,5,N); y=x';
d=sqrt(1+x.^2+y.^2); xx=x./d; yy=y./d;
clf; plot(xx,yy,'w'); hold on; plot(xx',yy','w')
axis off; axis equal
*/