7

Optimizando un juego que estamos desarrollando, estamos entrando en la fase en la que cada ciclo de CPU ganó. Usamos radianes para los cálculos de posición de objetos que circulan alrededor de otros objetos y quiero reducir la precisión innecesaria en mis tablas de búsqueda. Para eso, hacemos un uso intensivo de un Pi predefinido. ¿Qué tan preciso debe ser este Pi?Cómo determinar la precisión de Pi (π)

lo tanto, mi pregunta es:

  • ¿Qué tan exacto es lo suficientemente preciso?
  • O mejor aún, cómo determinar la precisión necesaria?
+12

no entiendo cómo la exactitud de PI afectará a los ciclos de cálculo, cualquier operación con un valor doble tomará el mismo período de tiempo, sin tener en cuenta de qué tan preciso es o yo sn't. ¿Qué me estoy perdiendo? Gracias. –

+1

Creo que tal vez el interrogador no entendió eso, y supuso que un valor realmente preciso tardó más en multiplicarse o algo así. – mquander

+2

@ mquander - Tienes razón. No tenía idea de que funciona de esa manera. – Kriem

Respuesta

18

Puede que sea tan preciso como cualquier representación de coma flotante que pueda almacenar. No llevará más tiempo realizar cálculos utilizando un número de coma flotante más preciso del mismo tipo.

La precisión se mide generalmente como el número de dígitos significativos; tendrá que decidir por sí mismo en cuántos dígitos de precisión está interesado. Si utiliza un valor menos preciso para pi, la imprecisión de ese valor se propagará a los demás cálculos.

+3

+1 solo por usar la representación de coma flotante completa. Todo lo demás se truncará, cualquier cosa menos es tonto, ¿por qué introducir un error intencional sin ningún beneficio? – Eclipse

+0

¿Qué sucede si la decisión que se toma es entre flotante y doble? Entonces –

+1

casi seguro recoger flotador, flotación, porque es bastante precisa, pero que necesita para analizar el escenario de uso especial (en la forma que demostró en su respuesta) para determinar si realmente necesita la precisión del doble. – mquander

0

No está del todo claro qué Tú lo estás haciendo. ¿Estás buscando coordenadas según un ángulo? En este caso, la precisión de Pi no importa en absoluto. Importante es el tamaño de la tabla de búsqueda y, por supuesto, lo calculará previamente con la mayor precisión posible. La precisión adicional no cuesta tiempo de ejecución adicional, además de que está pensando en cambiar el tipo de datos de simple a doble.

+0

Eso es exactamente lo que estoy haciendo.¿Cómo no importa la precisión de Pi? – Kriem

1

Si está haciendo un cálculo previo y almacenándolo, puede usar la biblioteca matemática de su sistema para calcularla una vez con la mayor precisión posible. Una buena opción es:

double PI = (16.0 * atan(1/5)) - (4.0 * atan(1/239)); 

que le dará un valor bastante exacto para PI que se puede calcular en el arranque y volver a utilizar según sea necesario. Es difícil obtener una versión más precisa que la que es fácilmente reutilizable.

+4

¿Por qué no solo codificarlo como una constante? – mquander

+0

@mquander Solo en caso de que cambie = D – DevinB

+3

¡Oh, no hay problema, solo cargue la constante de un archivo de configuración XML! – mquander

0

Si está calculando previamente el valor, hágalo lo más preciso posible, pero para obtener la sensación real de la precisión que realmente necesita, debe observar sus fórmulas y la precisión de otros componentes y asegurarse de que el la precisión que tiene para pi coincide con otros componentes. El análisis numérico le dará una veintena de pistas.

6

Como una comparación: Creo que la NASA usa pi con 7 decimales de precisión para poder atracar en el espacio.

En primer lugar, debemos determinar qué tan precisos deben ser los cálculos de su posición, es decir, qué tan precisas deben ser las fórmulas de su programa que dependen de pi. Necesitamos comenzar allí para saber qué tan preciso es el pi que necesita para lograr esto.

Una vez que se haya determinado esto, probablemente pueda usar un análisis numérico más o menos directo para determinar qué tan buena precisión necesita para pi. Puedo ayudarte con eso, pero necesito las fórmulas de posición para hacerlo :)

Editar: sospecho que tus fórmulas dependen linealmente de pi, es decir, no estás usando alguna función oscura f (x, y, z, pi) donde pi es cuadrado o similar. En ese caso, la precisión de su fórmula es un factor multiplicado por la precisión de pi, p. k * eps (pi). De lo contrario, es básicamente un factor multiplicado por la derivada de f con respecto a pi. Sin contar la precisión de todos los otros parámetros, ¡depende f!

¡Salud!

3

Depende de cuántos significant digits tiene en su cálculo. Dada la fórmula

C = pi * D

si desea saber cuántas pulgadas en la circunferencia de un círculo de una millas de diámetro, que había necesidad de seis dígitos de pi para mantener el precisión que desea, ya que hay 63,360 pulgadas en una milla, y habría 199,051 pulgadas en la circunferencia. Como hay seis dígitos significativos en la respuesta, necesito seis dígitos de pi para calcular la precisión necesaria.

3,14 * 63.360 = 198950,4

3,142 * 63.360 = 199077,12

3,1416 * 63.360 = 199051,776

3,14159 * 63.360 = 199051,1424

Como se puede ver, me dio la respuesta correcta en este caso con solo 5 dígitos de pi, pero ese no siempre será el caso. Necesita al menos tantos dígitos de pi como dígitos significativos para asegúrese de que tenga la precisión suficiente.

+0

Eso suena razonable. Creo que primero necesita ver el número más grande que aparece en sus cálculos y luego verificar los dígitos significativos. – xxxxxxx

-1

La Biblia dice que el valor de Pi es 3 (link). Así que por supuesto que sólo debe utilizar ese :)

+0

¿Has leído ese enlace? Es muy claro que desacredita su declaración. – Kevin

+0

lo siento aquí hay otro: http://gospelofreason.wordpress.com/2007/06/13/god-said-pi-3-stand-by-your-beliefs-dammit/ – Yogi

+0

BTW Espero que te des cuenta I estoy bromeando. – Yogi

-1

nueva fórmula para pi

Pi=2.m.sin(90/m) 

Pi=3.m.sin(60/m) 

Pi=4.m.sin(45/m) 

Pi=5.m.sin(36/m) 

Para millones de personas en el valor de PI calculadora libre XP, XM, ... .. recomendar m = 1.0E + 10 millones de el éxito de la calculadora es necesario instalar netframework2.0

http://harry-j-smith-memorial.com/index.html

Cuestiones relacionadas