9 votos

Evitar la pregunta de cancelación numérica para$\sin x -\sin y$ para$x \approx y$

Al tratar de evitar la cancelación, se trata de reformular la ecuación para evitar la resta entre términos casi iguales.

En$\sin (x) - \sin (y), x \approx y$, la solución sugerida es reformularla a$$2\cos\left(\frac{x+y}{2}\right)\sin\left(\frac{x-y}{2}\right)$ $

Pero no entiendo cómo es mejor? La resta entre$x, y$ permanece. ¿Es porque$\lvert\,\sin(x)-\sin(y)\,\rvert\leq \lvert\,x-y\,\rvert$, por lo que es menos probable que ocurra una cancelación entre$x,y$ que los senos?

5voto

Andy Puntos 21

Realmente depende de cómo exactamente $x$ $y$ se dan. A menudo lo que realmente tenemos es no $x$ $y$ pero $x$$y-x$. A continuación, podemos ganar en precisión si podemos analíticamente escribe la sustracción de casi un número igual exclusivamente en términos de $y-x$, como se hizo aquí, porque ya estamos dados $y-x$ de precisión (con más precisión que la que obtendríamos si calculamos directamente).

En realidad, hay algunas funciones de biblioteca estándar por ahí especializados para este propósito exacto, por ejemplo "log1p", que se utiliza para calcular los $\log(1+x)$ pequeña $x$.

2voto

Benjamin Puntos 101

Una posibilidad: para determinar el seno utiliza la serie Maclaurin, y cuanto más rápido converja, menos operaciones mal vendidas deberá realizar para el factor$\sin(\frac{x-y}{2})$. La pequeña discusión en ese factor te lleva allí.

2voto

je44ery Puntos 395

Mientras que una función de $f : A \to B$ es un triple, que consiste en un dominio de $A$, un codominio $B$ y una regla que asigna a cada elemento de a $x \in A$ exactamente un elemento $f(x) \in B$, también muchos se centran exclusivamente en regla y olvidar cuidadosamente especificar el dominio y el codominio.

En este caso, la función en cuestión es $f : \mathcal F \times \mathcal F \rightarrow \mathbb R$ donde $$f(x,y) = \sin(x) - \sin(y),$$ y $\mathcal F$ es el conjunto de los números de la máquina, digamos, de doble precisión de punto flotante los números. Voy a explicar a continuación por qué yo que este es el derecho de dominio.

El problema de calcular una diferencia $d = a - b$ entre dos números reales $a$ $b$ es mal condicionado al $a \approx b$. De hecho, si $\hat{a} = a(1+\delta_a)$ $\hat{b} = b(1 + \delta_b)$ son los mejores disponibles aproximaciones de $a$$b$, entonces no podemos esperanza para calcular una mejor aproximación a $d$$\hat{d} = \hat{a} - \hat{b}$. El error relativo $$r = \frac{d - \hat{d}}{d},$$ satisface el obligado $$ |r| \leq \frac{|a| + |b|}{|a-b|} \max\{|\delta_a|,|\delta_b|\}$$ Al $a \approx b$, no podemos garantizar que la diferencia de $d$ es calculado con un pequeño error relativo. En la práctica, el error relativo es grande. Decimos que la resta magnifica el error cometido al sustituir $a$$\hat{a}$$b$$\hat{b}$.

En su situación $a = \sin(x)$$b = \sin(y)$. Se cometen errores en el cómputo de la función seno. No importa que estamos, lo mejor que podemos esperar es para obtener la representación de coma flotante de $a$, es decir, $\text{fl}(a) = \sin(x)(1 + \delta)$ donde $|\delta| \leq u$ $u$ es la unidad de redondeo. Por qué? El equipo puede también tener más registros para uso interno, pero eventualmente, el resultado tiene que ser redondeado a, digamos, de doble precisión, por lo que el resultado puede ser almacenado en la memoria. De ello se sigue, que si calculamos el $f$ utilizando la definición y $x \approx y$, entonces el resultado calculado se han error relativo que es muchas veces la unidad de redondeo.

Con el fin de evitar el delito de sustracción, nos dirigimos a la función de $g : \mathcal F \times \mathcal F \to \mathbb R$ dada por $$ g(x,y) = 2 \cos \left( \frac{x+y}{2} \right) \sin \left(\frac{x-y}{2} \right)$$ En ausencia de errores de redondeo $f(x,y) = g(x,y)$, pero en aritmética de punto flotante se comportan de manera muy diferente. La resta de dos números de punto flotante $x$ $y$ es perfectamente seguro. De hecho, si $y/2 \leq x \leq 2y$, entonces la resta se realiza con un guardia dígitos, a continuación, $x-y$ es calculado exactamente.

No estamos en el claro, como $x + y$ no se necesita ser un número de punto flotante, pero es calculado con un error relativo delimitada por la unidad de redondeo. En el desafortunado caso de que $(x+y)/2 \approx (\frac{1}{2} + k) \pi$ donde $k \in \mathbb Z$ el cálculo de $g$ sufre por el hecho de que el coseno es mal condicionado cerca de la raíz.

Con un condicional para elegir la correcta expresiones nos permite abarcar un mayor subconjunto del dominio.


En general, ¿por qué $\mathcal F$ en lugar de $\mathbb R$? Considerar el problema más sencillo de computación $f : \mathbb R \rightarrow \mathbb R$. En general, usted no sabe el valor exacto de $x$, y lo mejor que puede esperar es $\hat{x}$, la representación de coma flotante de $x$. El impacto de este error es controlado por el estado número de $f$. No hay nada que usted puede hacer acerca de la ampliación de la condición de los números, excepto cambiar a mejor hardware de simular una unidad más pequeña de redondeo $u'$. Esto te deja con la tarea de computación $f(\hat{x})$ donde $\hat{x} \in \mathcal F$ es un número de máquina. Es por eso $\mathcal F$ es el dominio de la naturaleza durante esta segunda etapa de diseño de un algoritmo para el cálculo de aproximaciones de $f : \mathbb R \to \mathbb R$.

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