Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

why does this call to ListPlot3D crash the kernel?

114 views
Skip to first unread message

Michael Stern

unread,
Aug 18, 2011, 3:23:12 AM8/18/11
to
I have a matrix of 48 three-number lists that is for some reason killing
the kernel when I try to graph it.

flatvaluematrix={{3525206400, -0.001, 33.0746}, {3525206400, 0.005,
12786.3}, {3525206400, 0.011, 38541.}, {3525206400, 0.017,
65163.}, {3527798400, -0.001, 23.5575}, {3527798400, 0.005,
12559.3}, {3527798400, 0.011, 38463.9}, {3527798400, 0.017,
65143.1}, {3530476800, -0.001, 15.0909}, {3530476800, 0.005,
12299.7}, {3530476800, 0.011, 38387.1}, {3530476800, 0.017,
65126.1}, {3533068800, -0.001, 8.58963}, {3533068800, 0.005,
12022.3}, {3533068800, 0.011, 38318.7}, {3533068800, 0.017,
65113.8}, {3535747200, -0.001, 4.53454}, {3535747200, 0.005,
11762.1}, {3535747200, 0.011, 38267.4}, {3535747200, 0.017,
65106.6}, {3538425600, -0.001, 1.87709}, {3538425600, 0.005,
11474.7}, {3538425600, 0.011, 38224.9}, {3538425600, 0.017,
65102.2}, {3540931200, -0.001, 0.562167}, {3540931200, 0.005,
11178.4}, {3540931200, 0.011, 38195.7}, {3540931200, 0.017,
65100.3}, {3543609600, -0.001, 0.110118}, {3543609600, 0.005,
10895.5}, {3543609600, 0.011, 38179.8}, {3543609600, 0.017,
65099.8}, {3546201600, -0.001, 0.00755001}, {3546201600, 0.005,
10603.2}, {3546201600, 0.011, 38172.9}, {3546201600, 0.017,
65099.6}, {3548880000, -0.001, 0.0000273622}, {3548880000, 0.005,
10312.}, {3548880000, 0.011, 38171.4}, {3548880000, 0.017,
65099.6}, {3551472000, -0.001, 1.06357*10^-11}, {3551472000, 0.005,
10119.2}, {3551472000, 0.011, 38171.3}, {3551472000, 0.017,
65099.6}, {3554150400, -0.001, 0.}, {3554150400, 0.005,
0.}, {3554150400, 0.011, 0.}, {3554150400, 0.017, 0.}};

ListPlot3D[flatvaluematrix]

Kaboom!

This fails under both Windows Mathematica 8.01 and Windows Mathematica 7.

Can anybody help?

Thank you.

MS

(For those who are curious, the first number in the list is a date, the
second is an interest rate spread, and the third is the value of a
financial instrument on the specified date and the given spread).

Heike Gramberg

unread,
Aug 19, 2011, 6:37:16 AM8/19/11
to
In my version of Mathematica, the kernel doesn't crash, but I do get the
following warning:

ListPlot3D::ntri: The data generates an inconsistent triangulation. You
can perturb the data to make it valid. >>

and Mathematica returns the unevaluated input. I suspect that the
problem is the discrepancy between the
range of y-values and the range of x-values which differ by a order 9.
One way to get the plot to word is to
do something like this

maxmin = {Min[#], Max[#]} & /@ Transpose[flatvaluematrix][[{1, 2}]];

rescaled =
Transpose[{Rescale[flatvaluematrix[[All, 1]]],
Rescale[flatvaluematrix[[All, 2]]],
flatvaluematrix[[All, 3]]}];

gr = ListPlot3D[
rescaled, PlotRange -> All];

gr /. GraphicsComplex[a__] :>
GeometricTransformation[GraphicsComplex[a],
RescalingTransform[{{0, 1}, {0, 1}, {0, 1}},
Append[maxmin, {0, 1}]]]

This basically rescales the x,y-values of the data points so that they
lie in the range {0,1}, plots the rescaled
points, and then stretches the graph in the x and y-direction back to
the original values of x and y.


Heike

McHale, Paul

unread,
Aug 19, 2011, 6:37:47 AM8/19/11
to
The range of the biggest to smallest number could be too great.

flatvaluematrixnew=Map[#*{0.000001,1,1}&,flatvaluematrix]
ListPlot3D[flatvaluematrixnew]

Works just fine. Can you scale this way and still get useful information?
ListPlot[] has no problem which is odd.

p1=Map[ListPlot[#,Joined->True]&,flatvaluematrix];
Show[p1]


Maybe it is a limitation in the surfacing algorithms. Not sure...


Paul McHale | Electrical Engineer, Energetics Systems | Excelitas Technologies Corp.

Phone: +1 937.865.3004 | Fax: +1 937.865.5170 | Mobile: +1 937.371.2828
1100 Vanguard Blvd, Miamisburg, Ohio 45342-0312 USA
Paul....@Excelitas.com
www.excelitas.com

Please consider the environment before printing this e-mail.
This email message and any attachments are confidential and proprietary to Excelitas Technologies Corp. If you are not the intended recipient of this message, please inform the sender by replying to this email or sending a message to the sender and destroy the message and any attachments.
Thank you

Joseph Gwinn

unread,
Aug 19, 2011, 6:38:17 AM8/19/11
to
In article <j2iel0$bis$1...@smc.vnet.net>,
Michael Stern <nycs...@gmail.com> wrote:

Mathematica 8.0.1.0 on MacOS 10.6.8 does not crash, but it yields an odd error
message:

"ListPlot3D::ntri: The data generates an inconsistent triangulation. You
can perturb the data to make it valid."

The complaint basically means that the dataset cannot be interpreted as
the description of a surface. Plot3D does not do point clouds.

Do you mean to plot points? If so, you need an added step, using Map[]
to make these into points, and Graphics to show them. For instance:

pointlist=Map[Point[#]&,flatvaluematrix];
Graphics3D[pointlist]

Joe Gwinn

Oleksandr Rasputinov

unread,
Aug 19, 2011, 6:40:51 AM8/19/11
to
On Thu, 18 Aug 2011 08:23:12 +0100, Michael Stern <nycs...@gmail.com>
wrote:

I can reproduce your observation in 7.0.1, but in 8.0.1 there is no crash
and the input returns unevaluated with the message:

ListPlot3D::ntri: The data generates an inconsistent triangulation. You
can perturb the data to make it valid.

But I am not quite sure what one is expected to do about this in practice.
However, plotting an interpolation of the data does work (though the
output seems rather uninteresting):

int = Interpolation[flatvaluematrix];
Plot3D[
int[x, y],
{x, Sequence @@ int[[1, 1]]} // Evaluate,
{y, Sequence @@ int[[1, 2]]} // Evaluate
]

(Mathematica 5.2 produces a plot in response to your input, although it
seems to be incorrect.)

0 new messages