2 votos

Calcular el CoSecante Hiperbólico de Arco más rápido que utilizar una serie de potencias estándar

He utilizado la serie de potencia estándar para calcular la función trigonométrica co-secante del arco. Pero al igual que en mis otros posts anteriores, es muy lento. Aquí está la Power-Series estándar, tomada de https://en.wikipedia.org/wiki/Inverse_hyperbolic_functions#Series_expansions

$$ \operatorname{arcsch} x = \operatorname{arsinh} \frac1x = x^{-1} - \left( \frac {1} {2} \right) \frac {x^{-3}} {3} + \left( \frac {1 \cdot 3} {2 \cdot 4} \right) \frac {x^{-5}} {5} - \left( \frac {1 \cdot 3 \cdot 5} {2 \cdot 4 \cdot 6} \right) \frac {x^{-7}} {7} \pm\cdots \\ = \sum_{n=0}^\infty \left( \frac {(-1)^n(2n)!} {2^{2n}(n!)^2} \right) \frac {x^{-(2n+1)}} {2n+1} , \qquad \left| x \right| > 1 $$ He utilizado un formulario diferente para agilizarlo, cosa que no hizo. $$ \operatorname{arcsch} x = \frac {1}{x} - \left( \frac {1} {2} \right) \frac {1} {3 x^{3}}+ \left( \frac {1 \cdot 3} {2 \cdot 4} \right) \frac{1} {5x^{5}} - \left( \frac {1 \cdot 3 \cdot 5} {2 \cdot 4 \cdot 6} \right) \frac {1} {7x^{7}} \pm\cdots \\ = \sum_{n=0}^\infty \left( \frac {(-1)^n(2n)!} {2^{2n}(n!)^2} \right) \frac {x^{-(2n+1)}} {2n+1} , \qquad \left| x \right| > 1 $$ Pero es más fácil de reproducir en mi programa de calculadora. La parte que está tardando tanto son los términos $$ \left ( \frac {1} {7x^{7}} \right ) $$ y superior. El tiempo empleado en dividir $$ {7x^{7}} $$ en $$ 1 $$ es enorme. En esta iteración, tarda unos 15 segundos. Las siguientes siguen creciendo, usando más tiempo.

Y sí, este puesto es mi último puesto Cálculo de la CoTangente Hiperbólica del Arco más rápido que con una serie de potencias estándar . Aquí, 2 personas me mostraron el método de Horner y un procedimiento de programación. Fue realmente rápido, en comparación con lo que estaba usando antes.

Espero que haya una forma parecida a la de Horner que una persona, ustedes, puedan mostrarme. He leído la página Wiki que explica el método de Horner, pero eso no significa que pueda crear el método.

Muchas gracias por su tiempo.

2voto

Brian Deacon Puntos 4185

Fundamentalmente, la forma Horner no implica más que un conveniente paréntesis y una factorización para evitar volver a potenciar la variable con cada término. Por ejemplo, $$\begin{align} a_0 + a_1 z + a_2 z^2 + a_3 z^3 + a_4 z^4 &\quad\to\quad a_0 + z\left(a_1 + a_2 z + a_3 z^2 + a_4 z^3 \right) \\ &\quad\to\quad a_0 + z\left(a_1 + z \left( a_2 + a_3 z + a_4 z^2 \right)\; \right) \\ &\quad\to\quad a_0 + z\left(a_1 + z \left( a_2 + z \left( a_3 + a_4 z \right)\; \right)\; \right) \\ \end{align} \tag{1}$$

En realidad, eso es todo, aunque a veces (especialmente con las series de potencias) podemos aprovechar la naturaleza específica de los coeficientes.

Así, una primera pasada por la serie de arcadas hiperbólicas quedaría así (por etapas):

$$\begin{align} \operatorname{arcsch}(x) &= x^{-1}\left(\;1 - \frac12\cdot\frac13 x^{-2} + \frac{1\cdot 3}{2\cdot 4}\cdot \frac15 x^{-4} - \frac{1\cdot 3\cdot 5}{2\cdot 4\cdot 6}\cdot\frac17 x^{-6} + \cdots \right. \tag{2a}\\[4pt] &= x^{-1}\left(\;1 + x^{-2}\left(- \frac12\cdot\frac13 + \frac{1\cdot 3}{2\cdot 4}\cdot \frac15 x^{-2} - \frac{1\cdot 3\cdot 5}{2\cdot 4\cdot 6}\cdot\frac17 x^{-4} + \cdots \right.\right. \tag{2b}\\[4pt] &= x^{-1}\left(\;1 + x^{-2}\left(- \frac12\cdot\frac13 + x^{-2}\left(\frac{1\cdot 3}{2\cdot 4}\cdot \frac15 - \frac{1\cdot 3\cdot 5}{2\cdot 4\cdot 6}\cdot\frac17 x^{-2} + \cdots \right.\right.\right. \tag{2c}\\[4pt] &= x^{-1}\left(\;1 + x^{-2}\left(- \frac12\cdot\frac13 + x^{-2}\left(\frac{1\cdot 3}{2\cdot 4}\cdot \frac15 + x^{-2}\left(- \frac{1\cdot 3\cdot 5}{2\cdot 4\cdot 6}\cdot\frac17 + \cdots \right.\right.\right.\right. \tag{2d} \end{align}$$

Todo lo que hice fue añadir paréntesis y sacar potencias de $x$ a medida que avanzaba. No hice ningún cambio en los coeficientes.

Sin embargo, podemos limpiar esto un poco. En primer lugar, definir $y := 1/x$ y $z:=1/x^2$ (que se puede calcular una vez y almacenar), por lo que tenemos

$$\operatorname{arcsch}(x) = y\left(\;1 + z\left(-\frac12\cdot\frac13 + z\left(\frac{1\cdot 3}{2\cdot 4}\cdot \frac15 + z\left(-\frac{1\cdot 3\cdot 5}{2\cdot 4\cdot 6}\cdot\frac17 + \cdots\right.\right.\right.\right. \tag{3}$$

Ahora, observa que los coeficientes son factores acumulativos. Podemos evitar volver a calcularlos factorizando en los niveles adecuados. De nuevo, haciendo esto por etapas...

$$\begin{align} \operatorname{arcsch}(x) &= y\left(\;1 + z\cdot \frac12 \left(-\frac13 + z\left(\frac{3}{4}\cdot \frac15 - z\left(\frac{3\cdot 5}{4\cdot 6}\cdot\frac17 + \cdots\right.\right.\right.\right. \tag{4a} \\[4pt] &= y\left(\;1 + z\cdot \frac12 \left(-\frac13 + z\cdot \frac34 \left(\frac15 + z\left(-\frac56\cdot\frac17 + \cdots\right.\right.\right.\right. \tag{4b} \\[4pt] &= y\left(\;1 + z\cdot \frac12 \left(-\frac13 + z\cdot \frac34 \left(\frac15 + z\cdot \frac56 \left(-\frac17 + \cdots\right.\right.\right.\right. \tag{4c} \end{align}$$

Incluso podemos factorizar los negativos sobre la marcha, para obtener

$$\begin{align} \operatorname{arcsch}(x) &= y\left(\;1 - z\cdot \frac12 \left(\frac13 - z\cdot \frac34 \left(\frac15 - z\cdot \frac56 \left(\frac17 - \cdots\right.\right.\right.\right. \tag{5} \end{align}$$

Dejaré a OP que implemente el correspondiente algoritmo computacional programático.

En cualquier caso, la conversión a la forma Horner es totalmente mecánica, al menos en el primer paso. La optimización de los coeficientes factoriales también es relativamente sencilla, aunque no siempre es posible. (Para practicar, OP puede volver a ver sus preguntas anteriores de cálculo rápido, convertir cada serie a la forma de Horner por su cuenta y luego comparar con las respuestas y/o comentarios que haya recibido. Y, por supuesto, también debería poder aplicar este procedimiento a las nuevas series.

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