Saltar al contenido principal

# D.2: Solucionadores simples de ODE — Comportamiento de errores

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\id}{\mathrm{id}}$$ $$\newcommand{\Span}{\mathrm{span}}$$

( \newcommand{\kernel}{\mathrm{null}\,}\) $$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$ $$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$ $$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\id}{\mathrm{id}}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\kernel}{\mathrm{null}\,}$$

$$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$

$$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$

$$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$ $$\newcommand{\AA}{\unicode[.8,0]{x212B}}$$

$$\newcommand{\vectorA}[1]{\vec{#1}} % arrow$$

$$\newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow$$

$$\newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vectorC}[1]{\textbf{#1}}$$

$$\newcommand{\vectorD}[1]{\overrightarrow{#1}}$$

$$\newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}}$$

$$\newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}}$$

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\avec}{\mathbf a}$$ $$\newcommand{\bvec}{\mathbf b}$$ $$\newcommand{\cvec}{\mathbf c}$$ $$\newcommand{\dvec}{\mathbf d}$$ $$\newcommand{\dtil}{\widetilde{\mathbf d}}$$ $$\newcommand{\evec}{\mathbf e}$$ $$\newcommand{\fvec}{\mathbf f}$$ $$\newcommand{\nvec}{\mathbf n}$$ $$\newcommand{\pvec}{\mathbf p}$$ $$\newcommand{\qvec}{\mathbf q}$$ $$\newcommand{\svec}{\mathbf s}$$ $$\newcommand{\tvec}{\mathbf t}$$ $$\newcommand{\uvec}{\mathbf u}$$ $$\newcommand{\vvec}{\mathbf v}$$ $$\newcommand{\wvec}{\mathbf w}$$ $$\newcommand{\xvec}{\mathbf x}$$ $$\newcommand{\yvec}{\mathbf y}$$ $$\newcommand{\zvec}{\mathbf z}$$ $$\newcommand{\rvec}{\mathbf r}$$ $$\newcommand{\mvec}{\mathbf m}$$ $$\newcommand{\zerovec}{\mathbf 0}$$ $$\newcommand{\onevec}{\mathbf 1}$$ $$\newcommand{\real}{\mathbb R}$$ $$\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}$$ $$\newcommand{\laspan}[1]{\text{Span}\{#1\}}$$ $$\newcommand{\bcal}{\cal B}$$ $$\newcommand{\ccal}{\cal C}$$ $$\newcommand{\scal}{\cal S}$$ $$\newcommand{\wcal}{\cal W}$$ $$\newcommand{\ecal}{\cal E}$$ $$\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}$$ $$\newcommand{\gray}[1]{\color{gray}{#1}}$$ $$\newcommand{\lgray}[1]{\color{lightgray}{#1}}$$ $$\newcommand{\rank}{\operatorname{rank}}$$ $$\newcommand{\row}{\text{Row}}$$ $$\newcommand{\col}{\text{Col}}$$ $$\renewcommand{\row}{\text{Row}}$$ $$\newcommand{\nul}{\text{Nul}}$$ $$\newcommand{\var}{\text{Var}}$$ $$\newcommand{\corr}{\text{corr}}$$ $$\newcommand{\len}[1]{\left|#1\right|}$$ $$\newcommand{\bbar}{\overline{\bvec}}$$ $$\newcommand{\bhat}{\widehat{\bvec}}$$ $$\newcommand{\bperp}{\bvec^\perp}$$ $$\newcommand{\xhat}{\widehat{\xvec}}$$ $$\newcommand{\vhat}{\widehat{\vvec}}$$ $$\newcommand{\uhat}{\widehat{\uvec}}$$ $$\newcommand{\what}{\widehat{\wvec}}$$ $$\newcommand{\Sighat}{\widehat{\Sigma}}$$ $$\newcommand{\lt}{<}$$ $$\newcommand{\gt}{>}$$ $$\newcommand{\amp}{&}$$ $$\definecolor{fillinmathshade}{gray}{0.9}$$

Ahora proporcionamos una introducción al comportamiento de error del Método de Euler, el método mejorado de Euler y el algoritmo Runge-Kutta para generar soluciones aproximadas al problema del valor inicial

\ begin {align*} y' (t) &=f\ big (t, y (t)\ big)\\ y (t_0) &=y_0\ end {align*}

Aquí$$f(t,y)$$ hay una función conocida dada,$$t_0$$ es un tiempo inicial dado y$$y_0$$ es un valor inicial dado para$$y\text{.}$$ Lo desconocido en el problema es la función$$y(t)\text{.}$$

Dos consideraciones obvias para decidir si un algoritmo dado es de algún valor práctico son

1. la cantidad de esfuerzo computacional requerido para ejecutar el algoritmo y
2. la precisión que produce este esfuerzo computacional.

Para algoritmos como nuestros simples solucionadores de ODE, la mayor parte del esfuerzo computacional suele dedicarse a evaluar la función 1 Normalmente, evaluar una función complicada requerirá muchas operaciones aritméticas, mientras que el método real del solucionador de ODE (según, por ejemplo, (D.1.3)) toma sólo un puñado adicional de operaciones. Así que la gran parte del tiempo computacional se destina a evaular el método de$$f$$ and we want to do it as few times as possible.$$f(t,y)\text{.}$$ Euler utiliza una evaluación de$$f(t,y)$$ para cada paso; el método mejorado de Euler utiliza dos evaluaciones de$$f$$ por paso; el algoritmo Runge-Kutta utiliza cuatro evaluaciones de$$f$$ por paso. Entonces Runge-Kutta cuesta cuatro veces más trabajo por paso que Euler. Pero este hecho es sumamente engañoso porque, como veremos, normalmente obtienes la misma precisión con unos pocos pasos de Runge-Kutta que con cientos de pasos de Euler.

Para tener una primera impresión del comportamiento de error de estos métodos, los aplicamos a un problema al que conocemos la respuesta. La solución al problema del valor inicial lineal del coeficiente constante de primer orden

\ begin {align*} y' (t) &=y-2t\\ y (0) &=3\ end {align*}

es

$y(t)=2+2t+e^t \nonumber$

En particular, el valor exacto de$$y(1)\text{,}$$ a diez decimales, es$$4+e=6.7182818285\text{.}$$ La siguiente tabla enumera el error en el valor aproximado para este número generado por nuestros tres métodos aplicados con tres tamaños de paso diferentes. También enumera el número de evaluaciones de$$f$$ requeridas para calcular la aproximación.

 Euler Euler mejorado Runge Kutta pasos error #evals error #evals error #evals $$5$$ $$2.3\times 10^{-1}$$ $$5$$ $$1.6\times 10^{-2}$$ $$10$$ $$3.1\times 10^{-5}$$ $$20$$ $$50$$ $$2.7\times 10^{-2}$$ $$50$$ $$1.8\times 10^{-4}$$ $$100$$ $$3.6\times 10^{-9}$$ $$200$$ $$500$$ $$2.7\times 10^{-3}$$ $$500$$ $$1.8\times 10^{-6}$$ $$1000$$ $$3.6\times 10^{-13}$$ $$2000$$

Observar

• El uso de 20 evaluaciones de$$f$$ valor de Runge-Kutta da un error 90 veces menor que 500 evaluaciones de$$f$$ valor de Euler.
• Con el método de Euler, disminuir el tamaño del paso en un factor de diez parece reducir el error en aproximadamente un factor de diez.
• Con Euler mejorado, disminuir el tamaño del paso en un factor de diez parece reducir el error en aproximadamente un factor de cien.
• Con Runge-Kutta, disminuir el tamaño del paso en un factor de diez parece reducir el error en aproximadamente un factor de aproximadamente$$10^4\text{.}$$

Use$$A_E(h)\text{,}$$$$A_{IE}(h)$$ y$$A_{RK}(h)$$ para denotar el valor aproximado de$$y(1)$$ dado por Euler, Euler mejorado y Runge-Kutta, respectivamente, con tamaño de paso$$h\text{.}$$ Parece

##### Ecuación D.2.1
\begin{align*} A_E(h) &\approx y(1)+K_Eh\\ A_{IE}(h) &\approx y(1)+ K_{IE}h^2 \\ A_{RK}(h)&\approx y(1)+ K_{RK}h^4 \end{align*}

con algunas constantes$$K_E,\ K_{IE}$$ y$$K_{RK}\text{.}$$

Para probar estas conjeturas más, aplicamos nuestros tres métodos con aproximadamente diez tamaños de paso diferentes de la forma$$\frac{1}{n}=\frac{1}{2^m}$$ con$$m$$ número entero. A continuación se presentan tres gráficas, una para cada método. Cada uno contiene una gráfica$$Y=\log_2 e_n\text{,}$$ del logaritmo (base 2) del error para el tamaño del paso$$\frac{1}{n}\text{,}$$ contra el logaritmo (de base 2) de$$n\text{.}$$ El logaritmo de la base 2 se usa porque$$\log_2n=\log_2 2^m=m$$ — agradable y simple.

He aquí por qué es una buena razón para trazar$$Y=\log_2 e_n$$ contra$$x=\log_2 n\text{.}$$ Si, para algún algoritmo, hay constantes (desconocidas)$$K$$ y$$k$$ tales que

$\text{approx value of }y(1)\text{ with step size } h= y(1)+K h^k \nonumber$

entonces el error con el tamaño del paso$$\frac{1}{n}$$ es$$e_n=K\frac{1}{n^k}$$ y obedece

$\log_2 e_n =\log_2 K -k \log_2 n \tag{E1} \nonumber$

La gráfica de$$Y=\log_2 e_n$$ contra$$x=\log_2 n$$ es la línea recta$$Y=-kx+\log_2K$$ de pendiente$$-k$$ e$$y$$ intercepción$$\log_2K\text{.}$$

##### Comentario D.2.2

Este procedimiento todavía se puede utilizar aunque no sepamos el valor exacto de$$y(1)\text{.}$$ Supongamos, más generalmente, que tenemos algún algoritmo que genere valores aproximados para algún valor exacto (desconocido)$$A\text{.}$$ Llamar$$A_h$$ al valor aproximado con tamaño de paso$$h\text{.}$$ Supongamos que

$A_h=A+Kh^k \nonumber$

con$$K$$ y$$k$$ constante (pero también desconocida). Luego trazando

$y=\log(A_h-A_{h/2})=\log\left(Kh^k-K\left(\tfrac{h}{2}\right)^k\right) =\log\left(K-\tfrac{K}{2^k}\right)+k\log h \nonumber$

contra$$x=\log h$$ da la línea recta$$y=mx+b$$ con pendiente$$m=k$$ e$$y$$ intercepción$$b=\log\left(K-\tfrac{K}{2^k}\right)\text{.}$$ Así que podemos

• leer$$k$$ desde la pendiente de la línea y luego
• computar$$K=e^b\left(1-\frac{1}{2^k}\right)^{-1}$$ a partir de la$$y$$ intercepción$$b$$ y luego
• computar 2$$A=A_h-Kh^k\text{.}$$

Aquí están los tres gráficos, uno para cada uno para el método de Euler, el método mejorado de Euler y el método Runge-Kutta.

Cada gráfica contiene alrededor de una docena de puntos de datos,$$(x, Y)=(\log_2n, \log_2e_n)\text{,}$$ y también contiene una línea recta, elegida por regresión lineal, para que se ajuste mejor a los datos. El método de regresión lineal para encontrar la línea recta que mejor se ajuste a un conjunto dado de puntos de datos se trata en el Ejemplo 2.9.11 del texto CLP-3. Las tres rectas tienen pendientes$$-0.998$$ para Euler,$$-1.997$$ para Euler mejorado y$$-3.997$$ para Runge Kutta. Revisando (E1), seguro que parece$$k=1$$ para Euler,$$k=2$$ para Euler mejorado y$$k=4$$ para Runge-Kutta (al menos si$$k$$ es entero).

Hasta el momento sólo hemos mirado el error en el valor aproximado de$$y(t_f)$$ como una función del tamaño del paso$$h$$ con$$t_f$$ retenida fija. La gráfica a continuación ilustra cómo se comporta el error en función de$$t\text{,}$$ con$$h$$ retenido fijo. Es decir, mantenemos fijo el tamaño del paso y miramos el error en función de la distancia,$$t\text{,}$$ desde el punto inicial.

De la gráfica, parece que el error crece exponencialmente con$$t\text{.}$$ Pero no es tan fácil distinguir visualmente las curvas exponenciales de otras curvas que curvan hacia arriba. Por otro lado, es bastante fácil distinguir visualmente las líneas rectas de otras curvas, y tomar un logaritmo convierte la curva exponencial$$y=e^{kx}$$ en la línea recta$$Y=\log y = k\,x\text{.}$$ Aquí hay una gráfica del logaritmo,$$\log e(t)\text{,}$$ del error en el momento$$t\text{,}$$$$e(t)\text{,}$$ contra$$t\text{.}$$ Tenemos agregó una línea recta como ayudante a tu ojo.

Parece que el$$\log$$ del error crece muy rápido inicialmente, pero luego se asienta en línea recta. De ahí que realmente se vea como, al menos en este ejemplo, excepto al principio, el error$$e(t)$$ crece exponencialmente con$$t\text{.}$$

Los experimentos numéricos anteriores han dado un poco de intuición sobre el comportamiento de error de los Euler, mejorando los métodos de Euler y Runge-Kutta. Es momento de tratar de entender lo que está pasando con más rigor.

## Error de truncamiento local para el método de Euler

Ahora tratamos de desarrollar alguna comprensión de por qué obtuvimos los resultados experimentales anteriores. Comenzamos con el error generado por un solo paso del método de Euler.

##### Definición D.2.3 Error de truncamiento local

El error (firmado) generado por un solo paso del método de Euler, bajo los supuestos de que iniciamos el paso con la solución exacta y que no hay error de redondeo, se denomina error de truncamiento local para el método de Euler. Es decir, si$$\phi(t)$$ obedece$$\phi'(t) = f\big(t,\phi(t)\big)$$$$\phi(t_n)=y_n\text{,}$$ y si$$y_{n+1}=y_n+ hf(t_n,y_n)\text{,}$$ entonces el error de truncamiento local para el método de Euler es

$\phi\big(t_{n+1}\big) -y_{n+1} \nonumber$

Es decir, es diferencia entre el valor exacto,$$\phi\big(t_{n+1}\big)\text{,}$$ y el valor aproximado generado por un solo paso del método de Euler,$$y_{n+1}\text{,}$$ ignorando cualquier problema numérico causado por almacenar números en una computadora.

Denote por$$\phi(t)$$ la solución exacta al problema de valor inicial

$y'(t)=f(t,y)\qquad y(t_n)=y_n \nonumber$

Es decir,$$\phi(t)$$ obedece

$\phi'(t) = f\big(t,\phi(t)\big)\qquad \phi(t_n)=y_n \nonumber$

para todos$$t\text{.}$$ Ahora ejecuta un paso más del método de Euler con tamaño de paso h:

$y_{n+1}=y_n+hf\big(t_n,y_n\big) \nonumber$

Porque estamos asumiendo que$$y_n=\phi(t_n)$$

$y_{n+1}= \phi(t_n)+ hf\big(t_n,\phi(t_n)\big) \nonumber$

Porque$$\phi(t)$$ es la solución exacta,$$\ \phi'(t_n) = f\big(t_n,\phi(t_n)\big)= f(t_n,y_n)\$$ y

$y_{n+1}= \phi(t_n)+ h\phi'(t_n) \nonumber$

El error de truncamiento local en$$y_{n+1}$$ es, por definición,$$\phi(t_{n+1})-y_{n+1}\text{.}$$

Taylor expandiendo (ver (3.4.10) en el texto CLP-1)$$\phi(t_{n+1})=\phi(t_n+h)$$ sobre$$t_n$$

$\phi(t_n+h)=\phi(t_n)+\phi'(t_n)h+\tfrac{1}{2} \phi''(t_n)h^2 +\tfrac{1}{3!}\phi'''(t_n)h^3+\cdots \nonumber$

para que

\ begin {alinear*} &\ phi (t_ {n+1}) -y_ {n+1}\\ &=\ big [\ phi (t_n) +\ phi' (t_n) h+\ tfrac {1} {2}\ phi "(t_n) h^2 +\ tfrac {1} {3!} \ phi"' (t_n) h^3+\ cdots\ grande] -\ grande [\ phi (t_n) + h\ phi' (t_n)\ grande]\\ &=\ tfrac {1} {2}\ phi "(t_n) h^2+\ tfrac {1} {3!} \ phi"' (t_n) h^3+\ cdots\ tag {E2}\ final {alinear*}

Observe que la constante y$$h^1$$ los términos han cancelado. Entonces el primer término que aparece es proporcional a$$h^2\text{.}$$ Dado que$$h$$ suele ser un número muy pequeño, los$$h^3\text{,}$$$$h^4\text{,}$$$$\cdots$$ términos suelen ser mucho más pequeños que el$$h^2$$ término.

Concluimos que el error de truncamiento local para el método de Euler es$$h^2$$ multiplicado por alguna constante desconocida (normalmente no conocemos el valor de$$\frac{1}{2} \phi''(t_n)$$ porque normalmente no conocemos la solución$$\phi(t)$$ de la ecuación diferencial) más términos menores que son proporcionales a$$h^r$$ con$$r\ge 3\text{.}$$ Esta conclusión es típicamente escrita

##### Ecuación D.2.4

$\text{Local truncation error for Euler's method }= Kh^2+O(h^3) \nonumber$

El símbolo$$O(h^3)$$ se utiliza para designar cualquier función que, para pequeños$$h\text{,}$$ esté delimitada por tiempos constantes$$h^3\text{.}$$ Entonces, si$$h$$ es muy pequeña,$$O(h^3)$$ será mucho más pequeña que$$h^2\text{.}$$

Para pasar de un tiempo inicial$$t=t_0$$ a un tiempo final$$t=t_f$$ usando pasos de tamaño se$$h$$ requieren$$(t_f-t_0)/h$$ pasos. Si cada paso fuera a introducir un error 3 Por simplicidad, estamos suponiendo que$$K$$ takes the same value in every step. If, instead, there is a different $$K$$ in each of the $$n=(t_f-t_0)/h$$ steps, the final error would be $$K_1h^2\!+\!K_2h^2\!+\!\cdots\!+\!K_nh^2\!+\!n O(h^3)= \bar K nh^2\!+\!n O(h^3)= \bar K(t_f-t_0)\, h\!+\!O(h^2)\text{,}$$ where $$\bar K$$ is the average of $$K_1\text{,}$$ $$K_2\text{,}$$ $$\cdots\text{,}$$ $$K_n\text{.}$$$$Kh^2+O(h^3)\text{,}$$ entonces el error final en el valor aproximado de$$y(t_f)$$ sería

$\frac{t_f-t_0}{h}\ \Big[Kh^2+O(h^3)\Big] = K(t_f-t_0)\, h+O(h^2) \nonumber$

Esta estimación muy aproximada es consistente con los datos experimentales para la dependencia del error en el tamaño del paso con$$t_f$$ retenida fija, mostrada en la primera gráfica después de la observación D.2.2. Pero no es consistente con los datos experimentales de dependencia del tiempo anteriores, que muestran que el error crece exponencialmente, en lugar de linealmente, en$$t_f-t_0\text{.}$$

Podemos obtener una comprensión aproximada de este crecimiento exponencial de la siguiente manera. La solución general a$$y'=y-2t$$ es$$y=2+2t+c_0e^t\text{.}$$ La constante arbitraria,$$c_0\text{,}$$ ha de ser determinada por las condiciones iniciales. Cuando$$y(0)=3\text{,}$$$$c_0=1\text{.}$$ Al final del paso 1, hemos calculado una aproximación$$y_1$$ a$$y(h)\text{.}$$ Esto no$$y_1$$ es exactamente$$y(h)=2+2h+e^h\text{.}$$ En cambio, es un número que difiere de$$2+2h+e^h$$ por$$O(h^2)\text{.}$$ Elegimos escribir el número$$y_1=2+2h+e^h+O(h^2)$$ como$$2+2h+(1+\epsilon)e^h$$ con$$\epsilon=e^{-h} O(h^2)$$ de orden de magnitud Es$$h^2\text{.}$$ decir, elegimos escribir

$y_1=2+2t+c_0e^t\Big|_{t=h}\qquad\text{with }c_0=1+\epsilon \nonumber$

Si no hiciéramos más errores terminaríamos con la solución a

$y'=y-2t,\qquad y(h)= 2+2h+(1+\epsilon)e^h \nonumber$

que es 4

\ begin {alinear*} y (t) &= 2+2t+ (1+\ épsilon) e^t = 2+2t+ e^t +\ epsilon e^t\\ &=\ phi (t) +\ épsilon e^t\ end {align*}

Entonces, una vez que se ha introducido el error, la evolución natural del tiempo de las soluciones a esta ecuación diferencial hace que el error crezca exponencialmente. Otras ecuaciones diferenciales con otras características de evolución temporal exhibirán diferente$$t_f$$ dependencia de errores 5 Por ejemplo, si la solución es polinómica, entonces podríamos esperar (por un argumento similar) que el error también crezca polinomialmente en$$t_f$$. En la siguiente sección, mostramos que, para muchas ecuaciones diferenciales, los errores crecen en el peor de los casos exponencialmente con$$t_f\text{.}$$

## Error de truncamiento global para el método de Euler

Supongamos una vez más que estamos aplicando el método de Euler con tamaño de paso$$h$$ al problema de valor inicial

\ begin {align*} y' (t) &=f (t, y)\\ y (0) &=y_0\ end {align*}

Denote por$$\phi(t)$$ la solución exacta al problema del valor inicial y por$$y_n$$ la aproximación a$$\phi(t_n),\ t_n=t_0+nh\text{,}$$ dada por$$n$$ los pasos del método de Euler (aplicado sin error de redondeo).

##### Definición D.2.5 Error de truncamiento global

El error (firmado) en$$y_n$$ es$$\ \phi(t_n)-y_n \$$ y se llama el error de truncamiento global en el momento$$t_n\text{.}$$

Se supone que la palabra “truncamiento” significa que este error se debe únicamente al método de Euler y no incluye ningún efecto de error de redondeo que pudiera ser introducido al no escribir un número infinito de dígitos decimales por cada número que calculamos en el camino. Ahora derivamos un límite en el error de truncamiento global.

Definir

$\varepsilon_n=\phi(t_n)-y_n \nonumber$

La primera mitad de la derivación es encontrar un límite$$\varepsilon_{n+1}$$ en términos de$$\varepsilon_n\text{.}$$

\ begin {alinear*}\ varepsilon_ {n+1} &=\ phi (t_ {n+1}) -y_ {n+1}\\ &=\ phi (t_ {n+1}) -y_n-hf (t_n, y_n)\\ &= [{\ color {rojo} {\ phi (t_n)}} -y_n] +h [{\ color {azul} {f\ big (t_n,\ phi (t_n)\ big)}} -f (t_n, y_n)]\\ &\ hskip1.5in + [\ phi (t_ {n+1}) - {\ color {rojo} {\ phi (t_n)}} -h {\ color {azul} {f\ grande (t_n,\ phi (t_n)\ grande)}]\ tag {E3}\ fin { alinear*}

donde hemos masajeado la expresión en tres pedazos manejables.

• El primero$$[\cdots]$$ es exactamente$$\varepsilon_n\text{.}$$
• El tercero$$[\cdots]$$ es exactamente el error de truncamiento local. Suponiendo que$$|\phi''(t)|\le A$$ para todos$$t$$ los intereses 6 Estamos asumiendo que el derivado$$\phi'(t)$$ doesn't change too rapidly. This will be the case if $$f(t,y)$$ is a reasonably smooth function., podemos encuadernar el tercero$$[\cdots]$$ por

$\big|\phi(t_{n+1})-\phi(t_n)-hf\big(t_n,\phi(t_n)\big)\big|\le \half Ah^2 \nonumber$

Esta encuadernación se desprende rápidamente de la expansión de Taylor con resto ((3.4.32) en el texto CLP-1),

\ begin {align*}\ phi (t_ {n+1}) &=\ phi (t_n) +\ phi' (t_n) h+\ mitad\ phi "(\ tilde t) h^2\ &=\ phi (t_n) +h\, f\ grande (t_n,\ phi (t_n)\ grande) +\ mitad\ phi" (\ tilde t) h^2\ end {align*}

para algunos$$t_n\lt \tilde t\lt t_{n+1}\text{.}$$
• Finalmente, por el teorema del valor medio, la magnitud del segundo$$[\cdots]$$ es$$h$$ veces

\ begin {align*} |f\ big (t_n,\ phi (t_n)\ big) -f (t_n, y_n) | &= F_ {t_n}\ big (\ phi (t_n)\ big) - F_ {t_n} (y_n)\ quad\ text {donde}\ quad F_ {t_n} (y) = f\ big (t_n, y big\)\\ &=\ big|f'_ {t_n} (\ tilde y)\ big|\, |\ phi (t_n) -y_n|\\ &\ hskip1.35in\ text {para algunos}\ tilde y\ texto {entre} y_n\ texto {y}\ phi (t_n)\\ &=\ big|f'_ {t_ n} (\ tilde y)\ big|\, |\ varepsilon_n|\\ &\ le B|\ varepsilon_n|\ end {align*}

asumiendo que$$\big|F'_t(y)\big| \le B$$ para todos$$t$$ y$$y$$ de interés 7 De nuevo, este será el caso si$$f(t,y)$$ is a reasonably smooth function..

Sustituir en (E3) da

$|\varepsilon_{n+1}| \le |\varepsilon_n| + Bh|\varepsilon_n| +\half Ah^2 = (1+Bh)|\varepsilon_n| +\half Ah^2 \tag{E4-n} \nonumber$

De ahí que la (ligada a la) magnitud del error total,$$|\varepsilon_{n+1}|\text{,}$$ consta de dos partes. Una parte es la magnitud del error de truncamiento local, que no es más que$$\half Ah^2$$ y que está presente aunque iniciemos el paso sin ningún error, es decir, con$$\varepsilon_n=0\text{.}$$ La otra parte se debe al error combinado de todos los pasos anteriores. Este es el$$\varepsilon_n$$ término. Al inicio del número de paso$$n+1\text{,}$$ el error combinado tiene magnitud$$|\varepsilon_n|\text{.}$$ Durante el paso, este error se magnifica en no más que un factor de$$1+Bh\text{.}$$

La segunda mitad de la derivación es aplicar repetidamente (E4-n) con$$n=0,1,2,\cdots\text{.}$$ Por definición$$\phi(t_0)=y_0$$ para que$$\varepsilon_0=0\text{,}$$ así

\ begin {alignat*} {2} & (\ text {E4-0})\ implies|\ varepsilon_1|&&\ le (1+Bh) |\ varepsilon_0| +\ tfrac {A} {2} h^2 =\ tfrac {A} {2} h^2\ & (\ text {E4-1})\ implíes|\ varepsilon_2|&&\ le (1+Bh) |\ varepsilon_1| +\ tfrac {A} {2} h^2 = (1+Bh)\ tfrac {A} {2} h^2+\ tfrac {A} {2} h^2\ & (\ texto {E4-2})\ implíce|\ varepsilon_2|&&\ psilon_3|& amp; &\ le (1+Bh) |\ varepsilon_2| +\ tfrac {A} {2} h^2 = (1+Bh) ^2\ tfrac {A} {2} h^2+ (1+Bh)\ tfrac {A} {2} h^2+\ tfrac {A} {2} h^2\ end {alignat*}

Continuando de esta manera

$|\varepsilon_n|\le (1+Bh)^{n-1}\tfrac{A}{2}h^2+\cdots+(1+Bh)\tfrac{A}{2}h^2+\tfrac{A}{2}h^2 =\sum_{m=0}^{n-1} (1+Bh)^m \tfrac{A}{2}h^2 \nonumber$

Este es el comienzo de una serie geométrica, y podemos resumirla usando$$\ \sum\limits_{m=0}^{n-1} ar^m=\frac{r^n-1}{r-1}a\$$ (que es Teorema 1.1.6 (a)) con$$\ a=\tfrac{A}{2}h^2\$$ y$$\ r=1+Bh\$$ da

$|\varepsilon_n|\le \frac{(1+Bh)^n-1}{(1+Bh)-1}\frac{A}{2}h^2 =\frac{A}{2B}\big[(1+Bh)^n-1\big]h \nonumber$

Nos interesa cómo se comporta esto a medida que$$t_n-t_0$$ aumenta y/o$$h$$ disminuye. Ahora$$n=\frac{t_n-t_0}{h}$$ para que$$(1+Bh)^n=(1+Bh)^{(t_n-t_0)/h}\text{.}$$ Cuando$$h$$ es pequeño, el comportamiento de no$$(1+Bh)^{(t_n-t_0)/h}$$ es tan obvio. Entonces usaremos un poco de engaño para que sea más fácil de entender. Ajuste$$x=Bh$$ en

$x\ge 0\implies 1+x\le 1+x+\frac{1}{2}x^2+\frac{1}{3!}x^3+\cdots = e^x \nonumber$

(la serie exponencial$$e^x= 1+x+\frac{1}{2}x^2+\frac{1}{3!}x^3+\cdots$$ se derivó en el Ejemplo 3.6.5. da 8 Cuando$$x=Bh$$ is large, it is not wise to bound the linear $$1+x$$ by the much larger exponential $$e^x\text{.}$$ However when $$x$$ is small, $$1+x$$ and $$e^x$$ are almost the same.$$1+Bh\le e^{Bh}\text{.}$$ De ahí$$(1+Bh)^n\le e^{Bhn}=e^{B(t_n-t_0)}\text{,}$$ desde$$t_n=t_0+nh\text{,}$$ y llegamos a la conclusión

##### Ecuación D.2.6

$|\varepsilon_n|\le \frac{A}{2B}\left[e^{B(t_n-t_0)}-1\right]h \nonumber$

Esto es de la forma$$K(t_f)h^k$$ con$$k=1$$ y el coeficiente$$K(t_f)$$ creciendo exponencialmente con$$t_f-t_0\text{.}$$ Si nos mantenemos$$h$$ fijos y$$t_n$$ aumentamos vemos crecimiento exponencial, pero si arreglamos$$t_n$$ y$$h$$ disminuimos vemos que el error disminuye linealmente. Esto es justo lo que sugirieron nuestros datos experimentales.

This page titled D.2: Solucionadores simples de ODE — Comportamiento de errores is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by Joel Feldman, Andrew Rechnitzer and Elyse Yeager via source content that was edited to the style and standards of the LibreTexts platform.