Conformal Mappings

Conformal Maps

f[z_]:=1/z;
g[z_]:=Sqrt[z];
h[z_]:=(1+z)/(1-z);
i[z_]:= 2z/(z+I);
j[z_]:=Module[{n=3},
NIntegrate[Power[(1.-(t*z)^n),-2/n] z,{t,0,1},AccuracyGoal->4,Method->"AdaptiveQuasiMonteCarlo"]];
LFT[a_,b_,c_,d_] := Function[z,(a z+b)/(c z+d)];

To declare a pure function in Mathematica with a variable name just type 
FunctionName[VariableName_]:=the function(z);

Mesh Parameters

nrmesh=10.;
ntmesh=60.;
nstep=50.;

Help Functions

Hmtp[f_,s_,z_]:=s*f[z] + (1-s)z;
LFTHmtp[a_,b_,c_,d_,s_]:=LFT[s*a+(1-s),s*b,s*c,s*d+(1-s)];
MyGrid=ParallelTable[r Exp[I t],{r,0,1,1/nrmesh},{t,0,2π,2π/ntmesh}];

Animate it!

To change the function, just change the F=something in the curly bracket. For example, try F = Log (just the function name, not Log[z]).

Anime=
Module[{F=i,fmesh,pltrange={{-2,2},{-2,2}}},(*plug in the map of interest into the first argument F=?*)
ParallelTable[
Quiet[
fmesh=ReIm[Hmtp[F,s,MyGrid]];
Show[ListLinePlot[
fmesh,PlotRange->pltrange,AspectRatio->1,PlotStyle->Directive[Opacity[0.5],Red]] (*r mesh*)
,
ListLinePlot[
Transpose[fmesh],PlotRange->pltrange,AspectRatio->1,PlotStyle->Directive[Opacity[0.5],Blue]] (*θ mesh*)
]
],
{s,0,1,1/nstep}]];
ListAnimate[Anime,AnimationRunning->False,AnimationDirection->ForwardBackward]

{a,b,c,d}={0,1,1,0};
(*TO DO: Implement geodesic paths between LFT's.  See: https://mathoverflow.net/a/5608 *)
Anime=
Module[{F=LFT[a,b,c,d],fmesh,pltrange={{-2,2},{-2,2}}},(*plug in the map of interest into the first argument F=?*)
ParallelTable[
Quiet[
fmesh=ReIm[LFTHmtp[a,b,c,d,s][MyGrid]];
Show[ListLinePlot[
fmesh,PlotRange->pltrange,AspectRatio->1,PlotStyle->Directive[Opacity[0.5],Red]] (*r mesh*)
,
ListLinePlot[
Transpose[fmesh],PlotRange->pltrange,AspectRatio->1,PlotStyle->Directive[Opacity[0.5],Blue]] (*θ mesh*)
]
],
{s,0,1,1/nstep}]];
ListAnimate[Anime,AnimationRunning->False,AnimationDirection->ForwardBackward]