% Activate the following line by filling in the right side. If for example the name of the root file is Main.tex, write
% "...root = Main.tex" if the chapter file is in the same directory, and "...root = ../Main.tex" if the chapter is in a subdirectory.
 
%!TEX root = ../Metodos_Numericos.tex  

\chapter[Modelos]{Modelos, computadoras y errores }

\section{Modelos y Computadoras}

\section{Serie de Taylor y Errores de Truncamiento}

En matemáticas, una serie de Taylor es una representación de una función como una infinita suma de términos.
Estos términos se calculan a partir de las derivadas de la función para un determinado valor de la variable (respecto de la cual se deriva), lo que involucra un punto específico sobre la función. Si esta serie está centrada sobre el punto cero, se le denomina serie de McLaurin.

\subsection{La serie de Taylor}

Si la función $f$ y sus primeras $n+1$ derivadas son continuas, en un intervalo que contiene $a$ y $x$, entonces el valor de la función esta dado por:

 \begin{equation}
f(x) = f(a) + f^{i}(a) (x-a) + \frac{1}{2!} f^{ii}(a) (x-a)^2 + \frac{1}{3!} f^{iii}(a) (x-a)^3+ \cdots + \frac{1}{n!} f^{n}(a) (x-a)^n \label{eq:Serie_Taylor}
\end{equation}
 
La cual puede representarse como una sumatoria para $N$ términos mediante

\begin{equation*}
f(x) = \sum_{n=0}^N \frac{f^{n}(a)}{n!}   (x - a) ^n 
\end{equation*}

donde $f^0(a) = \left . f(x) \right |_{x=a}$ y  $f^n(a) = \left . \frac {d^n f(x)}{d x^n} \right |_{x=a}$

Con frecuencia es conveniente simplificar la serie de Taylor definiendo un paso $h$ como $h = x^{(i+1)} - x^{(i)}$  con $a =x^{(i)}$. Con esto podemos expresar la serie de Taylor como:

\begin{equation}
f(x^{(i+1)}) = f(x^{(i)}) + f^{i}(x^{(i)}) h + \frac{1}{2!} f^{ii}(x^{(i)}) h^2 + \frac{1}{3!} f^{iii}(x^{(i)}) h^3+ \cdots+ \frac{1}{n!} f^{n}(x^{(i)}) h^n  
\label{eq:Serie_Taylor_2}
\end{equation}

\subsection{Ejemplo 1}

Dada la función $f(x) = e^x$ hacer la implementación utilizando la serie de Taylor dada por (\ref{eq:Serie_Taylor}) considerando que $a=0$.

\begin{eqnarray*}
f(x) & = & f(x) = e^x \\
f^{i}(x) & = & \frac{d f(x)}{dx} = e^x \\
f^{ii}(x) & = & \frac{d^2 f(x)}{dx^2} =  e^x \\
f^{iii}(x) & = & \frac{d^3 f(x)}{dx^3} =  e^x \\
f^{iv}(x) & = & \frac{d^4 f(x)}{dx^4} =  e^x \\
\end{eqnarray*}

Hacemos la evaluación de la derivadas en $a=0$
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Orden $n$ & $f^n(a)$ & $f^n(0)$ \\
\hline
0 & $e^x$ & 1\\
1 & $e^x$ & 1 \\
2 & $e^x$ & 1 \\
3 & $e^x$ & 1 \\
\vdots & \vdots & \vdots\\ 
N & $e^x$ & 1\\
\hline
\end{tabular}
\end{center}

Sustituyendo en la ecuación (\ref{eq:Serie_Taylor}) tenemos

\begin{eqnarray*}
e^x = f(a) + f^{i}(a) (x-a) + \frac{1}{2!} f^{ii}(a) (x-a)^2 + \frac{1}{3!} f^{iii}(a) (x-a)^3+ \cdots + \frac{1}{n!} f^{n}(a) \\
e^x = 1 + 1\times(x-0) + \frac{1}{2!} \times 1 \times (x-0)^2 + \frac{1}{3!} \times 1 \times (x-0)^3 + \frac{1}{4!} \times 1 \times (x-0)^4 + \cdots
\end{eqnarray*}


La aproximación polinomial final, para la función $e^x$ es:
 
\begin{equation*}
e^x = 1 + x + \frac{x^2}{2!} +  \frac{x^3}{3!}  + \frac{x^4}{4!} + \frac{x^5}{5!} +  \frac{x^6}{6!} + \frac{x^7}{7!} + \cdots 
\end{equation*}

En forma compacta podemos representar la serie como:

\begin{equation*}
e^x = \sum_{k=0}^{N} \frac{x^k}{k!}
\end{equation*}


La implementación en Matlab es:

\begin{verbatim}
function y = exponencial(x)
	y =0;
	for k= 0:40
   		y = y + x.^k/factorial(k);
	end;
\end{verbatim}
 
Ver exponencial.m

 
\subsection{Ejemplo 2}

Dada la función $f(x) = cos(x)$ hacer la implementación utilizando la serie de Taylor dada por (\ref{eq:Serie_Taylor}) considerando que $a=0$.

\begin{eqnarray*}
f^0(x) & = & f(x) = cos(x) \\
f^{i}(x) & = & \frac{d f(x)}{dx} = -sin(x) \\
f^{ii}(x) & = & \frac{d^2 f(x)}{dx^2} = -cos(x) \\
f^{iii}(x) & = & \frac{d^3 f(x)}{dx^3} = -sin(x) \\
f^{iv}(x) & = & \frac{d^4 f(x)}{dx^4} = -cos(x) \\
\end{eqnarray*}

Sustituyendo para $x=a=0$

\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Orden $n$ & $f^n(a)$ & $f^n(0)$ \\
\hline
0 & $cos(a)$ & 1\\
1 & $-sen(a)$ & 0 \\
2 & $-cos(a)$ & -1 \\
3 & $sen(a)$ & 0 \\
4 & $cos(a)$ & 1 \\
5 & $-sen(a)$ & 0 \\
6 & $-cos(a)$ & -1 \\
7 & $sen(a)$ & 0 \\
8 & $cos(a)$ & 1 \\
9 & $-sen(a)$ & 0\\
10 & $-cos(a)$ &-1 \\
\hline
\end{tabular}
\end{center}

La aproximación polinomial final, para la función coseno es:
 
\begin{equation*}
cos(x) = 1 - \frac{x^2}{2!} +  \frac{x^4}{4!} - \frac{x^6}{6!} + \frac{x^8}{8!} - \frac{x^{10}}{10!}
\end{equation*}

En forma compacta podemos representar la serie como:

\begin{equation*}
cos(x) = \sum_{k=0}^{N} \frac{(-1)^k x^{2k}}{(2k)!}
\end{equation*}


La implementación en Matlab es:

\begin{verbatim}
function y = coseno(x)
    y =0;
    N=80
    for k= 0:N
        y = y + (-1)^k*x.^(2*k)/factorial(2*k);
    end;
end
\end{verbatim}
 
Ver coseno.m


En la Figura \ref{fig:coseno} podemos ver la gráfica generada por nuestra función coseno marcada con +, sobre impuesta a la gráfica de la función $cos(x)$ de Matlab. Note la cálida de la aproximación. 

\begin{figure}[!htp]
   \centering
   \centerline{\psfig{figure=Capitulo_2/figuras/coseno.eps, width=10.0cm}}
   \caption{Implementación de la función coseno utilizando serie de Taylor}
   \label{fig:coseno}
\end{figure}

\subsection{Ejemplo 3}

Utilizar los términos de la serie de Taylor para $n= 0$ hasta $6$, para aproximar la función $f(x) = cos(x)$ en $x^{(i+1)} = \pi/3$ y como condición inicial sus derivadas en $x^{(i)} = \pi/4$. 

Para nuestra implementación tenemos que el incremento  $h = \pi/3- \pi/4 = \pi/12$. La aproximación en serie de Taylor utilizando (\ref{eq:Serie_Taylor_2}) es:

\begin{equation*}
f(x^{(i+1)}) = f(x^{(i)}) + f^{i}(x^{(i)}) h + \frac{1}{2!} f^{ii}(x^{(i)}) h^2 + \frac{1}{3!} f^{iii}(x^{(i)}) h^3+ \cdots+ \frac{1}{n!} f^{n}(x^{(i)}) h^n  
\end{equation*}

Sustituyendo valores tenemos

\begin{equation*}
f(x^{(i+1)}) = f\left(\frac{\pi}{4}\right) + f^{i}\left(\frac{\pi}{4}\right)  \frac{\pi}{12} + \frac{1}{2!} f^{ii}\left(\frac{\pi}{4}\right)  \left(\frac{\pi}{12} \right) ^2 + \frac{1}{3!} f^{iii}\left(\frac{\pi}{4}\right)  \left(\frac{\pi}{12} \right) ^3+ \cdots+ \frac{1}{n!} f^{n}\left(\frac{\pi}{4}\right) \left(\frac{\pi}{12} \right) ^n  
\end{equation*}

La cual puede ser aproximada por la sumatoria

\begin{equation*}
f(x^{(i+1)}) = \sum_{n=0}^N \frac{1}{n!} f^{n}\left(\frac{\pi}{4}\right)  \left(\frac{\pi}{12} \right) ^n 
\end{equation*}

La evaluación para diferentes valores de $n$ es 

\begin{eqnarray*}
\text {$N$ = 0 } \\
f(x^{(i+1)}) & = & 0.7071 \\
\text {$N$ = 1 } \\
f(x^{(i+1)}) & = & 0.7071 + (-0.7071) \times \frac{\pi}{12}  =0.5219 \\
\text {$N$ = 2 } \\
f(x^{(i+1)}) & = & 0.7071 + (-0.7071) \times \frac{\pi}{12}  + \frac{1}{2} \times (-0.7071) \left( \frac{\pi}{12} \right)^2=0.4977
\end{eqnarray*}

Los valores de las derivadas y el error de aproximación se presenta en la siguiente tabla.

\begin{center}
\begin{tabular}{|c|c|c|c|}
\hline
Orden $n$ & $f^n(\frac{\pi}{4})$ & $f(x^{(i+1)})$ & error (\%) \\
\hline
0 & cos($\pi$/4) & 0.707106781 & -41.4 \\
1 & -sen($\pi$/4) & 0.521986659 & -4.4 \\
2 & -cos($\pi$/4) & 0.497754491 & 0.449 \\
3 & sen($\pi$/4) & 0.499869147 & 2.62x10-2 \\
4 & cos($\pi$/4) & 0.500007551 & -1.51x10-3 \\
5 & -sen($\pi$/4) & 0.500000304 & -6.08x10-5\\
6 & -cos($\pi$/4) & 0.499999988 & 2.40x10-6 \\
\hline
\end{tabular}
\end{center}


Note, que a medida que se introducen más términos, la aproximación se vuelve más exacta y el porcentaje de error disminuye. 

\subsection{Ejemplo 4}

Hacer la implementación en Serie de Taylor para la función $f(x)= sen(x)$.

De acuerdo con lo anterior la serie de Taylor para el seno esta dada como

\[
sen(x) = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + \frac{x^9}{9!} +\cdots 
\]

\begin{equation*}
sen(x) = \sum_{k=0}^{N} \frac{(-1)^k x^{2k+1}}{(2k+1)!}
\end{equation*}
La implementación en Matlab es:

\begin{verbatim}
function y = seno(x)
    y = 0;
    N = 40;
    for k= 0:N
        y = y + (-1)^k*x.^(2*k+1)/factorial(2*k+1);
    end
end
\end{verbatim}

ver seno.m


\subsection{Uso de la serie de Taylor para estimar errores de Truncamiento}


La serie de Taylor es muy útil para hacer la estimación de errores de truncamiento. Esta estimación ya la realizamos en los ejemplos anteriores. Recordemos que la serie de Taylor la podemos representar, con $a = x^{(i)}$, como:

 
\begin{equation*}
v(x^{(i+1)}) = v(x^{(i)}) + v^{'}(x^{(i)}) (x^{(i+1)} - x^{(i)}) + \frac{1}{2!} v^{''}(x^{(i)})  (x^{(i+1)} - x^{(i)})^2 + \cdots+ \frac{1}{n!} v^{n}(x_i) (x^{(i+1)}- x^{(i)})^n 
\end{equation*}

Ahora, truncando la serie después del término con la primera derivada, se obtiene:

\begin{equation*}
v(x^{(i+1)}) = v(x^{(i)}) + v^{'}(x^{(i)}) (x^{(i+1)} - x^{(i)}) + R_1
\end{equation*}

Despejando el valor de $v'$, tenemos:

\begin{equation*}
 v^{'}(x^{(i)}) = \frac{v(x^{(i+1)}) - v(x^{(i)}) }{(x^{(i+1)} - x^{(i)})} - \frac{R_1}{(x^{(i+1)} - x^{(i)})}
\end{equation*}


El primer término de la ecuación represente la aproximación de la derivada y el segundo el error de truncamiento.  Note que el error de truncamiento se hace más pequeño a medida que $x^{(i+1)} – x^{(i)}$ (incremento) se hace pequeño. Así que podemos hacer una buena aproximación de derivadas utilizando el primer término, siempre y cuando se utilicen incrementos pequeños.

El código en matlab para la implementación de la derivada queda como:

\begin{verbatim}
function [xnva, dy] = derivada(x, y)

        N  = length(x);
        dv = zeros(N-1);

        for k=1:N-1
                dy(k) = (y(k+1) - y(k))/(x(k+1) - x(k));
        end;

        xnva = x(1:N-1);
end

\end{verbatim}

\subsubsection{Ejemplo}

Vamos a calcular la derivada de la función $y = cos(x) $y comparar con el valor exacto de la derivada $y' = -sen(x)$. Para esto consideramos que $0 \leq x \leq 2\pi$ y que el incremento es $h= 0.01$. El siguiente código muestra la manera de utilizar la función derivada y en la Figura \ref{fig:derivada} se muestra la gráfica de la derivada real y la aproximada con la serie de Taylor.


\begin{verbatim}
        h = 0.01;
        x = [0:h:2*pi];
        y = cos(x);
        dy = sin(x);
        [dx, dy] = derivada(x, y);
        plot(x, -sin(x), dx, dy)
        grid on
\end{verbatim}


\begin{figure}
    \centering
    \includegraphics[width=120mm]{Capitulo_2/figuras/derivadacoseno.jpg}
    \caption{Gráfica mostrando la derivada real del coseno contra la estimación utilizando serie de Taylor}
    \label{fig:derivada}
\end{figure}
ver derivada.m



