Animazioni in campo complesso: la funzione di elevamento al quadrato

Clear["Global`*"]

punti[l_] := Transpose[{Re[l],  Im[l]}]

Commento: prende una lista di numeri complessi e la trasforma in una lista di punti del piano. Esempio:

assi1  =  {Line[{{-1, 0}, {1.5, 
                0}}], 
Line[{{1, -0.1}, {1, 
                0.1}}], 
Line[{{-0.1, 1}, {0.1, 
                1}}], 
 
          Line[{{0, -2}, {0, 2}}]};

assi2  =  {Line[{{2. , 0}, {6.5, 
                0}}], 
Line[{{5, -0.1}, {5, 
                0.1}}], 
Line[{{3.9, 1}, {4.1, 1}}],  
          Line[{{4, -3.2}, {4, 3.2}}]};

Funzione di elevamento al quadrato (a cui viene aggiunta una traslazione):

f[z_] :=  z^2 + 4

Famiglia di linee orizzontali:

lxy =  
        Table[Table[x   +  I y,  {x, 0, 1.25, 0.05}], {y, -1.25, 
            1.25, 0.25}];

Famiglia trasformata mediante la funzione f :

flxy  =  Map[f,  lxy];

Le due liste precedenti trasformate in liste di punti nel piano:

plxy  =  Map[punti, lxy];

pflxy  =  Map[punti,  flxy];

A questo punto abbiamo due liste di punti nel piano.

Animazione:

Do[
nm1righe  =  
        Take[plxy ,  n - 1]; 
nm1frighe  =  
        Take[pflxy ,  n - 1]; 
nriga  =  
        plxy[[n]]; 
fnriga  =  
        pflxy[[n]]; 
Do[
Show[
Graphics[
{assi1, 
              assi2, 
{RGBColor[1, 0, 
                  0], 
Line /@ nm1righe, 
                Line /@ nm1frighe, 
Line[Take[nriga, j]], 
                Line[Take[fnriga, j]]}, {RGBColor[1, 0, 0], PointSize[0.015], 
                Point[nriga[[j]]], 
                Point[fnriga[[
                    j]]]}} ], 
ImageSize -> {400,  
              400}, 
AspectRatio -> 
            Automatic, 
PlotRange -> {{-1, 
                6}, {-4, 4}}], 
{j, 1,  
          Length[nriga]}], 
{n, 1, 11}]

Mostriamo il grafico finale:

Show[
Graphics[
{assi1, 
            assi2, 
{RGBColor[1, 0, 0], Line /@ plxy, 
              Line /@ pflxy}}], 
ImageSize -> {400,  
            400}, 
AspectRatio -> 
          Automatic, 
PlotRange -> {{-1, 
              6}, {-4, 4}}];

Il grafico precedente (non mostrato):

gr1  =  
{assi1, 
          assi2, 
{RGBColor[1, 0, 0], Line /@ plxy, 
            Line /@ pflxy}};

Famiglia di linee verticali:

lyx =  
        Table[Table[x   +  I y, {y, -1.25, 1.25, 0.1}],  {x, 0, 
            1.25, 0.25}];

Famiglia trasformata mediante la funzione f :

flyx  =  Map[f,  lyx];

Le due liste precedenti trasformate in liste di punti nel piano:

plyx  =  Map[punti, lyx];

pflyx  =  Map[punti,  flyx];

A questo punto abbiamo due liste di punti nel piano.

Do[
nm1colonne  =  
        Take[plyx ,  n - 1]; 
nm1fcolonne  =  
        Take[pflyx ,  n - 1]; 
ncolonna  =  
        plyx[[n]]; 
fncolonna  =  
        pflyx[[n]]; 
Do[
Show[
Graphics[
{gr1, 
{RGBColor[0, 0, 1], 
Line /@ nm1colonne, 
                Line /@ nm1fcolonne, 
Line[
                  Take[ncolonna, j]], 
                Line[Take[fncolonna, j]]}, {RGBColor[0, 0, 1], 
                PointSize[0.015], 
                Point[ncolonna[[j]]], 
                Point[fncolonna[[
                    j]]]}} ], 
ImageSize -> {450,  
              400}, 
AspectRatio -> 
            Automatic, 
PlotRange -> {{-1, 
                6}, {-4, 4}}], 
{j, 1,  
          Length[ncolonna]}], 
{n, 1, 6}]