Re: Incredible slow Plot
- To: mathgroup at smc.vnet.net
- Subject: [mg120150] Re: Incredible slow Plot
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Sun, 10 Jul 2011 05:00:44 -0400 (EDT)
- References: <201107091135.HAA13652@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
We need details, so this is just a guess... but make sure NDSolve isn't
being solved all over again for each plot point.
That is, you compute an Interpolation function, you Set (not SetDelayed) a
function equal to it, and you use that function in the Plot.
Here's one way to do it right (for the first example in Help for NDSolve):
f = y /. First@
NDSolve[{y'[x] == y[x] Cos[x + y[x]], y[0] == 1}, y, {x, 0, 30}];
t1 = First@Timing[Plot[f@x, {x, 0, 30}, PlotRange -> All];]
0.012584
and here's a simple way to do it wrong:
f := y /.
First@NDSolve[{y'[x] == y[x] Cos[x + y[x]], y[0] == 1},
y, {x, 0, 30}];
t2 = First@Timing[Plot[f@z, {z, 0, 30}, PlotRange -> All];]
2.29799
t2/t1
182.612
That's a big difference in speed, you'll have to agree.
Bobby
On Sat, 09 Jul 2011 06:35:00 -0500, Iván Lazaro <gaminster at gmail.com>
wrote:
> Hi!
>
> I'm trying to Plot a result from NDSolve. The problem is that when I
> pass this solution to Plot it takes an incredible long time (four
> hours for times between 0 and 1200) to plot. I tried generating an
> image file (.jpg, .eps, etc.) but that doesn't change anything. I
> tried also giving to Plot the option PerformanceGoal -> "Speed", but
> it gives me only half an hour less of waiting time. The other options
> (like PlotPoints -> Number, MaxRecursion -> 0 ) give an improvement
> but the image is ugly unless PlotPoints is high, which at the end is
> the same.
>
> I tried also asking for Plot only the last 200 units of time, trying
> to avoid the most oscillating part of the graphic, but that really
> doesn't help (and really it's not what I need).
>
> Finally, the resulting InterpolatingFunction, when evaluated outside
> Plot, evaluates fast, and a ListPlot using points returned by a Table
> works well, but the resulting graphic is insanely big (35, 36 Mb) if I
> put the points necessary to give account of the features of the
> dynamic.
>
> Unfortunately I can't give you an example because the equations I'm
> solving are too long, but I wonder if there is someway to generate the
> graphic, either on the interface or in a file, to not be so slow.
>
> Thanks in advance, and sorry for this vague question (which, by the
> way, without examples, is useless... by I had to give it a try).
>
--
DrMajorBob at yahoo.com
- References:
- Incredible slow Plot
- From: Iván Lazaro <gaminster@gmail.com>
- Incredible slow Plot