53 votos

Mostrar ese punto flotante $\sqrt{x \cdot x} \geq x$ $ $x largo todos.

He verificado experimentalmente que en Java la igualdad

Math.sqrt(x*x) = x

tiene para todos los long x tal que x*x no se desborde. Aquí, Java long $64$ bits con signo tipo y double es un binario IEEE de punto flotante tipo con al menos $53$ bits de mantisa y lo suficientemente largo como exponente.

Matemáticamente, hay dos imprecisa funciones:

  • La conversión de long a double que pierde precisión debido a la mantisa ser sólo $53$ bits donde $63$ bits sería necesario. Esta operación está garantizada para devolver el representable más cercano resultado.
  • La informática de la raíz cuadrada, que también es una garantía para devolver el representable más cercano resultado.

Matemáticamente, esto puede ser expresado como

$$ \mathop\forall_{x \in {\mathbb N} \cima de x \le 3037000499} \mathrm{ronda}\left(\sqrt{\mathrm{ronda}(x^2)}\right) = x $$

donde $\mathrm{ronda}$ es la función de redondeo de $\mathbb R$ en el conjunto de todos los números representables como double.

Estoy buscando una prueba ya que ningún experimento puede asegurar que funciona a través de todas las máquinas.

44voto

Alex Tereshenkov Puntos 13433

La idea es simple: Encontrar los límites superior e inferior para

$$X= \sqrt{\mathrm{ronda}(x^2)}$$

y demostrar que $\mathrm{ronda}(X) = x$.


Deje que $\mathrm{ulp}(x)$ denotar la unidad de menos precisión en $x$ y dejar que $E(x)$ y $M(x)$ denotar el exponente y la mantisa de $x$, es decir,

$$x = M(x) \cdot 2^{E(x)}$$

con $1 \le M(x) < 2$ y $E(x) \in \mathbb Z$. Definir

$$\Delta(x) = \frac{\mathrm{ulp}(x)}x = \frac{\mu \cdot 2^{E(x)}}x = \frac\mu{M(x)}$$

donde $\mu=2^{-52}$ es la máquina de epsilon.

Expresar la función de redondeo por su relativa error que lleva a

$$X = \sqrt{(1+\epsilon) \cdot x^2} = \sqrt{(1+\epsilon)} \cdot x < \big( 1+\frac\epsilon2 \big) \cdot x$$

Nosotros sabemos que $|\epsilon| \le \frac12\Delta(x^2)$ y obtener (ignorando el caso trivial $x=0$)

$$\frac Xx < 1 + \frac{\Delta(x^2)}4 = 1 + \frac\mu{4 M(x^2)}$$


Mediante la observación de $M(x)$ y $M(x^2)$ por ejemplo, en el intervalo $[1, 4]$, puede ser fácilmente demostrado que $\frac{M(x)}{M(x^2)} \le \sqrt2$ que nos da

$$\frac Xx < 1 + \frac{\mu\sqrt2}{4 M(x)}$$

y por lo tanto

$$X < x + \frac{\sqrt2}4 \frac{\mu}{M(x)} \cdot x < x + \frac12 \mathrm{ulp}(x)$$


De forma análoga podemos obtener el correspondiente límite inferior. Sólo que en lugar de

$$\sqrt{(1+\epsilon)} < \big( 1+\frac\epsilon2 \big)$$

podemos usar algo como

$$\sqrt{(1-\epsilon)} > \big( 1 - (1+\epsilon) \cdot \frac\epsilon2 \big)$$

cual es suficiente, ya que se utilizó un muy generoso presupuesto ($\sqrt2/4<\frac12 de dólares) en el último paso.


Porque de $|X-x|$ ser menor que $\frac12 \mathrm{ulp}(x)$, $x$ es el double más cercana a $X$, por lo tanto $\mathrm{ronda}(X)$ debe ser igual a $x$, q.e.d.

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