Método de Taylor
Como construir métodos cada vez melhores
Vamos lá?
O método de Euler é simples, mas pouco acurado. Que tal usar os polinômios de Taylor para construir métodos muito melhores? Parece uma boa ideia?
- 1
- 2
- 3
Qual a motivação para a construção dos métodos de Taylor?
Tanto o método de Euler, quanto os métodos de Taylor, são construídos para aproximar a solução do PVI \begin{equation}\label{standard} y'(t) = f(t,y), \quad t>t_0, \qquad y(t_0)=y_0, \end{equation} onde $y:\R\rightarrow \R^m,$ $f:\R\times\R^m\rightarrow \R^m$ e $y_0\in\R^m.$
O método de Euler foi obtido relacionando-se o valor de $y(t)$ em dois pontos consecutivos da malha, através do polinômio de Taylor de primeira ordem. $$ y(t_{n+1}) = y(t_n) + h_n y'(t_n) + {h_n^2\over 2!}y''(\tau), $$ onde $\tau$ é algum valor entre $t_n$ e $t_{n+1},$ $h_n \equiv (t_{n+1}-t_n).$ Como $\tau$ não é conhecido, o último termo é desprezado e assim ficamos com a aproximação de primeira que dá origem ao método de Euler. Para construir métodos melhores podemos considerar um polinômio de Taylor de grau maior, o que implica que o erro entre $y(t)$ e o valor prescrito pelo polinômio será menor.
De modo geral, se $y$ é uma função com $(k+1)$ derivadas contínuas, então $$ y(t_{n+1}) = y(t_n) + h_n y'(t_n) + {h_n^2\over 2!} y''(t_n) + \cdots + {h_n^k \over k!} y^{(k)}(t_n) + {h_n^{k+1} \over (k+1)!} y^{(k+1)}(\tau). $$ A desprezar o último termo ficamos com uma equação aproximada para $y(t_{n+1})$ em função do valor de $y(t_n)$ e de derivadas de $y$ em $t_n.$ Por exemplo para $k=2$ temos que \begin{equation}\label{eq2} y(t_{n+1}) \approx y(t_n) + h_n y'(t_n) + {h_n^2\over 2!} y''(t_n). \end{equation} Para computar $y'(t_n),$ recorremos à equação diferencial \eqref{standard} (como fizemos no método de Euler), ou seja \begin{equation}\label{d1} y'(t_n) = f(t_n,y(t_n)) \approx f(t_n,y_n). \end{equation} Para computar $y''(t_n)$ precisamos primeiro obter uma expressão para a derivada segunda. Derivando a equação diferencial \eqref{standard}, temos \begin{align*} y''(t) &= {d\over dt}y'(t) = {d\over dt} f(t,y(t)) \\[2mm] & = {\partial f\over \partial t}(t,y(t)) + {\partial f\over \partial y}(t,y(t)) \cdot {dy\over dt}\\[2mm] & = f_t(t,y(t))+f_y(t,y(t))f(t,y(t)), \end{align*} onde $f_t \equiv {\partial f\over \partial t}$ e $f_y \equiv {\partial f\over \partial y}.$ Desta forma, $y''(t_n)$ é aproximado como \begin{equation}\label{d2} y''(t_n) \approx f_t(t_n,y_n)+f_y(t_n,y_n)f(t_n,y_n). \end{equation} Ao empregar \eqref{d1} e \eqref{d2} em \eqref{eq2} temos a fórmula de iteração do método de Taylor de ordem 2. \begin{equation} y_{n+1} = y_n + h_n f(t_n,y_n) +{h_n^2\over 2}[f_t(t_n,y_n)+f_y(t_n,y_n)f(t_n,y_n)]. \end{equation}
Dada uma equação diferencial no formato \eqref{standard}, antes de poder aplicar este método é preciso computar as derivadas necessárias da função $f.$
Por exemplo para a EDO $f(t,y)=-2ty,$ $f_t = -2y$ e $f_y=-2t.$ Assim, a iteração do método de Taylor de ordem 2 para essa EDO fica $$ y_{n+1} = y_n + h_n (-2t_ny_n) +{h_n^2\over 2}[ 2y_n (2t_n^2-1)]. $$ Essa EDO com a condição inicial $y(0)=1$ (cuja solução exata é $y(t)=e^{-t^2}$), é resolvida no Octave assim:
f = @(t,y) -2*t*y; # função que descreve y', a f da EDO ff = @(t,y) 2*y* (2*t^2-1); # função que descreve y'' N = 11; # pontos na malha t = linspace(0,1,N)'; # malha regular h = t(2)-t(1); # passo de discretização ye = zeros(N,1); # vetor para as aproximações do método de Euler ye(1) = 1; # condição inicial yt = zeros(N,1); # vetor para as aproximações do método de Taylor yt(1) = 1; # condição inicial # Iteração do método de Euler (para comparação) for n=1:N-1; ye(n+1) = ye(n) + h*f(t(n),ye(n)); end # Iteração do método de Taylor de ordem 2 for n=1:N-1; yt(n+1) = yt(n) + h*f(t(n),yt(n)) + h^2/2*ff(t(n),yt(n)); end Y = @(t) exp(-t.^2); # solução exata do PVI norm(Y(t)-ye,inf) # maior erro absoluto (método de Euler) ans = 0.034803 norm(Y(t)-yt,inf) # maior erro absoluto (método de Taylor) ans = 2.7608e-03
Tudo parece ter funcionado muito bem. Conseguimos um método melhor que o método de Euler. Acrescentando mais um termo em \eqref{eq2}, devemos ficar com um método melhor ainda. De fato, isso acontece. Entretanto, a fórmula de iteração dependerá também de $y'''(t_n).$ É neste ponto que as dificuldades do método de Taylor começam a ficar evidentes. Veja que $$ y'''(t) = {d\over dt}y''={d\over dt}[f_t+f_yf]. $$ Computando as derivadas totais e usando abundantemente a regra do produto, temos que $$ y'''(t) = f_{tt} + 2 f_{ty}f + f_yf_t + f_{yy}f^2 + f_y^2 f. $$ Ou seja, a medida que queremos métodos mais acurados, mais e mais derivadas de $f$ devem ser computadas e combinadas para montar a fórmula de iteração do método. Rapidamente isso leva a expressões enormes e complicadas que, do ponto de vista prático, são difíceis de usar.
O que precisamos é de métodos acurados, como os métodos de Taylor, mas sem essa enxurrada de derivadas. Essa busca é o que nos leva aos métodos de Runge-Kutta, tema da próxima aula.
1. Para os problemas de valor inicial abaixo, estime $y(1)$ pelo método de Taylor de ordem 2 usando (i) $h=0.1$ e (ii) $h=0.001.$ Compute o erro absoluto nas duas aproximações, usando a solução exata apresentada.
- $y'=t^2-y,$ $y(0)=1.$ [ $y(t) = -e^{-t}+t^2-2t+2$ ]
- $y'=3y+3t,$ $y(0)=1.$ [ $y(t) = {4\over 3}e^{3t}-t-{1\over 3}$ ]
2. Se $y'(t) = -2ty,$ monte a fórmula de iteração para o método de Taylor de ordem 3.
3. Se $y'=f(t,y(t)),$ quantos termos há não expressão para $y''''(t),$ em função de $f$ e suas derivadas?