TARDÍGRADOS

Ciencia en español -ʟᴀ ʀᴀᴢóɴ ᴇsᴛá ᴀʜí ғᴜᴇʀᴀ-

Posts Tagged ‘plano complejo’

Mejorando el método de Newton-Raphson para el cálculo aproximado de raices (ceros) de una función

Posted by Albert Zotkin en enero 4, 2016

El otro día, mientras probaba el método de Newton-Raphson, se me ocurrió que quizás podría mejorarlo un poco. Este método se usa para el cálculo aproximado de las raíces de una función f(x), y es el siguiente:

\displaystyle x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} (1)
Donde f ‘(x) es la primera derivada de f(x). Es decir, partimos de un punto fijo xn, que suponemos está cerca de una de las raices, y desde él iteramos tantas veces como deseemos hasta aproximarnos más a dicha raíz. Este método tiene el riesgo de que las iteraciones no converjan hacia ninguna raíz, y por lo tanto resulte ineficaz para algunas funciones. Supongamos que queremos hallar alguna raíz de la función f(x) = 3x4 + x2 – 2 y aplicamos seis veces la iteracíon del método de Newton-Raphson partiendo del punto x0 = 1, y si calculamos con una precisión de 40 dígitos, tendremos:

\displaystyle \begin{matrix}   x_1 & = & x_0 - \frac{f(x_0)}{f'(x_0)} & = & 1 - \frac{2}{14} & = & \underline{0.8}571428571428571428571428571428571428571 \\   x_2 & = & x_1 - \frac{f(x_1)}{f'(x_1)} & & \vdots & = & \underline{0.81}89577717879604672057502246181491464510\\   x_3 & & \vdots & & \vdots & = & \underline{0.816}5061857602031922330590601328993201490\\   x_4 & & \vdots & & \vdots & = & \underline{0.81649658}10746056647328219979558653427309 \\   x_5 & & \vdots & & \vdots & = & \underline{0.8164965809277260327}667768695067608172972 \\   x_6 & & \vdots & & \vdots & = & \underline{0.81649658092772603273242802490196379732}39 \end{matrix}

los dígitos correctos están subrayados.

A continuación presento la mejora que hice para este método de Newton-Raphson:

\displaystyle x_{n+1} = x_n - \frac{f'(x_n)}{f''(x_n)} +\sqrt{\frac{f'(x_n)^2}{f''(x_n)^2}-2\frac{f(x_n)}{f''(x_n)}} (2)

Donde f ”(x) es la segunda derivada de f(x). Obviamente esta mejora debería de funcionar para f ”(xn) ≠ 0. Hagamos el cálculo para la función anterior usando esta mejora:

\displaystyle \begin{matrix}   x_1 & = & \underline{0.8}061381468608105183744701440352992991541 \\   x_2 & = & \underline{0.81649}79024576970617429931359189802359533\\   x_3 & = & \underline{0.8164965809277260}299628549775875861636275\\   x_4 & = & \underline{0.8164965809277260327324280249019637973220} \\   x_5 & = & \underline{0.8164965809277260327324280249019637973220} \\   x_6 & = & \underline{0.8164965809277260327324280249019637973220} \end{matrix}
Vemos cómo con esta mejora la iteración converge más rápidamente hacia la raíz. En concreto, para este ejemplo, vemos cómo a partir de x3 la aproximación sobrepasa con creces la precisión de 40 digitos.

Pero, ¿Cómo he obtenido la ecuación de mejora (2)?. La serie de Taylor de la función f(x) centrada en xn es

\displaystyle f(x)=f(x_n)+f'(x_n) (x-x_n)+ (x-x_n)^2 \frac{f''(x_n)}{2!} + ... \,

Si evaluamos para xn+1 obtenemos

\displaystyle f(x_{n+1})=f(x_n)+f'(x_n) (x_{n+1}-x_n)+ (x_{n+1}-x_n)^2 \frac{f''(x_n)}{2!} + ... \,

Como para el cálculo de las raices f(xn+1) debe ser igual a 0, si consideramos hasta el término cuadrático, tendremos

\displaystyle f(x_{n+1})=f(x_n)+f'(x_n) (x_{n+1}-x_n)+ (x_{n+1}-x_n)^2 \frac{f''(x_n)}{2!}= 0,

Y resolviendo esa ecuación cuadrática para xn+1, tendremos:

\displaystyle x_{n+1} = x_n - \frac{f'(x_n)}{f''(x_n)} \pm \sqrt{\frac{f'(x_n)^2}{f''(x_n)^2}-2\frac{f(x_n)}{f''(x_n)}} (3)
Observemos el signo ± delante de la raíz cuadrada del discriminante. Ese signo ± quiere decir que tenemos dos posibles caminos de iteración en la mejora de este método, y los dos deben conducir a una buena aproximación de una de las raices de la función. Obviamente, si en la serie de Taylor consideramos sólo hasta el termino cuadrático excluido, obtenemos el método original de Newton-Raphson. Podríamos considerar mejoras hasta el término cúbico o grados superiores, y veríamos cómo la rapidez de convergencia (o divergencia) aumentaría notablemente.

Este método de Newton-Raphson también puede extenderse a funciones de variable compleja. Así, si partimos de un punto fijo del plano complejo, veríamos cómo sus siguientes puntos de dicho plano, al ir aplicando la iteración, se aproximarían a un punto atractor, el cual sería una de las raíces (ceros) de esa función compleja.

Anuncios

Posted in Fractales, Matemáticas | Etiquetado: , , , , , , , , , , , , , , , , | Leave a Comment »

Representación gráfica de funciones complejas

Posted by Albert Zotkin en marzo 7, 2014

Hace algún tiempo yo era un obseso de la programación informática. Me pasaba horas y horas programando miles de lineas de código de aplicaciones informáticas de todo tipo. Un día me pregunté si yo sería capaz de programar desde cero una aplicación que dibujara gráfica de funciones y de otros objetos matemáticos. La respuesta a aquella pregunta fue sí, y la aplicación que construí desde cero se llama PrimeGraph, y sirve para representar gráficamente funciones y otros objetos matemáticos. Para quien sienta curiosidad sobre el código fuente de PrimeGraph lo puede encontrar aqui.

Puedo ofrecer ahora varios ejemplos de representaciones gráficas de funciones complejas. Obviamente una representación gráfica estática de una función compleja no puede literalmente ser vista ya que toda función compleja transforma un número complejo z = (a, b) en otro distinto z’= (a’,b’). Es decir, se necesitaría al menos un espacio de cuatro dimensiones para poder visualizar tal gráfica funcional. Pero, es posible, mediante algunos trucos visualizar en un único plano (2D) tales gráficas de funciones complejas. Una de ella es mediante códigos de color en el plano. Puesto que una función de variable compleja transforma un número complejo en otro, Podemos ver cómo los puntos de un plano son re-ubicados con otras coordenadas si cada punto posee un color (pixel). Supongamos que el plano inicial (el que representa a la función identidad) posee el siguiente patrón de color:

0

Partiendo de esta plano coloreado inicial podemos representar funciones complejas, como he dicho, re-ubicando los píxeles en otras coordenadas según nos dicta la función compleja que se trata de representar. Veamos mas especificamente un ejemplo. Sea el siguiente polinomio de variable compleja

\displaystyle f(z)=(z-1-2i)(z+i)(z+2)^2

entonces según el patrón de color que he presentado arriba, la representación gráfica de esa función f(z) será:

1

Supongamos ahora que el plano inicial posee el siguiente patrón de color:

2

entonces una función compleja como cosecante de z, iterada 7 veces

\displaystyle f(z)=csc(z)= \cfrac{1}{\sin (z)}

daría esta bonita y sorprendente representación gráfica:

csc-z

para los que no lo sepan, si iteramos 7 veces una función f(z) obtenemos otra función distinta:

\displaystyle f' (z)= f(f(f(f(f(f(f(z)))))))

veamos otro ejemplo de función compleja iterada usando el mismo patrón de color que antes. Ahora representaremos la función arcoseno de z iterada 2 veces

\displaystyle f(z)= \arcsin (z)

es decir tenemos la función iterada

\displaystyle f'(z)= \arcsin (\arcsin (z))

cuya respresentación gráfica en ese patrón de color será esta:
arcsin-z

P.D.: Para saber cómo se realizan las gráficas has de abrir el programa primegraph.exe y practicar con él. En él podrás encontrar ejemplos de gráficas para algunas funciones reales y complejas, y para otros objetos matemáticos. También incluí en la sección Ayuda un pequeño tutorial para saber cómo hacer los scripts. Si el programa primegraph.exe te funciona bien (no sé si funciona bien en todas las computadoras, y tampoco sé si ha quedado muy obsoleto, ya que ha pasado mucho tiempo desde la ultima compilación). Puedes acceder a primegraph.exe en mi repositorio drive, descargando el archivo comprimido primegraph_alpha_v1.1.zip. Una vez descargado ese zip, descomprime primegraph.exe en alguna carpeta de tu computadora (yo comprobé que funciona bien en Windows 7) y ya lo tienes instalado. Para desinstalarlo simplemente lo borras de tu carpeta. Te voy a poner un ejemplo previo de unas gráficas. Por ejemplo, queremos dibujar la gráfica para la función trigonométrica seno, y = sin(x), y también para la función coseno, y = cos(x), en el mismo script. Para ello debes escribir el siguiente script en el editor de scripts del programa:
Haces click en el botón “Dibuja gráficos“, y entonces el programa primegraph.exe crea la página web siguiente, que presenta en el navegador web que tengas instalado por defecto:

*El nombre Just G. Waller era el pseudónimo que yo usaba en mi época de programador informático.

Saludos

Posted in informática, Matemáticas | Etiquetado: , , , , , , , , , | 4 Comments »

 
A %d blogueros les gusta esto: