10 votos

Resolver eficientemente una recursividad

Tengo una fórmula recursiva $$v(n+1) = v(n)\dfrac{1+v(n-1)-n}{1+v(n-1)-v(n)}$$ y también sé $$v(1)=2v(0)$$ $$n+1 \le v(n+1) \le v(n)+1.$$

Deseo encontrar, por ejemplo, $v(10)$ más eficiente que mi método actual no. Que implica el uso de la inestabilidad numérica de la recursividad, probando diferentes valores de $v(0)$, llevándolos hacia adelante hasta que uno de la desigualdad no se cumple, entonces se ajusta el cálculo de $v(0)$ usando una interseccion método, y de intentar de nuevo.

Si yo uso la suficiente precisión decimal (sobre $45$ decimales en este ejemplo) para mi los cálculos de búsqueda y, a continuación, puede obtener un valor de $v(0)$ sobre $0.6245357205\ldots$, lo que da un valor de $v(10)$ sobre $10.0000000114\ldots$.

Pero esto parece excesivo, sobre todo si quiero $v(n)$ grandes $n$; terminé encontrando $v(0)$ $2000$decimales en http://www.se16.info/hgb/lockedbox.pdf

Me preguntaba si podría haber un enfoque alternativo.

3voto

Colm Bhandal Puntos 2719

Se sugiere una Mejora del Algoritmo

Espero que me entiendan la pregunta correctamente. Mi interpretación es la siguiente:

Pregunta: Dado un poco de $n$, queremos encontrar una buena* valor aproximado para $v_n$ donde $v_n$ se define como la anterior.

Algoritmo

Empezamos con un poco de "razonable" la aproximación de $v_0$- sólo a un par de decimales es todo lo que necesitamos. Ahora podemos iniciar un intervalo de a $[n, n+v_0]$. Desde abajo sabemos que $v_n$ se encuentran en este rango. A partir de aquí, recorrer con la siguiente.

  1. Set $v_n$ con el punto medio del intervalo.

  2. Calcular la recurrencia hacia adelante hasta que se produce un error, alta o baja, tenga en cuenta el número de pasos que se dieron para fallar como $k$.

  3. Si $k$ es lo suficientemente grande, entonces parar.

  4. Otra nota de la dirección de la falla, picar el intervalo en consecuencia, y volver al primer paso.

Notas

Este es esencialmente el mismo que el método dado, con una diferencia importante: se inicio con una aproximación de $v_n$, no $v_0$. De esta manera, no perdemos el tiempo en pequeñas perturbaciones en el valor de $v_0$ que rápidamente llevan a grandes disturbios. En realidad nunca nos falla la prueba de $v_n$, debido a que podemos comenzar con una aproximación de $v_n$ en el área conocida. Podría decirse, entonces este es un enfoque mejor que comenzar a $v_0$, aunque realmente depende de lo que se entiende por una "buena" aproximación - ver más abajo. También depende de mi interpretación de la pregunta. Sin duda, se carece de una explícita del término de error.

Para este método, no necesitamos un masivamente aproximación exacta de $v_0$ a empezar. Sería una exageración. Esto es porque vamos a picar el intervalo de $[n, n+v_0]$, por lo que el ajuste fino de $v_0$ parece no tener sentido. Sin embargo, después de echar un vistazo al pdf enlazadas, yo me preocupo un poco sobre el término $u_n = v_n - n$, que parece tender hacia cero por un factor de $\frac1{n!}$. En este caso, comenzando en el punto medio de la $[n, n+v_0]$ me parece un poco tonto, y nos gustaría mucho mejor punto de partida mucho más cerca de a $n$. Yo no creo más acerca de esto, a pesar de que, como yo no sé de dónde la inversa factorial relación se origina, así que lo dejo hasta el interrogador para investigar este asunto.

*La definición de "bueno" es un poco confusa aquí. La interpretación estándar sería un error, en términos absolutos o porcentuales, desde el valor "true" (si es única). Sin embargo, el enfoque aquí sigue el estilo de la persona. Decimos que una aproximación es buena para $k$ $v_n$ si $k$ términos de $v_{n+1}$$v_{n+k}$, calculada a través de la recurrencia, el respeto de las desigualdades dadas. Otra interpretación sería también tomar algunos términos antes de $v_n$, la informática, la recurrencia hacia atrás, pero voy a dejar esto para más tarde trabajar.

Algunas Observaciones de edad

  • $v_0 \geq 0$. De lo contrario, $v(1)=2v(0)$ sería negativo, contradiciendo la segunda condición, en particular,$n + 1 \leq v_{n + 1}$, que para $n=0$ da $1 \leq v_1$.

  • Para todos los números naturales $n$, incluyendo a $0$,$n \leq v_n \leq n + v_0$. Esto se deduce de la segunda condición y un poco de inducción.

  • $v_n$ es monótonamente creciente, a partir de la última condición y el hecho experimental de que $0 < v_0 < 1$

Una pregunta que yo haría es: un no-trivial, exacto, la solución existe? Si es así, es único?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X