2009-07-27 19 views
8

Tengo curiosidad acerca de los números infinitos en la informática, en particular pi.Pi/Infinite Numbers

Para que una computadora represente un círculo, debería comprender pi. Pero, ¿cómo puede ser si es infinito?

¿Estoy buscando demasiado en esto? ¿Usaría simplemente un valor redondeado?

+9

En realidad, no usaría el valor de Pi para dibujar círculos. La ecuación que describe un círculo es 'x^2 + y^2 = R^2' - sin mención de Pi, como puedes ver. Para obtener más detalles sobre cómo se implementa de manera eficiente, consulte http://en.wikipedia.org/wiki/Midpoint_circle_algorithm –

+3

Por cierto, pi no es infinito. La palabra correcta es "no terminante" (creo). –

+11

La palabra que quieres es trascendental. Medita en eso. –

Respuesta

15

Matemáticamente, las computadoras son tanto finitas como no continuas y, por lo tanto, no pueden conocer PI por completo ni hacer un círculo correctamente.

Sin embargo, en el ámbito digital ninguno de estos modos existe, por lo que es suficiente para aproximar PI y usar eso para representar aproximadamente el círculo, resultando exactamente los mismos píxeles que se hubieran calculado de un PI exacto de todos modos.

De cualquier manera, los píxeles resultantes no son realmente un círculo ya sea, debido a que son una colección finita de puntos digitales y un círculo es una curva formada por un número infinito de puntos, la mayoría con valores irracionales.

(Se me ha indicado que el PI no se usa normalmente para trazar un círculo, lo cual es cierto, sin embargo, los métodos usados ​​para trazar un círculo están relacionados con las fórmulas usadas para expresar y/o calcular el valor de PI, que todavía tienen los mismos problemas).

+0

Tengo curiosidad por saber por qué es el voto negativo al azar? Si hay algo mal con mi respuesta, por favor dígame. Pero AFAIK, es precisamente correcto, tanto matemáticamente como la teoría de la computación. – RBarryYoung

+1

+1 La lógica funciona donde falla la matemática. – WolfmanDragon

+1

De hecho, esta es una explicación de alto nivel perfectamente buena. Lo que lo hace tan bueno es que no solo se aplica a círculos, sino que es efectivamente universal. –

7

Una aproximación es generalmente suficiente. Para "renderizar" un círculo, la computadora solo necesita comprender pi lo suficientemente bien como para representar con precisión a cualquier resolución (finita) que se requiera.

Editar: como han señalado otros, ni siquiera necesita pi para hacer un círculo. Aún así, la esencia de la pregunta era "¿cómo lidian las computadoras con números como pi?" Usan aproximaciones, y quien usa esas aproximaciones debe decidir si son lo suficientemente precisas para el propósito dado.

+0

Para renderizar un círculo, generalmente no usas pi. – Nosredna

2

Las computadoras solo usan una buena aproximación de pi.

Desde el artículo de MSDN en System.Math.PI

El valor de este campo es 3,14159265358979323846.

BTW: PI is NOT infinite. Es irracional, lo que significa que tiene un número infinito de lugares decimales que no se repiten. Hay varias expresiones para PI que son muy cortas. (Ver el Wikipedia page para más detalles)

Aquí es una maravillosa expresión corta para PI:

PI as Integral

+0

PI NO tiene patrones de repetición decimales, ya que es trascendental, lo que significa que no sólo es irracional (no se puede expresar como una fracción de dos números enteros) también es no algebraica (no es la solución a cualquier ecuación polinómica racional) . – spatz

+0

No se repite. Tiene un número infinito de dígitos decimales * distintos de cero *, pero no se repiten. (Consulte los comentarios a la pregunta para el debate sobre cómo se llama en realidad) –

+0

doh! escribir "repetir" fue un error tipográfico total. Corregido ahora como "no repetitivo". – abelenky

1

creo que lo redondea a un número muy pequeño, y es más probable una constante. Si utiliza PHP, así es como hace PI:

 
echo pi(); // 3.1415926535898 
echo M_PI; // 3.1415926535898 

Al igual que sólo necesita 3,14159 en la escuela secundaria, los ordenadores sólo necesitan tanto conseguirlo bastante exacta.

+0

17 dígitos decimales es todo lo que puedes representar. –

1

Las computadoras solo usan valores redondeados de pi, a menos, por supuesto, que exista un caso especial, como la informática científica. Por ejemplo, en pitón pi se representa como:

>>> import math 
>>> math.pi 
3.1415926535897931 

Usted puede probar esto por sí mismo en IDLE, pitones intérprete interactivo.

+0

Interesante: C# informa el valor como 3.14159265358979323846. Tenga en cuenta los dígitos: 97931 frente a 97932 Eso me parece algo más que un error de redondeo. – abelenky

+0

Solo aproximadamente 17 de los dígitos son significativos. El último dígito es poco más que un ruido que proviene del algoritmo de conversión binario a decimal de la plataforma. –

1

Una aproximación es a menudo "lo suficientemente buena", ya sea que la obtenga utilizando un método de this site o another one.

"Representación" es otra cosa. Cuando tiene una resolución de pantalla finita, un valor perfecto de π no importa tanto.

ACTUALIZACIÓN: El cálculo puede ser diferente, diferente de la representación. Algunas aplicaciones pueden requerir una mayor precisión que la que proporciona el doble estándar. Depende del problema

2

Los lenguajes de programación utilizan una constante redondeada para pi y números "infinitos" similares.

Para obtener una mayor precisión, utiliza algoritmos iterativos que se enlazan durante el tiempo que sea necesario.

+0

Y esto - no el dibujo de círculos - fue la esencia de la pregunta. – HenryRootTwo

5

No necesita PI para dibujar un círculo. Hay muchas formas de dibujar un círculo. La manera ingenua es con seno y coseno.

El algoritmo que vi con mayor frecuencia en las máquinas de 8 bits fue Bresenham's circle. Ni siquiera necesitas matemáticas de coma flotante para eso.

+0

Sin() y Cos() ambos se calculan típicamente mediante PI, o con ** e ** o a partir de tablas de valores que se calcularon utilizando uno u otro de estos. Sí, hay formas de evitarlo, pero los métodos más directos generalmente usan PI. – RBarryYoung

+0

El seno y el coseno están relacionados con los números e, pi e imaginarios, pero no estoy de acuerdo con que sean _típicos_ que se calculen a partir de cualquiera de ellos, o de tablas que los representen. Diría que es típico que Sine y Cosine se calculen mediante una expansión en serie que converge rápidamente. Pero el lenguaje C no dice cómo deberían calcularse. Puede encontrar expansiones de Taylor que calculan las funciones circulares sin ninguna referencia a pi o e.Aunque, como dije, todas estas entidades están interrelacionadas. – Nosredna

+0

Mis disculpas, usted es la correcta Nosredna. En mi punto débil, parece que he olvidado cómo se construyen las series de Taylor y otros. – RBarryYoung

2

En algún lugar vi una prueba de que para dibujar un círculo alrededor del universo precisión milimétrica, se necesitaría menos de 100 dígitos de pi, es decir, lejos menos dígitos que los calculados por personas con demasiado tiempo en sus manos (o demasiada potencia de cálculo ...). Ahora, si solo pudiera encontrar esa prueba ... (editar) found it

+0

Sí, pero ¿y si quisieras antialias? – Nosredna

Cuestiones relacionadas