15 votos

erf(a+ib) función de error separada en parte real e imaginaria

¿Existe una manera fácil de separar erf(a+ib) en parte real y parte imaginaria?

21voto

Ron Gordon Puntos 96158

No estoy seguro de si te interesa una respuesta analítica o una respuesta computacional; son dos cosas diferentes. La respuesta analítica es... no realmente, a menos que consideres útil la respuesta de GEdgar. (Y uno podría hacerlo).

La respuesta computacional es un sí rotundo. A resultado encontrado en Abramowitz & Stegun reclama lo siguiente:

$$\operatorname*{erf}(x+i y) = \operatorname*{erf}{x} + \frac{e^{-x^2}}{2 \pi x} [(1-\cos{2 x y})+i \sin{2 x y}]\\ + \frac{2}{\pi} e^{-x^2} \sum_{k=1}^{\infty} \frac{e^{-k^2/4}}{k^2+4 x^2}[f_k(x,y)+i g_k(x,y)] + \epsilon(x,y) $$

donde

$$f_k(x,y) = 2 x (1-\cos{2 x y} \cosh{ k y}) + k\sin{2 x y} \sinh{k y}$$ $$g_k(x,y) = 2 x \sin{2 x y} \cosh{k y} + k\cos{2 x y} \sinh{k y}$$

Entonces

$$\left |\epsilon(x,y) \right | \le 10^{-16} |\operatorname*{erf}{(x+i y)}| $$

Esta precisión es válida para todos $x$ y $y$ es decir, el plano complejo.

Presentaré una derivación de este resultado para mostrarles de dónde viene el término de error. Considere la definición de la función de error en el plano complejo:

$$\operatorname*{erf}{z} = \frac{2}{\sqrt{\pi}} \int_{\Gamma} d\zeta \, e^{-\zeta^2}$$

donde $\Gamma$ es cualquier trayectoria en el plano complejo desde $\zeta = 0$ a $\zeta=z$ . Consideremos, pues, el caso especial en el que $\Gamma$ es la ruta que va desde $0$ a $x$ a lo largo del eje real, entonces de $x$ a $z=x+i y$ paralelo al eje imaginario. Visto así, la función de error de un número complejo es igual a

$$\operatorname*{erf}{(x+i y)} = \operatorname*{erf}{x} + i \frac{2}{\sqrt{\pi}} e^{-x^2} \int_0^y du \, e^{u^2} \cos{2 x u} \\ + \frac{2}{\sqrt{\pi}} e^{-x^2} \int_0^y du \, e^{u^2} \sin{2 x u}$$

A continuación, encontraremos una aproximación adecuada a estas integrales. Para ello, daremos un rodeo por la teoría de Fourier.

Considere una función $\phi(t)$ que tiene una transformada de Fourier

$$\Phi(\xi) = \int_{-\infty}^{\infty} dt \, \phi(t) \, e^{-i 2 \pi \xi t}$$

Comenzamos con una forma de la Fórmula de la suma de Poisson :

$$\sum_{n=-\infty}^{\infty} \phi(n+t) = \sum_{n=-\infty}^{\infty}e^{i 2 \pi n t} \Phi(n)$$

y considerar el caso en que $\phi(t) = e^{-a^2 t^2}$ , $a \gt 0$ . Entonces, dejar que $u= a t$ tenemos

$$\sum_{n=-\infty}^{\infty} e^{-(u+n a)^2} = \frac{\sqrt{\pi}}{a} \left [1+2 \sum_{n=1}^{\infty} e^{-n^2 \pi^2/a^2} \cos{\left (2 \pi n \frac{u}{a} \right )} \right ]$$

La observación clave aquí es que podemos elegir cualquier valor de $a$ deseamos y esta ecuación se mantiene. De hecho, podemos elegir un valor de $a$ de tal manera que la suma en el lado derecho puede ser ignorada. Llamemos a esta suma $\epsilon(u)$ :

$$|\epsilon(u)| = 2 \left |\sum_{n=1}^{\infty} e^{-n^2 \pi^2/a^2} \cos{\left (2 \pi n \frac{u}{a} \right )}\right | \le \sum_{n=1}^{\infty} e^{-n^2 \pi^2/a^2} $$

Tenga en cuenta que, cuando $a=1/2$ (que es el valor utilizado en la fórmula A y S anterior), $\left |\epsilon(u)\right | \le e^{-4 \pi^2} + e^{-16 \pi^2} + \cdots \approx 5 \cdot 10^{-17} $ . Por lo tanto, podemos reescribir el resultado de la fórmula de la suma de Poisson como sigue:

$$e^{u^2} [1+\epsilon(u)] = \frac{a}{\sqrt{\pi}} \left [1+2 \sum_{n=1}^{\infty} e^{-n^2 a^2} \cosh{2 n a u} \right ]$$

Ahora sustituye este resultado en las integrales que definen la función de error anterior:

$$\begin{align}\frac{2}{\sqrt{\pi}}\int_0^y du \, e^{u^2} \sin{2 x u} &\approx \frac{2}{\sqrt{\pi}} \int_0^y du \frac{a}{\sqrt{\pi}} \left [1+2 \sum_{n=1}^{\infty} e^{-a^2 n^2} \cosh{2 n a u} \right ] \sin{2 x u}\\ &= 2 a \frac{1-\cos{2 x y}}{2 \pi x} + \frac{4 a}{\pi} \sum_{n=1}^{\infty} e^{-a^2 n^2} \int_0^y du \, \cosh{2 a n u}\, \sin{2 x u}\\ &= 2 a \frac{1-\cos{2 x y}}{2 \pi x} \\ &+ \frac{2 a}{\pi}\sum_{n=1}^{\infty} e^{-a^2 n^2} \frac{x (1-\cos{2 x y} \cosh{2 a n y})+ a n \sin{2 x y} \sinh{2 a n y}}{x^2+a^2 n^2} \end{align} $$

De la misma manera,

$$\frac{2}{\sqrt{\pi}}\int_0^y du \, e^{u^2} \cos{2 x u} \approx \\2 a \frac{\sin{2 x y}}{2 \pi x} + \frac{2 a}{\pi}\sum_{n=1}^{\infty} e^{-a^2 n^2} \frac{x \sin{2 x y} \cosh{2 a n y}+ a n \cos{2 x y} \sinh{2 a n y}}{x^2+a^2 n^2}$$

Poniendo esto en conjunto, reproducimos el resultado de A & S cuando $a=1/2$ .

ADDENDUM

He implementado esto en Mathematica. Hay que tener en cuenta que el número de términos necesarios para alcanzar una tolerancia depende del valor de $z$ y es bastante sensible a $\Im{z}$ . Así, he implementado un simple bucle while para conseguir la precisión deseada.

Hay que tener en cuenta que el límite máximo de esta precisión es el $10^{-16}$ cifra aproximada que obtuve anteriormente. Sin embargo, esto no tiene mucha importancia, ya que es el límite de lo que proporciona el cálculo en coma flotante de doble precisión. Por eso este resultado es un gran problema: analíticamente, no es igual a la función de error, pero computacionalmente, es igual a todos los efectos prácticos.

De todos modos, aquí está el código:

 f[x_, y_, a_, n_] := 
 Erf[x] + 2 a Exp[-x^2]/(2 Pi x) ((1 - Cos[2 x y]) + 
     I Sin[2 x y]) + (2 a Exp[-x^2]/Pi) Sum[
    Exp[-a^2 k^2]/(x^2 + 
        a^2 k^2) ((x (1 - Cos[2 x y] Cosh[2 k a y]) + 
         a k Sin[2 x y] Sinh[2 a k y]) + 
       I (x Sin[2 x y] Cosh[2 k a y] + 
          a k Cos[2 x y] Sinh[2 a k y])), {k, 1, n}]

(Esta es la fórmula que derivamos anteriormente, en sintaxis de Mathematica).

g[x_, y_, a_] := Module[{n, err, tol, f1, f2, maxIters}, (
    n = 1;
    err = 1;
    tol = 10^(-15);
    maxIters = 50;
    f2 = f[x, y, a, n];
    While[Abs[err] > tol && n < maxIters, (
      f1 = f2;
      f2 = f[x, y, a, ++n];
      err = Abs[f2/(f1 + 10^(-16)) - 1]
      )];
    f2
    )] ;

(Este es el bucle while que calcula erf con la precisión deseada. Observe que la condición maxIters es necesaria porque hay puntos que parecen resistirse a la convergencia. Creo que estos pueden ser ceros de la función de error, pero todavía no he investigado).

Y ahora, aquí hay un gráfico de algunos resultados; nótese que el gráfico del número efectivo de decimales de precisión alcanzado.

ContourPlot[-Log[10, 
   Abs[g[x, y, 0.5]/(Erf[x + I y] + 10^(-16)) - 1]], {x, -2, 
  2}, {y, -4, 4}, PlotPoints -> 20, PlotLegends -> Automatic]

enter image description here enter image description here

La gran cantidad de detalles es indicativa del ruido que vemos cuando hemos llegado al límite de la precisión que podemos alcanzar. También hay alguna estructura en torno a los casos en los que el cálculo no ha podido alcanzar el nivel de precisión deseado; de nuevo, merece la pena investigarlo.

0 votos

No hay $a$ en el LHS de su última aproximación.

0 votos

@PedroTamaroff: no pasa nada. Lee bien la derivación.

0 votos

Oh, mi error. =) ${}{}$

5voto

Anthony Cramp Puntos 126

Bueno, $$ \text{Re}\;\text{erf}(a+ib) = \frac{\text{erf}(a+ib)+\text{erf}(a-ib)}{2} $$ y algo similar para la parte imaginaria.

0 votos

Esto podría funcionar, gracias

3voto

Ian Davis Puntos 3779

Las identidades para las partes real e imaginaria de la función de error son:

$$ \begin{aligned} {\mathop{\rm Re}\nolimits} \left[ {{\rm{erf}}\left( {x + iy} \right)} \right] &= \frac{{{\rm{erf}}\left( {x + iy} \right) + {\rm{erf}}\left( {x - iy} \right)}}{2}\\ {\mathop{\rm Im}\nolimits} \left[ {{\rm{erf}}\left( {x + iy} \right)} \right] &= \frac{{{\rm{erf}}\left( {x + iy} \right) - {\rm{erf}}\left( {x - iy} \right)}}{{2i}} \end{aligned} $$

Véase el artículo [Abrarov y Quine, J. Math. Research, 7(2), 2015, pp. 163-174] para la demostración rigurosa: http://dx.doi.org/10.5539/jmr.v7n2

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