RE: How to plot field lines of conformal mapping
- To: mathgroup at smc.vnet.net
- Subject: [mg26165] RE: [mg26083] How to plot field lines of conformal mapping
- From: "David Park" <djmp at earthlink.net>
- Date: Thu, 30 Nov 2000 01:04:08 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Jos,
Here is one method for doing it. Since I am not a very complex fellow, I
converted your f function to a real mapping.
f = z + I*Sinh[z]
% /. z -> u + I*v
F[u_, v_] = ComplexExpand[
{Re[%], Im[%]}]
z + I*Sinh[z]
u + I*v + I*Sinh[u + I*v]
{u - Cosh[u]*Sin[v],
v + Cos[v]*Sinh[u]}
Then you can plot it this way. You don't really need 700 plot points. I had
to use the Join statement to add the two end points to the v cases.
ParametricPlot[Evaluate[(F[u, #1] & ) /@ Join[Range[-1.5, 1.5, 0.25],
{-Pi/2, Pi/2}]], {u, -3, 3}, Frame -> True, Axes -> None,
AspectRatio -> Automatic, ImageSize -> 500,
PlotRange -> {{-10, 10}, {-10, 10}}];
Here is another approach which labels each of the curves. I left out the two
end point cases.
labeledcurve[v_] := {First[ParametricPlot[Evaluate[F[u, v]],
{u, -3, 3}, DisplayFunction -> Identity]],
Text[NumberForm[N[v], 3], F[2.5, v], Background -> GrayLevel[1],
TextStyle -> FontSize -> 10]}
Show[Graphics[labeledcurve /@ Range[-1.5, 1.5, 0.25]], Frame -> True,
Axes -> None, AspectRatio -> Automatic, ImageSize -> 500,
PlotRange -> {{-10, 10}, {-10, 10}}];
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
> -----Original Message-----
> From: Jos R Bergervoet [mailto:Jos.Bergervoet at philips.com]
To: mathgroup at smc.vnet.net
>
> I would like to plot a family of field lines obtained from a conformal
> mapping, as in the following code snippet. Is there a shorter way?
>
> f = z + I Sinh[z]
>
> ParametricPlot[{
> {Re[f], Im[f]} /. z->u-Pi/2I,
> {Re[f], Im[f]} /. z->u-1.5I,
> {Re[f], Im[f]} /. z->u-1.25I,
> {Re[f], Im[f]} /. z->u-1.0I,
> {Re[f], Im[f]} /. z->u-0.75I,
> {Re[f], Im[f]} /. z->u-0.5I,
> {Re[f], Im[f]} /. z->u-0.25I,
> {Re[f], Im[f]} /. z->u+0I,
> {Re[f], Im[f]} /. z->u+0.25I,
> {Re[f], Im[f]} /. z->u+0.5I,
> {Re[f], Im[f]} /. z->u+0.75I,
> {Re[f], Im[f]} /. z->u+1.0I,
> {Re[f], Im[f]} /. z->u+1.25I,
> {Re[f], Im[f]} /. z->u+1.5I,
> {Re[f], Im[f]} /. z->u+Pi/2I
> },
> {u,-3,3}, PlotPoints->700]
>
>
> I tried (without success) to do it after creating a table in advance:
>
> n = 1
> t = Table[{Re[f], Im[f]} /. z->u+i/n Pi/2I , {i, -n,n}]
> ParametricPlot[t, {u,-3,3}, PlotPoints->700]
>
> This does not work. Does anyone know an elegant solution?
>
> NB: I do not want the full CartesianMap[F , {-3,3}, {-Pi/2,Pi/2}]
> but only one of the two families of lines.
>
> Thanks in advance,
> Jos
>
> --
> Dr. Jozef R. Bergervoet Electromagnetism and EMC
> Philips Research Laboratories, Eindhoven, The Netherlands
> Building WS01 FAX: +31-40-2742224
> E-mail: Jos.Bergervoet at philips.com Phone: +31-40-2742403
>
>