Entrada destacada

Distancia media de dos puntos en un cuadrado unitario

martes, 5 de septiembre de 2017

Sucesiones Recurrentes



Es la sucesión donde el valor actual depende de valores anteriores de la sucesión, es indispensable siempre inicializarla con los primeros términos. Si depende del valor anterior se dice que es de primer orden y se necesita conocer únicamente su primer valor, si depende de los dos anteriores se dice de segundo orden y es necesario conocer sus dos primeros valores, y así sucesivamente.

Dada una sucesión de segundo orden con condiciones iniciales

s (n) = 2 s (n - 1) - 3 s (n - 2)*s (n - 1)    s (1) = 2, s (2) = 1

Podemos encontrar sus primeros términos utilizando el siguiente código:

Generamos primero la función que corresponde al término enésimo:

Clear[s]
RecurrenceTable[{s[n] == 2 s[n - 1] - 3 s[n - 2]*s[n - 1], s[1] == 2, 
  s[2] == 1}, s, {n, 1, 10}]

{2, 1, -4, 4, 56, -560, 92960, 156358720, -43605007116160,
20454069207610992513280}

Un tipo especial de sucesiones recurrentes son las lineales que se caracterizan por que solo existen sumas y restas y productos por constantes entre los términos de la sucesión y sus términos anteriores. Para ellos Mathematica incorpora una función RSolveValue que permite encontrar el valor del término enésimo. Por ejemplo para la sucesión:

s (n) = 3 s (n - 1) - 2 s (n - 2) con   s (1) = 1, s (2) = 4

tenemos que :

RSolveValue[{s[n] == 3 s[n - 1] - 2 s[n - 2], s[1] == 1, s[2] == 4}, s[n], n]

1/2 (-4 + 3×2ⁿ)

y sus primeros 20 términos son :

Table[1/2 (-4 + 3× 2ⁿ), {n, 1, 20}]

{1, 4, 10, 22, 46, 94, 190, 382, 766, 1534, 3070, 6142, 12286, 24574, 49150, 98302, 196606, 393214, 786430, 1572862}

En algunos casos se puede realizar el proceso inverso, es decir tenemos los primeros términos y calcular el término enésimo:

FindSequenceFunction[{1, 4, 10, 22, 46, 94, 190, 382, 766, 1534, 3070,
   6142, 12286, 24574, 49150, 98302, 196606, 393214, 786430, 1572862},
  n]

1/2 (-4 + 3× 2ⁿ)

Estos procesos de las funciones RSolveValue y FindSequenceFunction se realizan utilizando la Transformada Z que hace paso por los números complejos, por eso es posible que los resultados estén expresados en complejos, pero al calcular sus valores son números reales, por ejemplo:

RSolveValue[{s[n] == -3 s[n - 2], s[1] == 1, s[2] == 4}, s[n], n]








{1, 4, -3, -12, 9, 36, -27, -108, 81, 324}


Entre las sucesiones recurrentes lineales hay varias que son famosas como por ejemplo la sucesión de Fibonacci y la sucesión de Lucas, Mathematica las tiene ya incluidas como funciones propias y algunos resultados de RSolveValue y FindSequenceFunction los da en términos de ellas.

La sucesión de Fibonacci está definida como la suma de los dos términos anteriores partiendo de unos en los dos primeros términos, así su fórmula de recurrencia es :

x (n) = x (n - 1) + x (n - 2) con x (1) = x (2) = 1

Mathematica tiene como función propia:

Fibonacci[3]

2

Table[Fibonacci[n], {n, 10}]

{1, 1, 2, 3, 5, 8, 13, 21, 34, 55}

La sucesión de Lucas, parece muy trivial, pues la misma Fibonacci solo que x(2)=3

LucasL[2]

3

Table[LucasL[n], {n, 10}]

{1, 3, 4, 7, 11, 18, 29, 47, 76, 123}

Sobre este par de sucesiones dedicaré más adelante una entrada.

Para la sucesión de Golomb, sobre la que hable en la publicación del 8 de agosto de 2017, el matemático Colin Mallows determinó la siguiente fórmula de recurrencia:

s (1) = 1,  y,  s (n + 1) = 1 + s (n + 1 - s (s (n)))



Para aprender más sobre Mathematica ingrese aquí sitio de aprendizaje de Wolfram o en mi website ustamathematica.wixsite.com/basicas

No hay comentarios.:

Publicar un comentario