7 votos

Cómo derivar esta curiosa aproximación a la raíz cúbica de a $a + bi$?

En este artículo de la Wikipedia en portugués se le da la siguiente aproximación a la raíz cúbica de un número complejo $ c = a + bi$:

$$ \sqrt[3]{c} \approx k\left ( \frac{29z^3 + 261z^2 + 255z + 22}{7z^3 + 165z^2 +324z+71} \right ) $$

donde $ \sqrt[3]{c} = \sqrt[3]{k^3z},\quad $ $ \forall k, z\in \mathbb{C}, z \neq 0 $

Esto da una aproximación, decir $p_1$, y, a continuación, puede utilizar esta aproximación como un nuevo valor de $k$ para obtener una mejor aproximación a $p_2$, y así sucesivamente.

La pregunta es: ¿cómo esta aproximación puede ser derivada? Creo que es una aplicación del método de Newton o alguna serie truncada, pero no sé los detalles.

También, lo que precisa es la aproximación? Sí converge a la raíz cúbica para cualquier valor inicial?

5voto

andy.holmes Puntos 518

Un proceso iterativo de aproximación de la raíz cúbica

La intención de la construcción de la fracción $F(z)$ es que si $k=k_0$ elegido es tal que $z=c/k^3$$|z|\approx 1$$|\arg(z)|<\frac\pi3$, $k_+=k·F(z)$ es una buena aproximación de $\sqrt[3]c$. Se obtiene sucesivamente más exacta de la raíz aproximaciones por iteración $$ k_{n+1}=k_n·F(c/k_n^3) $$

In view of that iteration it is sensible to express the error in terms of powers in $x=z-1$.

On the order of approximation

Let's reverse engineer this. Use, for instance, the Magma CAS online calculator with the commands

PS<x> := PowerSeriesRing(Rationals());
P<z> := PolynomialRing(Rationals());
num := Evaluate(29*z^3+261*z^2+255*z+22 , 1+x); num;
    // 567 + 864*x + 348*x^2 + 29*x^3
den := Evaluate(7*z^3+165*z^2+324*z+71, 1+x); den;
    // 567 + 675*x + 186*x^2 + 7*x^3
f := num/den + O(x^8); f;
    // 1 + 1/3*x - 1/9*x^2 + 5/81*x^3 - 10/243*x^4 + 461/15309*x^5 - 7430/321489*x^6 + 367466/20253807*x^7 + O(x^8)
f^3;
    // 1 + x - 1/5103*x^5 + 34/35721*x^6 - 12361/6751269*x^7 + O(x^8)                                                                                             

which shows that the expression is correct to order $O((z-1)^5)$. With degree $3$ in both numerator and denominator and thus $2·4-1$ free coefficients, one could find an expression that is $O((z-1)^7)$, i.e., the Taylor series expressions of both sides match in the first $7$ terms.

However, the loss in error order around the origin might have been used to reduce the maximal error in the disk around $1$, o al menos todo el segmento del círculo unitario en el que es pertinente de acuerdo a las consideraciones iniciales.


Algunos relacionados con el equilibrado de Padé approximants

El 2/2 orden de 5 de Padé approximant es $$ \sqrt[3]z=\frac{14z^2 + 35z + 5}{5z^2 + 35z + 14} + O((z-1)^5) $$ y el 3/3 orden de 7 de Padé approximant es $$ \sqrt[3]z=\frac{7z^3 + 42z^2 + 30z + 2}{2z^3 + 30z^2 + 42z + 7} + O((z-1)^7) $$


Root iterations comparing the 3 fractions

From WP take the moderately interesting test case $c=11+197i$ with initial guess $k_0=6$. En python definir

def FracLud(z): return (((29*z+261)*z+255)*z+22)/(((7*z+165)*z+324)*z+71) 
def FracPad1(z): return (2*z+1)/(z+2)
def FracPad2(z): return ((14*z+35)*z+5)/((5*z+35)*z+14)
def FracPad3(z): return (((7*z+42)*z+30)*z+2)/(((2*z+30)*z+42)*z+7)

y repetir

c=11+197j

k=6
for _ in range(4): z=c/k**3; k *= FracLud(z); print k, abs(c-k**3)
    (5.07502720254+2.80106967751j) 2.5577949438
    (5.09495916653+2.81659441015j) 1.39979625158e-11
    (5.09495916653+2.81659441015j) 1.71121351099e-13
    (5.09495916653+2.81659441015j) 8.54314994314e-14

k=6
for _ in range(4): z=c/k**3; k *= FracPad1(z); print k, abs(c-k**3)
    (4.67251486867+3.25849790265j) 60.612721727 
    (5.09919052684+2.81457943777j) 0.476738798014 
    (5.09495916512+2.8165944087j) 2.05734637949e-07 
    (5.09495916653+2.81659441015j) 8.54314994314e-14 

k=6
for _ in range(4): z=c/k**3; k *= FracPad2(z); print k, abs(c-k**3)
    (5.16659218119+2.75059104398j) 9.95653080095
    (5.09495916898+2.81659441176j) 2.97864153108e-07
    (5.09495916653+2.81659441015j) 2.89169943033e-14
    (5.09495916653+2.81659441015j) 8.54314994314e-14

k=6
for _ in range(4): z=c/k**3; k *= FracPad3(z); print k, abs(c-k**3)
    (5.08204659353+2.82547419372j) 1.59145673695
    (5.09495916653+2.81659441015j) 8.54314994314e-14
    (5.09495916653+2.81659441015j) 2.89169943033e-14
    (5.09495916653+2.81659441015j) 8.54314994314e-14

de modo que el orden de 5 Ludenir/Luderian método converge más rápido que el de computacionalmente más rápido de la orden de 5 Padé2 método, pero notablemente más lenta que la orden de 7 Padé3 método que tiene la misma complejidad computacional.

El computacionalmente más simple Halley/Padé1 método de necesidades 4 pasos donde Padé3 necesidades 2. En términos de operaciones, hay 4*(2 div + 2 mul) (descontando la suma, la multiplicación con el pequeño constantes) frente a la 2*(2 div + (2+6) mul). Contando 1 complejo división casi igual a 2 multiplicaciones complejas, este es un esfuerzo similar.

4voto

Anthony Shaw Puntos 858

Raíz Cúbica

Se puede empezar con la Serie de Taylor $$ \sqrt[3]{1+x}=1+\frac x3-\frac{x^2}9+\frac{5x^3}{81}-\frac{10x^4}{243}+\frac{22x^5}{729}-\frac{154x^6}{6561}+O\!\left(x^7\right)\tag{1} $$ a continuación, utilice el Algoritmo de Euclides Extendido para obtener la Aproximación de Padé $$ \sqrt[3]{1+x}=\frac{81+135x+63x^2+7x^3}{81+108x+36x^2+2x^3}+O\!\a la izquierda(x^7\right)\etiqueta{2} $$ Ahora podemos simplemente sustituto $x\mapsto x-1$ y obtener $$ f(x)=\frac{2+30x+42x^2+7x^3}{7+42x+30 x^2+2x^3}=\sqrt[3]{x}+O\!\a la izquierda((x-1)^7\right)\etiqueta{3} $$ Esta aproximación es agradable en el que se da a $\sqrt[\large3]{\frac1x}=\dfrac1{\sqrt[3]x}$. Sin embargo, el máximo que puede volver es $\frac72$.

La secuencia definida por $u_0=1$$u_{n+1}=u_nf\!\left(x/u_n^3\right)$, converge a $\sqrt[3]{x}$, y el hecho de que el error es $O\!\left((x-1)^7\right)$ significa que si $u_n$ es exacta a $d$ lugares, $u_{n+1}$ debe ser exacta a $7d$ lugares. Por ejemplo, para $x=8$, $$ \begin{align} u_1&=1.981746273197444478247642227&\text{%#%#% places}\\ u_2&=1.999999999999997579278630790&\text{%#%#% places}\\ u_3&=2.000000000000000000000000000 \end{align} $$


La Aproximación en la Pregunta $$ \frac{29z^3+261z^2+255z+22}{7z^3+165z^2+324z+71}=\sqrt[3]{z}+O\left((z-1)^5\right) $$ Esto no convergen tan rápido como la aproximación dada en $2$ (y los usos más grande de los coeficientes). No estoy seguro de cómo esta aproximación se deriva.


Raíz Cuadrada

La misma cosa se puede hacer para acelerar la raíz cuadrada de la iteración utilizando $$ f(x)=\frac{1+21x+35x^2+7x^3}{7+35x+21x^2+x^3}=\sqrt{x}+O\!\a la izquierda((x-1)^7\right) $$ La secuencia de $15$ $(3)$ converge en la misma manera a $u_0=1$.

1voto

Ataulfo Puntos 3108

COMENTARIO.- Sólo como un complemento a la exhaustiva respuesta dada por @LutzL, aquí te ofrecemos lo siguiente, que creo que es pertinente (es que no, estoy equivocado?) :

Deje $z_0\in\Bbb C$; cómo muchas de las funciones $f:\Bbb C\to \Bbb C$ están allí, que $f(z_0)=z_0$ $f$ siendo una asignación de contracción?

Probablemente hay un montón; si $f$ es uno de ellos, entonces para Banach de punto fijo teorema, takink y arbitraria $z\in\Bbb C$, el límite de $$\underbrace{f\circ f\circ\cdots f}_{n\text{ times }}(z)$$ when $n\to\infty$ is $z_0$.

Además si $\underbrace{f\circ f\circ\cdots f}_{n\text{ times }}(z)=z_n$, a continuación, la secuencia de $\{z_n\}$ converge rápidamente a $z_0$ debido a la contractivity de $f$ uno tiene $$d(z_n,z_0)\le \frac{K^n}{1-K}d(z,z_0)$$ where $K\in[0,1)$ is the constant of contraction of $f$ (so the smaller the $K$, el más rápido de la convergencia).

Lo que yo quería decir es que hay muchas aproximaciones a $\sqrt[3]{c}$ análogos a los propuestos por la O. P. y que el mismo se cumple para cualquier complejo constante.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X