Secuencias

Tengo una duda sobre como hacer un programa para "reconocimiento de secuencias" para explicar mejor un ejemplo :P
1 - 3 - 5 -7 .. Bueno es fácil saber que la secuencia va sumando 2 al anterior, lo que necesito es que a partir de 5 números dados, el programa sepa de que secuencia se trata... Las secuencias deben estar restringidas por los operadores de ( +,-,*, ^).

2 respuestas

Respuesta
1
Normalmente lo que vas a hacer es usar un método numérico de predicción, o sea si pones las cifras en secuencia en un sistema XY de coordenadas tienes N puntos y la idea es encontrar la "mejor curva" pasa por esos puntos y claro, si esos números se originan de una función analítica, claramente el programa la encontrará, o sea:
Si llamamos n a la cifra enésima de la secuencia y xn a esa cifra, tenemos
xn = f(n)
f(n) en su forma general puede ser un polinomio de grado n-1, así tendrás n polinomios con n incógnitas
xn = a0 + a1*n + a2*n^2 + a3*n^3 +...
an * n^(n-1)
O sea, para los n datos tienes las n ecuaciones polinómicas
x1= a0 + a1*1 + a2*(1^2) + a3*(1^3)+...
x2= a0 + a1*2 + a2*(2^2) + a3*(2^3)+...
x3= a0 + a1*3 + a2*(3^2) + a3*(3^3)+...
.....etc........
Así por ejemplo para estos datos de ejemplo das las ecuaciones quedarían
1 = a0 + a1 + a2 + a3
3 = a0 + 2a1 + 4a2 + 8a3
5 = a0 + 3a1 + 9a2 + 27a3
7 = a0 + 4a1 + 16a2 + 64a3
Si resuelves el sistema, como es lineal claramente
f(n) = 2*n - 1
o sea te debe salir
a0= -1 , a1= 2, a2= 0, a3 = 0
Este método siempre detectará una secuencia, tendencia o descubrirá la función de la cual se originó la secuencia numérica que puede ser entera o no, la única desventaja se torna en cuanto a la precisión, para N datos necesitas trabajar con matrices de orden N, y si tienes 100 o 1000 datos la exactitud se torna compleja, por eso se deben seguir otros algoritmos de cálculo no tradicionales para resolver esos sistemas, pero como en tu caso llegas a 5 datos a lo más vas a estar con matrices de 5x5 las computadoras modernas no te van a dar problema
Un grado menor en complejidad te lo ofrece la "regresión polinómica" que si bien no es tan exacta como este método te da valores muy cercanos a los de la secuencia pues usa método estadísticos y de los mínimos cuadrados, en Google encontrarás como se define y usa la regresión polinómica
Para juegos de azar este método es bastante bueno y da resultados.
Muy buena solución ! Es la que implemente hace un día (Lagrange)! Pero muchas gracias por las demás recomendaciones ... es de mucha ayuda =)
Respuesta
-1
Bueno eso ya no es tanto un problema de programación, más bien es Matemático, primero debes de saber como resolverlo a mano y luego ya que tengas la fórmula ahora si implementarle en un lenguaje de programación como Delphi. Lo que intento decirte es que tienes que darme más especifico el problema, porque así entonces me pondrías a mi trabajar en tu sistema y eso me llevaría mucho tiempo, cosa que no disponemos de mucho.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas