4.4. Sucesiones recurrentes#

4.4.1. Sucesiones recurrentes en la recta#

La sucesión de números \(x_0, x_1, x_2, \dots\) se llama recurrente (también recursiva o iterativa) si cada término de la sucesión se calcula a partir de los anteriores:

\[ x_n = f (x_0, x_1, \dots , x_{n−1}). \]

Aquí nos centraremos en el caso cuando cada término se calcula a partir del inmediato anterior:

\[ x_n = f (x_{n−1}). \]

Para que una sucesión recurrente esté bien definida debemos específicar, además de la función f , el valor del primer elemento \(x_0.\)

Así, una sucesión recurrente se define por

\[\begin{split} \begin{cases} x_0& = a \\ x_n& = f(x_{n−1}) \end{cases} \end{split}\]

Este tipo de sucesiones aparece con frecuencia tanto en problemas teóricos como aplicados y recibe el nombre de sistema dinámico discreto.

4.4.1.1. Ejemplos#

  • La sucesión \(\{0, 1, 2, 3, \dots\}\) es una sucesión recurrente que puede definirse como

\[\begin{split} \begin{cases} x_0 =& 0\\ x_n =& x_{n−1} + 1. \end{cases} \end{split}\]

Ésta es una expresión como la anterior con \(a = 0\) y \(f(x) = x + 1.\)

  • La sucesión definida por

\[\begin{split} \begin{cases} x_0 =& 1\\ x_n =& 2x_{n−1}. \end{cases} \end{split}\]

Esta es la sucesión de las potencias de 2

\[ \{1, 2, 4, 8, 16, 32,\dots\} \]

4.4.1.2. Algoritmo para sucesiones recurrentes#

Observemos que, de acuerdo a la fórmula recurrente, los términos de la sucesión \(x_n\) se calculan aplicando sucesivamente la función \(f:\)

\[\begin{split} \begin{align*} x_0 &= a\\ x_1 &= f (a)\\ x_2 &= f ( f (a))\\ x_3 &= f ( f ( f (a)))\\ \cdots&\\ x_n &= \underbrace{f ( f (\cdots f}_{n \text{veces}} (x) \cdots )). \end{align*} \end{split}\]

Esto nos permite definir en Python la función x(n,a) que devuelve el \(n-\)ésimo valor de la sucesión con punto de partida \(x_0 = a.\)

4.4.2. Sucesiones recurrentes en el plano#

De forma análoga puede definirse la sucesión recurrente \((x_n, y_n)\) de vectores del plano mediante las fórmulas

\[\begin{split} \left\{ \begin{align*} x_0 &= a, y_0 = b\\ x_n &= f_1(x_{n−1}, y_{n−1})\\ y_n &= f_2(x_{n−1}, y_{n−1}). \end{align*} \right. \end{split}\]

Observemos que aquí debemos suministrar dos valores iniciales \(x_0,\) \(y_0,\) así como dos funciones de dos variables \(f_1(x, y)\) y \(f_2(x, y).\)

4.4.2.1. Ejemplos#

  • La sucesión definida por

\[\begin{split} \left\{ \begin{aligned} x_0 &= 1, y_0 = -1\\ x_n &= y_{n−1}\\ y_n &= x_{n−1} \end{aligned} \right. \end{split}\]

toma los valores \((1, −1), (−1, 1), (1, −1),\dots\)

  • Una sucesión recurrente vectorial que se usa con frecuencia es la definida con ayuda de una matriz

\[\begin{split} A = \begin{pmatrix} a & b \\ c & d \end{pmatrix} \end{split}\]

Se tiene

\[\begin{split} \left\{ \begin{align*} x_0 &= p, y_0 = q\\ x_n &= a x_{n-1} + by_{n-1}\\ y_n &= c x_{n-1} + dy_{n-1} \end{align*} \right. \end{split}\]

De forma abreviada se puee escribir

\[\begin{split} \begin{pmatrix} x_n\\ y_n \end{pmatrix} =A \begin{pmatrix} x_{n-1}\\ y_{n-1} \end{pmatrix} \end{split}\]

Es fácil comprobar que

\[\begin{split} \begin{pmatrix} x_n\\ y_n \end{pmatrix} =A^n \begin{pmatrix} p\\ q \end{pmatrix} \end{split}\]

Si escogemos, por ejemplo

\[\begin{split} A= \begin{pmatrix} 1 & 1\\ 1 & 0 \end{pmatrix} \end{split}\]

y \(x_0 = 1,\) \(y_0 = 1\) resulta la sucesión

\[\begin{split} \begin{pmatrix} x_n\\ y_n \end{pmatrix}= \begin{pmatrix} 1 & 1\\ 1 & 0 \end{pmatrix}^n \begin{pmatrix} 1\\ 1 \end{pmatrix} = \begin{pmatrix} 1&n\\ 1&0 \end{pmatrix} \begin{pmatrix} 1\\ 1 \end{pmatrix} = \begin{pmatrix} n+1\\ 1 \end{pmatrix} \end{split}\]

es decir \(x_n = n+1, y_n = 1.\)

4.4.2.2. Nota sobre le código para sucesiones recurrentes en el plano#

No es correcto utilizar el siguiente código

x = f1(x, y)
y = f2(x, y)

para obtener los valores de \(x\) e \(y\) en cada iteración. Pero lo siguinete xí es correcto

x, y = f1(x, y), f2(x, y)

¿Por qué?

4.4.3. Ejercicios#

1.- Define la función alfa(n) que devuelve el \(n-\)ésimo término de la sucesión dada por

\[\begin{split} \begin{cases} x_0 =& 1\\ x_n =& \sqrt{x_{n−1} + 1}. \end{cases} \end{split}\]
\[f(x) = \sqrt{x+1}\]
  1. Representa gráficamente los puntos \((n, x_n)\) para \(n = 0, 1, 2,\dots , 200.\) ¿Qué sugiere este resultado?

  1. Define la función beta(n) que devuelve el \(n-\)ésimo término de la sucesión dada por

\[\begin{split} \begin{cases} x_0 =& 0.2\\ x_n =& \lambda x_{n−1}(1-x_{n−1}). \end{cases} \end{split}\]

con \(\lambda = 4.\) La función \(f(x) = \lambda x(1-x)\) recibe el nombre de regla de actualización del proceso.

  1. Representa gráficamente los puntos \((n, x_n)\) para \(n = 0, 1, 2, \dots , 200.\) ¿Qué sugiere este resultado?

  1. Define la función gamma(n) que devuelve en forma de tupla el n-simo término de la sucesión vectorial dada por

\[\begin{split} \left\{ \begin{align*} x_0 &= 1, y_0 = 0\\ x_n &= x_{n−1} + y_{n−1}\\ y_n &= x_{n−1} - y_{n−1} \end{align*} \right. \end{split}\]
  1. Representa gráficamente los puntos \((x_n, y_n)\) para \(n = 0, 1, 2,\dots , 20.\) ¿Qué sugiere este resultado?