Sucesiones

Consideremos las sucesiones cuyos términos están definidos así:

b1, b2 ∈ R+

bn = (bn-1 + 1)/bn-2, ∀n >=3

Al igual que ocurre con la sucesión de Fibonacci, se observa que para avanzar a través de sus términos, basta con hacer operaciones con dos de ellos consecutivos. Por ejemplo, si tomamos los dos primeros términos 2 y 3, se obtienen los siguientes: 2, 3, 1, 1, 2, 3…, que sólo por casualidad, son todos enteros. Por otra parte, es fácil verificar que, para dos términos iniciales cualesquiera de R+, la sucesión generada mediante la relación recurrente anterior es cíclica, y eso en matemáticas se escribe:

∀b1,b2 ∈ R+, ∃p tal que ∀n>=1, bn+p = bn

Nuestra misión ahora consiste en:

  • Calcular el periodo: vamos a escribir un algoritmo que calcule el periodo p de una sucesión dada por sus dos primeros elementos.

Solución

Hallar el periodo

La idea es sencilla: considerando  los términos consecutivos c1 y c2 (con valores iniciales b1 y b2), basta con hacerlos avanzar hasta que se tenga nuevamente c1 = b1 y c2 = b2, y el periodo p será el número de avances efectuados. Esto en Java se hace:

int periodo(double primero, double segundo){
double b1 = primero;
double b2 = segundo;
double c1 = b1;
double c2 = b2;
int numPasos = 0;
do{
double c = (c2+1)/c1;
c1=c2;
c2=c;
numPasos++;
}while(b1!=c1 || b2!=c2);

return numPasos;
}

Teniendo en cuenta que el bucle con que generamos los términos bi de la sucesión está controlado por la expresión siguiente:

(c1=b1)∧(c2=b2)

que valora la igualdad de números reales, es necesario evitar el peligro de caer en un bucle infinito debido a las deficiencias de precisión en la representación de los números reales. Por ello, es mejor usar la función que hicimos en este ejercicio. Y así, sustituimos la salida del bucle por:

!proximidad(c1,b1) || !proximidad(b2,c2)

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s