\[ \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 */