Re: Help! About drawing a high-precision 3D graph
- To: mathgroup at smc.vnet.net
- Subject: [mg96353] Re: Help! About drawing a high-precision 3D graph
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Thu, 12 Feb 2009 06:35:45 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <gmu8la$ggt$1@smc.vnet.net>
In article <gmu8la$ggt$1 at smc.vnet.net>,
Chris <chris_wen_11 at hotmail.com> wrote:
> I met a problem with drawing a 3D graph. My data to be used in Mathematica
> Software is 15 digits, which means an example of those data is
> 58.1234343253452. These data represent the latitude an d longitude of world.
> So, I need to precisely paint those coordinate in a 3D space as a tiny point,
> perhaps the method ListPoint3D to be used.However, it seems that ListPoint3D
> does not support morn than 6 significant digits. So, can anyone help me ?
First, I assume you are talking about the standard built-in function
*ListPointPlot3D*
Second, you seems to imply that *ListPointPlot3D* works with single
floating-point precision numbers. How did you reach this --- erroneous
--- conclusion? Regarding hardware precision arithmetic, Mathematica
uses only *double* precision floating-point numbers.
Since seeing is believing, we check that the points within the plot are
represented in double-precision floating-point numbers. We create a
graph, use FullForm to spot where the points are stored (as a list of
triples within a structure Point[]), and check the precision of these
numbers.
In[1]:= g=ListPointPlot3D[Table[Sin[j^2+i],{i,0,3,0.1},{j,0,3,0.1}]]
In[2]:= FullForm[g]//Short
Out[2]//Short=
Graphics3D[List[List[Hue[0.67`,0.6`,0.6`],Point[List[\[LeftSkeleton]1\[Ri
ghtSkeleton]]]]],\[LeftSkeleton]1\[RightSkeleton]]
In[3]:= g[[1,1,2]]//Short
Out[3]//Short= Point[{{1.,1.,0.},<<959>>,{31.,31.,-0.536573}}]
In[4]:= Precision/@g[[1,1,2,1]]//Short
Out[4]//Short=
{MachinePrecision,MachinePrecision,<<958>>,MachinePrecision}
In[5]:= $MachinePrecision
Out[5]= 15.9546
Regards,
--Jean-Marc