next up previous
Siguiente: Primera visión geométrica compleja Subir: Iteraciones en Anterior: Elección de la representación

Representación de los iterados

Supongamos que $f$ es analítica en un dominio $U\subset\mathbb{C}$. Entonces el Método de Newton complejo se define por
\begin{displaymath}
z_{n+1}=z_n-\frac{f(z_n)}{f'(z_n)},\quad z_0\in U.
\end{displaymath} (5)

Pongámonos en una situación no complicada del método: todos los iterados se mantienen en $U$ y $f'$ no se anula en $U$ excepto, posiblemente, en las raices de $f$ (donde la fracción $f/f'$ presenta, posiblemente, singularidades evitables). En esta situación tenemos que la función $N_f(z)=z-\frac{f(z)}{f'(z)}$ tiene una extensión analítica en $U$: si $f(\alpha)=f'(\alpha)=0$, se define

\begin{displaymath}
N_f(\alpha)=\alpha-\lim_{z\to\alpha}\frac{f(z)}{f'(z)}.
\end{displaymath}

Para generar una iteración del método, proponemos el comando

Nf[fz_, z0_] := Module[{auxil, nf, dfdz},
                      dfdz = Simplify[D[fz, z]];
                      auxil = Simplify[z - fz/dfdz];
                      Limit[auxil, z -> z0]
                      ]
que puede retornar una expresión numérica o simbólica: Nf[z^3-1,1+I] y Nf[z^3-1,z] dan los resultados respectivos $\frac23+\frac i2$ y $\frac1{3z^2}+\frac{2z}{3}$.

Para dibujar los iterados, necesitamos tener una lista de ellos. Ésto se consigue con el comando

IterfList[fz_, z0_, N_] := Module[{funcio},
                                 funcio = Function[w, fz /. {z -> w}];
                                 NestList[funcio, z0, N]
                                 ]
que itera una función compleja fz dada N veces, empezando en el punto z0 (incluído). Así, IterfList[z^2,1+I,2] nos da $\{1+i,2i,-4\}$ y IterfList[Nf[z^3-1,z],1+I,2] da $\{1+i,\frac23+\frac i2,\frac{3256}{5625}-\frac{239}{1875}i\}$.

Finalmente, necesitamos tener esta lista de iterados en formato punto de Mathematica (si queremos usar los comandos gráficos estándar). El siguiente comando realiza esta tarea:

ReIm[llista_]:=Module[{},Map[Function[t,{Re[t],Im[t]}],llista]]
Por tanto, si ahora pedimos ReIm[IterfList[z^2,1+I,2]], obtenemos como resultado la lista de puntos $\{\{1,1\},\{0,2\},\{-4,0\}\}$.

Figura 10: Algunos iterados de $N_f$, para $f(z)=z^3-1$
\begin{figure}\centering
\epsfig{file=dibu1.eps,width=0.45\linewidth}\end{figure}

Ahora tenemos las herramientas necesarias para poder dibujar los iterados en el plano, junto con las curvas de nivel de $\vert f\vert$. La orden encargada de hacer este trabajo es

Dibu1[fz_, z0_, N_, a_, b_, c_, d_] := Module[{dib1, dib2, auxil, dib3},
     dib1 = ContourPlot[ModFz[fz], {x, a, b}, {y, c, d},
            ContourShading -> False, PlotPoints -> 30, Contours -> 20,
            DisplayFunction -> Identity];
     auxil = ReIm[IterfList[Nf[fz, z], z0, N]];
     dib2 = ListPlot[auxil, PlotJoined -> True, DisplayFunction -> Identity];
     dib3 = Show[Graphics[Map[Function[t, Disk[t, 0.03]], auxil]],
                 DisplayFunction -> Identity];
     Show[dib1, dib2, dib3, AspectRatio -> 1,
          DisplayFunction -> $DisplayFunction]
     ]
Este comando calcula N iterados del Método de Newton de la función compleja fz y dibuja las curvas de nivel y los iterados incluídos en la región del plano [a,b]x[c,d]. Por ejemplo, si pedimos Dibu1[z^3-1,0.3+.5*I,4,-1.5,1.5,-1.5,1.5] se genera el dibujo de la Figura 10.

Por razones que veremos más adelante, pediremos una condición adicional al dibujo de iterados y curvas de nivel: queremos que incluya sólo las curvas de nivel que contengan estos iterados. El código necesario para este propósito es

Dibu2[fz_, z0_, N_, a_, b_, c_, d_, opt___] := 
  Module[{dib1, dib2, auxil, auxil2, dib3, valaux},
    auxil2 = IterfList[Nf[fz, z], z0, N];
    auxil = ReIm[auxil2];
    dib2 = ListPlot[auxil, PlotJoined -> True, DisplayFunction -> Identity];
    dib3 = Show[Graphics[Map[Function[t, Disk[t, 0.03]], auxil]], 
                DisplayFunction -> Identity];
    valaux = Map[(ModFz[fz] /. {x -> Re[#], y -> Im[#]}) &, auxil2];
    dib1 = Map[(ImplicitPlot[ModFz[fz] == #, {x, a, b}, {y, c, d}, opt, 
               DisplayFunction -> Identity]) &, valaux];
    Show[Join[dib1, {dib2, dib3}], Frame -> True, AspectRatio -> 1, 
         DisplayFunction -> $DisplayFunction]
        ]

Figura 11: Varios iterados de $N_f$, junto con las curvas de nivel que los contienen
\begin{figure}\centering
\epsfig{file=itercv.eps,width=0.45\linewidth}\end{figure}

Nótese que se ha añadido la posibilidad de incluir opciones estándar en el dibujo final. Además, se debe tener en cuenta que esta orden necesita que el paquete ImplicitPlot se haya cargado antes de ejecutarla. La Figura 11 se ha generado con

Dibu2[z^3-1,0.3+.5*I,15,-1.5,1.5,-1.5,1.5,PlotPoints->50,Axes->True]


next up previous
Siguiente: Primera visión geométrica compleja Subir: Iteraciones en Anterior: Elección de la representación
Alícia Miralles y Francesc Aguiló 2004-01-03