Re: problem with contourplot
- To: mathgroup at smc.vnet.net
- Subject: [mg81871] Re: problem with contourplot
- From: "David Park" <djmpark at comcast.net>
- Date: Fri, 5 Oct 2007 04:54:51 -0400 (EDT)
- References: <fe27r1$joh$1@smc.vnet.net>
Here is a solution using DrawGraphics. (Except this and other complex
function graphics routines are still in a development notebook and not quite
yet in DrawGraphics.)
First define the function as a complex function:
dispsqr[kl_][
z_] := (1 + (1/
kl)^2 (1 + (\[ImaginaryI] Sqrt[\[Pi]]
z \[ExponentialE]^-(z/(Sqrt[2] kl))^2 (1 +
Erf[(\[ImaginaryI] z)/(Sqrt[2] kl)]))/(Sqrt[2] kl)))^2
The following statement makes the plot:
With[
{f = dispsqr[0.1],
zmin = -2 - 1.0 \[ImaginaryI],
zmax = 2 + 1.5 \[ImaginaryI],
contourlist = {0, 0.001`, 0.01`, 0.05`, 0.15`, 0.25`, 0.4`, 1, 2, 4,
10, 50, 400}},
Draw2D[
{ComplexCartesianContour[f[z], {z, zmin, zmax}, Abs,
Contours -> contourlist,
ColorFunctionScaling -> False,
ColorFunction -> (ContourColors[contourlist,
ColorData["ThermometerColors"]]),
PlotPoints -> {25, 25},
PlotRange -> {0, 400},
ClippingStyle -> Gray]},
Frame -> True, FrameLabel -> {Re, Im}, RotateLabel -> False,
PlotLabel ->
Row[{"Modulus of ", 0 < HoldForm[dispsqr[0.1][z]] < 400}],
ImageSize -> 600]
]
ComplexCartesianContour accepts complex expressions and there is a single
complex iterator. Any function producing real output, in this case Abs, can
be applied to the function to produce the contours. ContourColors is a
DrawGraphics routine that produces distinct colors for all contour regions
no matter what the spacing of the contour values are. The plot clearly
shows all the contours. It is not necessary to use extended precision.
--
David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/
"KLEIN Rudy" <Rudy.Klein at lpmi.uhp-nancy.fr> wrote in message
news:fe27r1$joh$1 at smc.vnet.net...
> hello,
> I'm trying to contourplot a function with high gradients.
> this is my code:
>
> In > contoursLandau[kld_, contoursList_List, {rgX_, rgY_}] :=
> Module[{disp},
>
> disp[kl_, z_] :=
> SetPrecision[
> 1 + (1/kl)^2*(1 +
> I*Sqrt[Pi]*(z/(Sqrt[2.]*kl))*
> Exp[-(z/(Sqrt[2.]*kl))^2]*(1 + Erf[I*z/(Sqrt[2.]*kl)])),
> 100];
>
> fonctionColoration=RGBColor[0, 0, #] &;
>
> ContourPlot[
> Abs[disp[kld, x + I y]]^2, {x, rgX // First, rgX // Last}, {y,
> rgY // First, rgY // Last},
> ColorFunction -> fonctionColoration, Contours -> contoursList,
> PlotPoints -> 100]
>
>
> ];
>
>
>
> In > contoursLandau[0.1, ({4, 1, 0.4, 0.25, 0.15, 0.05, 0.01, 0.001} //
> Reverse), {{-1.5, 1.5}, {0.5, -1.5}}]
>
>
> the problem is with the coloration of the plot: i'd like to Log-scale
> the contours and have for example:
>
> RGBColor[0,0.5,#]&/@Log[10, {4, 1, 0.4, 0.25, 0.15, 0.05, 0.01, 0.001}
> // Reverse] // Rescale
>
> but it doesn't work and i can't identifie the cause of the problem...
> thanks for help
>
> Rudy
>
>
>
>
>
>
>
>
>