Re: plotting complex functions in (x,y,t) space
- To: mathgroup at smc.vnet.net
- Subject: [mg132150] Re: plotting complex functions in (x,y,t) space
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Fri, 3 Jan 2014 04:43:07 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20131006074734.D77A66A1D@smc.vnet.net>
I recommend a different approach. Plot contours of the magnitude with the coloring set by the argument. psin[x_, xi_, y_, yi_, t_, ti_, kx_, ky_] = (20 E^(1/2 I kx (-kx (t - ti) + 2 (x - xi)) + 1/2 I ky (-ky (t - ti) + 2 (y - yi)) - ((-kx (t - ti) + (x - xi))^2 + (-ky (t - ti) + (y - yi))^2)/ (1600 + 2 I (t - ti))) Sqrt[2/=F0])/ (800 + I (t - ti)); f[x_, y_, t_] = psin[x, 0, y, 0, t, 0, 2/10, 2/10]; The magnitude of f is given by absf[x_, y_, t_] = ComplexExpand[Abs[f[x, y, t]], TargetFunctions -> {Re, Im}] (20*E^(-((1600*(-(t/5) + x)^2)/(2560000 + 4*t^2)) - (1600*(-(t/5) + y)^2)/(2560000 + 4*t^2))*Sqrt[2/Pi])/ Sqrt[640000 + t^2] The minimum magnitude is close to zero. magMin = With[{ xmin = -125, ymin = -125, tmin = 0, xmax = 200, ymax = 200, tmax = 200}, Minimize[{absf[x, y, t], xmin <= x <= xmax, ymin <= y <= ymax, tmin <= t <= tmax}, {x, y, t}][[1]] // Simplify] 1/(20*E^50*Sqrt[2*Pi]) The maximum magnitude is magMax = With[{xmin = -125, ymin = -125, tmin = 0, xmax = 200, ymax = 200, tmax = 200}, Maximize[{absf[x, y, t], xmin <= x <= xmax, ymin <= y <= ymax, tmin <= t <= tmax}, {x, y, t}][[1]] // Simplify] 1/(20*Sqrt[2*Pi]) The argument of f is argf[x_, y_, t_] = ComplexExpand[Arg[f[x, y, t]], TargetFunctions -> {Re, Im}] // Simplify Rewriting argf argf2[x_, y_, t_] = Module[ {z, p, q = (640000 + t^2)}, z = (256000*(x + y) + t*(-51200 + x^2 + y^2))/(2*q); p = -(16*(2*t^2 - 10*t* (x + y) + 25*(x^2 + y^2)))/q; ArcTan[(E^p*(800*Cos[z] + t*Sin[z]))/q, (E^p*((-t)*Cos[z] + 800*Sin[z]))/ q]]; Verifying that the expressions are the same argf[x, y, t] == argf2[x, y, t] True The mnimum is determined numerically to be -Pi argMin = With[{ xmin = -125, ymin = -125, tmin = 0, xmax = 200, ymax = 200, tmax = 200}, NMinimize[{argf[x, y, t], xmin <= x <= xmax, ymin <= y <= ymax, tmin <= t <= tmax}, {x, y, t}][[1]]] -3.14159 And the maximum is Pi argMax = With[{ xmin = -125, ymin = -125, tmin = 0, xmax = 200, ymax = 200, tmax = 200}, NMaximize[{argf[x, y, t], xmin <= x <= xmax, ymin <= y <= ymax, tmin <= t <= tmax}, {x, y, t}][[1]]] 3.14159 Use Manipulate to vary the magnitude of the contour. This is quite slow due to the complexity of the functions involved. With [{step = (magMax - magMin)/100.}, Manipulate[ ControlActive[ (c - magMin)/(magMax - magMin), Module[{ xmin = -125., ymin = -125., tmin = 0., xmax = 200., ymax = 200., tmax = 200.}, ContourPlot3D[absf[x, y, t] == c, {x, xmin, xmax}, {y, ymin, ymax}, {t, tmin, tmax}, ColorFunction -> Function[{x, y, t, p}, Hue[(argMax - argf2[x, y, t])/(argMax - argMin)]], ColorFunctionScaling -> False]]], {{c, magMin + step, "Abs[f[x,y,t]]"}, magMin + step, magMax - step, step, Appearance -> "Labeled"}]] Bob Hanlon On Sat, Dec 21, 2013 at 2:29 PM, Michael B. Heaney <mheaney at alum.mit.edu>wr= ote: > Hi Bob, > > Thanks again for your help. I have modified your code a little, see below=