       Re: parametric plot extremely slow

• To: mathgroup at smc.vnet.net
• Subject: [mg90668] Re: parametric plot extremely slow
• From: "David Park" <djmpark at comcast.net>
• Date: Fri, 18 Jul 2008 04:03:12 -0400 (EDT)
• References: <g5n413\$s7j\$1@smc.vnet.net>

```Christina,

Using the Presentations package, this can all be plotted directly in the
complex plane. Also, we can better see what is happening if we draw the
curves separately with different t domains. For example, there is no
necessity to plot around the circle 1000 times. It also helps if we see what
each of the functions looks like as a complex function of z. We don't really
need your cx and cy functions. We could either draw a Circle, or just for
fun use the complex expression for a circle.

Needs["Presentations`Master`"]

a1 = 2/3 E^((I \[Pi])/4);
a2 = 2/5 E^((I 4 \[Pi])/5);

z0[t_] = (Exp[I*0*Pi/4]*t - Abs[a1])/(Exp[I*0*Pi/4]*t*Abs[a1] - 1)*
a1/(Abs[a1]) // Simplify
((-1)^(1/4) (-2 + 3 t))/(-3 + 2 t)

z1[t_] = (Exp[I*2*Pi/4]*t - Abs[a1])/(Exp[I*2*Pi/4]*t*Abs[a1] - 1)*
a1/(Abs[a1]) // Simplify
((-1)^(1/4) (2 I + 3 t))/(3 I + 2 t)

z2[t_] = (Exp[I*4*Pi/4]*t - Abs[a1])/(Exp[I*4*Pi/4]*t*Abs[a1] - 1)*
a1/(Abs[a1]) // Simplify
((-1)^(1/4) (2 + 3 t))/(3 + 2 t)

z3[t_] = (Exp[I*6*Pi/4]*t - Abs[a1])/(Exp[I*6*Pi/4]*t*Abs[a1] - 1)*
a1/(Abs[a1]) // Simplify
((-1)^(1/4) (-2 I + 3 t))/(-3 I + 2 t)

Draw2D[
{Directive[Black, Thick],
ComplexCurve[Exp[I 2 \[Pi] t], {t, 0, 1}],
Directive[Red, Thin],
ComplexCurve[z0[t], {t, 0, 1}],
Blue,
ComplexCurve[z1[t], {t, 0, 100}],
Magenta,
ComplexCurve[z2[t], {t, .05, 100}],
Purple,
ComplexCurve[z3[t], {t, 0, 100}]},
Frame -> True,
PlotRange -> All,
ImageSize -> 400]

We obtain a better idea of what is happening by slightly restricting the
domain of the various z functions. This plot evaluates practically
instantaneously. There was no need to go to a high number of PlotPoints, or
a high MaxRecursion.

--
David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/

"Cristina Ballantine" <cballant at holycross.edu> wrote in message
news:g5n413\$s7j\$1 at smc.vnet.net...
> Hi,
>
> I am working on a project involving many parametric plots and Mathematica
> 6 is extremely slow. The plot below takes about 5 minutes. I also need
> plots coloring regions with specific colors depending on the plotted
> point. They take about two hours.
>
> Any hints on increasing plot speed are very much appreciated. I am new to
> Mathematica and I cannot use Version 5 for Graphics. The plot below takes
> less than 10 seconds in other systems (but but they cannot be used for the
> more complicated region plots).
>
> Here is the code I used for the plot.
>
>
> a1 := 2/3*Exp[I*Pi/4]
> a2 := 2/5 Exp[I*4*Pi/5]
>
> zr0[t_] :=
>  Re[(Exp[I*0*Pi/4]*t - Abs[a1])/(Exp[I*0*Pi/4]*t*Abs[a1] -
> 1)*a1/(Abs[a1])]
>
> zr1[t_] :=
>  Re[(Exp[I*2*Pi/4]*t - Abs[a1])/(Exp[I*2*Pi/4]*t*Abs[a1] -
> 1)*a1/(Abs[a1])]
>
> zr2[t_] :=
> Re[(Exp[I*4*Pi/4]*t - Abs[a1])/(Exp[I*4*Pi/4]*t*Abs[a1] - 1)*a1/(Abs[a1])]
>
> zr3[t_] :=
>  Re[(Exp[I*6*Pi/4]*t - Abs[a1])/(Exp[I*6*Pi/4]*t*Abs[a1] -
> 1)*a1/(Abs[a1])]
>
> zr0[t_] :=
>  Re[(Exp[I*0*Pi/4]*t - Abs[a1])/(Exp[I*0*Pi/4]*t*Abs[a1] -
> 1)*a1/(Abs[a1])]
>
> zi1[t_] :=
>  Im[(Exp[I*2*Pi/4]*t - Abs[a1])/(Exp[I*2*Pi/4]*t*Abs[a1] -
> 1)*a1/(Abs[a1])]
>
> zi2[t_] :
>  Im[(Exp[I*4*Pi/4]*t - Abs[a1])/(Exp[I*4*Pi/4]*t*Abs[a1] -
> 1)*a1/(Abs[a1])]
>
> zi3[t_] :=
>  Im[(Exp[I*6*Pi/4]*t - Abs[a1])/(Exp[I*6*Pi/4]*t*Abs[a1] -
> 1)*a1/(Abs[a1])]
>
> zi0[t_] :=
>  Im[(Exp[I*0*Pi/4]*t - Abs[a1])/(Exp[I*0*Pi/4]*t*Abs[a1] -
> 1)*a1/(Abs[a1])]
>
>
> cx[t_] := Sin[t*2*Pi]
> cy[t_] := Cos[t*2*Pi]
>
> plotbasic :=
>  ParametricPlot[{{cx[t], cy[t]}, {zr0[t], zi0[t]}, {zr1[t],
>     zi1[t]}, {zr2[t], zi2[t]}, {zr3[t], zi3[t]}}, {t, 0, 1000},
>   PlotRange -> 6, PlotPoints -> 150, MaxRecursion -> 10,
>   PlotStyle -> {{Black, Thick}, Red, Blue, Magenta, Purple},
>   PerformanceGoal -> "Speed" ]
>
> Show[plotbasic]
>
>