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