Tangencialmente relacionada con la pregunta this, ¿qué está pasando exactamente aquí con el formato del número?Formatos de números internos de Mathematica y precisión
In[1] := InputForm @ 3.12987*10^-270
Out[1] := 3.12987`*^-270
In[2] := InputForm @ 3.12987*10^-271
Out[2] := 3.1298700000000003`*^-271
Si utiliza *10.^
como el multiplicador de la transición es donde se ingenuidad esperar que sea:
In[3] := InputForm @ 3.12987*10.^-16
Out[3] := 3.12987`*^-16
In[4] := InputForm @ 3.12987*10.^-17
Out[4] := 3.1298700000000004`*^-17
mientras que *^
toma la transición un poco más, aunque es la precisión de la máquina que se inicia descamación cabo:
In[5] := InputForm @ 3.12987*^-308
Out[5] := 3.12987`*^-308
In[6] := InputForm @ 3.12987*10.^-309
Out[6] := 3.12987`15.954589770191008*^-309
inicia la base de la ruptura sólo mucho más tarde
In[7] := InputForm @ 3.12987*^-595
Out[7] := 3.12987`15.954589770191005*^-595
In[8] := InputForm @ 3.12987*^-596
Out[8] := 3.1298699999999999999999999999999999999999`15.954589770191005*^-596
Supongo que estas transiciones se relacionan con el formato en el que Mathematica mantiene internamente sus números, pero ¿alguien sabe, o se preocupa de arriesgarse adivinando cómo?
1 para el uso de 'haphazardly' mientras que describe el comportamiento del software. –
Gracias por las ideas. La transición a la precisión arbitraria siempre me ha confundido, especialmente cuando tengo que escribir grandes cantidades de datos en un archivo y de repente ~ 16 caracteres de datos de precisión se agregan a cada número. – Timo
@Timo 16 caracteres parece excesivo. ¿Quiere decir que el número que obtiene es alrededor de 16 bytes más grande que una máquina doble? ¿O que observas ese fenómeno de bit de guardia? Si los números en cuestión están de hecho dentro del rango de tamaño de los dobles de la máquina, siéntete libre de publicar o enviarme un ejemplo, ya que puede indicar un problema en tu código o en Put o Export de Mathematica, lo que sea que estés usando. –