4 votos

Algoritmo de raíz cuadrada entero

Actualmente estoy trabajando mi camino a través de David M. Bressoud "Factorización y Pruebas de Primalidad", y yo estoy luchando con un ejercicio (ejercicio 5.7) que le pide al lector demostrar que el siguiente algoritmo produce el mayor entero menor o igual a la raíz cuadrada de nn:

INITALIZE:READnanb(n+1)/2MYSTERY_LOOP:WHILEb<aDOabb(a×a+n)/(2×a)TERMINATE:WRITEa

Sé de análisis real de que la secuencia de xm+1=x2m+n2xm converge a la raíz cuadrada de n (para cualquier sensato x0), por lo tanto moralmente, yo puedo creer que el anterior algoritmo converge a la parte entera de la raíz cuadrada de n.

¿Cómo podemos demostrar formalmente que el algoritmo anterior obras (es decir, termina en un número finito de pasos, de tal manera que a2n(a+1)2>n), y por otra parte, ¿de inicio las iteraciones con b=n+12? Es n+12 sólo una muy cruda aproximación? ¿Cuál es su importancia?

He intentado dividir el piso en una parte real menos una parte entre 0 y 1 (es decir,x=x{x}), pero no he sido capaz de llegar muy lejos con esto.

Además, tenemos la misma convergencia cuadrática que tenemos cuando nos calcular el (ordinario) de la raíz cuadrada usando el método de Newton?

2voto

user1440894 Puntos 126

Después de algunos enraizamiento de todo, he encontrado la respuesta en otro hilo, pero en aras de la exhaustividad, voy a reproducir el argumento aquí (la prueba es tomada de un libro de texto de Cohen):

En primer lugar, tenga en cuenta que a b siempre son positivos. Si el algoritmo no terminar, la condición en el misterio de bucle (b<a) implica que tendríamos un infinito, estrictamente decreciente, la secuencia de enteros positivos, lo cual es una contradicción, ya que hay sólo un número finito de números de menos de n. De manera que el algoritmo termina.

Por lo tanto, en algún punto, debemos tener la ba, es decir,a2+n2aa. Also note that t2+n2tn for all positive t (easily shown), thus we have an. So assume un does not equal n. So n+1 which implies that 2>n. Putting this together, we get 0a2+n2aa=na22a<0 because na2<0. This is a contradiction, and thus, mustbeequaltotheintegersquarerootof n.

En el enlace de arriba, también hay algo de debate sobre la complejidad del algoritmo anterior, que me puede agregar más tarde.

-1voto

tomi Puntos 2321

Usando la notación de la a b sólo es necesario cuando la programación.

Se han identificado correctamente que el algoritmo da una secuencia de valores, que voy a llamar (como lo hizo) el xm.

Así tenemos que la relación se xm+1=x2m+n2xm

Comenzando con x0=n da x1=x20+n2x0=n2+n2n=n+12, que responde a una de sus preguntas. También demuestra que el cambio de x0 x1es siempre una disminución (a menos que n=1).

Dados dos términos sucesivos de la secuencia de xmxm+1, hay tres resultados posibles:

1) xm+1=xm

2) xm+1<xm

3) xm+1>xm

Vamos a considerar estos a su vez.

1) xm+1=xm

x2m+n2xm=xm

El floor función puede ser tratado por expresar x2m+n2xm=x2m+n2xmp donde 0p<1

Así tenemos a x2m+n2xmp=xm

Reorganización de da nx2m2xm=p

Desde 0p<1, podemos decir que el 0nx2m2xm<1

Tener en cuenta esto en dos partes, tenemos:

0nx2m2xm

xm es positivo, por lo 0nx2m

x2mn

xmn

Entonces:

nx2m2xm<1

nx2m<2xm

n<x2m+2xm

Completando el cuadrado,

n+1<x2m+2xm+1

n+1<(xm+1)2

n+1<xm+1>

n+11<xm

Hay que poner las dos desigualdades de nuevo juntos nos da n+11<xmn

Se puede demostrar (binomio de expansión) que n+11>n1 tenemos que:

n1<xmn

Así que si la secuencia converge a un valor, entonces este será el entero más grande menor o igual a la raíz cuadrada de n.

Podría ser, sin embargo, que los valores oscilan sin convergentes. ¿Qué acerca de esas situaciones?

Movimiento:

2) xm+1<xm

Siguiendo el mismo método que antes, tenemos

x2m+n2xmp<xm

nx2m2xm<p

nx2m2xm<1

nx2m<2xm

n<x2m+2xm

n+1<x2m+2xm+1

n+1<(xm+1)2

n+1<xm+1

xm>n+11

Como antes, esto da xm>n

Si hay dos sucesivas disminuciones en el valor, tanto en xm xm+1 será mayor que xm>n, pero los valores se acercan más a xm>n, teniendo así la convergencia.

3) xm+1>xm

x2m+n2xmp>xm

nx2m2xm>p

Sabemos que p0, lo nx2m2xm0

nx2m0

x2mn

xmn

Esto significa que un aumento en los valores de la secuencia sólo ocurre si el valor de la secuencia es menor o igual a la raíz cuadrada. No puede haber un infinito de ejecución de los aumentos porque finalmente el valor será mayor que la raíz cuadrada. Por lo tanto, no debe ser finalmente una disminución en los valores de la secuencia.

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