| New Reply |
Problem with numerical integration of error function |
Share Thread |
| Oct6-11, 07:52 PM | #1 |
|
|
Problem with numerical integration of error function
Hi,
For a small problem I'm working on in quantum field theory, I have to numerically evaluate the integral [tex]\int_{-\infty}^{t}du e^{i\omega u}erf\left(\frac{u}{\sqrt{2}\sigma}\right)[/tex] where [itex]erf(z)[/itex] is the error function. Now, I have to replace [itex]-\infty[/itex] by some large negative number, so I effectively end up evaluating [tex]\int_{-t_H}^{t}du e^{i\omega u}erf\left(\frac{u}{\sqrt{2}\sigma}\right)[/tex] If I use Matlab or Mathematica to evaluate this integral numerically, I get warnings indicating that the integrand is singular, or highly oscillatory. Secondly, the choice of [itex]t_H[/itex] seems critical, and since the integrand itself doesn't fall off asymptotically, its not clear to me how [itex]t_H[/itex] should be chosen in terms of [itex]\sigma[/itex]. Note that in the [itex]t_H, t \rightarrow \infty[/itex] limit, this is just the Fourier Transform of the error function, which is well defined for [itex]\omega \neq 0[/itex]. Incidentally, [itex]\omega \neq 0[/itex] is ensured in my physical problem. Any suggestions for how this integral could be numerically evaluated? Secondly, what is a good way to evaluate the error function of a complex number, i.e. erf(a + ib) where a and b are real, and i = sqrt(-1)? Thanks in advance! |
| Oct6-11, 11:47 PM | #2 |
|
Recognitions:
|
The Fourier transform of unity involves a delta function so your function does as well. It would also help to know the domain of your parameters.
Assuming σ>0 we can write erf(u/(sqrt(2)σ)=-1+(1+erf(u/(sqrt(2)σ)) (1+erf(u/(sqrt(2)σ))->0 rapidly for tH large This separates the delta function part from the numerical integration. If t is large we need to do something similar for it. You could also write the integral in terms of special functions like erf. |
| Oct7-11, 02:09 AM | #3 |
|
|
For u tending to -infinity, the erf function tends to -1. The function to be integrated is equivalent to exp(iwu) which primitive is exp(iwu)/iw = (-i cos(wu)+sin(wu))/w +C. So the integral is oscillating. If the lower bound is a large negative number, but not -infinity, the integral can be evaluated. But in practice, numerical integration would involve some difficulties due to a too large number of periods. In that case, it is more convenient to integrate analytically the function (This is possible in terms of erf and exp functions) and then numerically evaluate the formula which has been obtained. |
| Oct7-11, 02:47 AM | #4 |
|
|
Problem with numerical integration of error functionhttp://www.math.wisc.edu/~keisler/calc.html In the second version HJ Keisler says, |
| Oct7-11, 10:52 PM | #5 |
|
|
Thanks for the replies everyone!
[tex]\left[-\pi\delta(\omega)-\frac{i e^{-\sigma^2\omega^2/2}}{\omega}\left(erf\left(\frac{t}{\sqrt{2}\sigma}\right)e^{(\sigma^2\o mega^2 + 2i\omega t)/2} + erfc\left(\frac{t-i\sigma^2\omega}{\sqrt{2}\sigma}\right) - 2\right)\right][/tex] The problem is the numerical evaluation of the error function of a complex argument. If I replace the lower limit ([itex]-\infty[/itex]) by some large negative number, [itex]-T_{0}[/itex], my results are sensitive to the value of [itex]T_{0}[/itex] relative to [itex]\sigma[/itex]. Also, both MATLAB as well as Mathematica return warnings when evaluating the integral numerically even for finite [itex]T_0[/itex]. |
| Oct8-11, 03:22 AM | #6 |
|
|
The joint page was written in hurry without checking. It will require to carry out more checks. |
| Oct8-11, 11:39 PM | #7 |
|
|
|
| Oct9-11, 02:16 AM | #8 |
|
|
A little change in notations f(t,T) for clarification in attachment :
|
| Oct9-11, 06:52 AM | #9 |
|
|
Code:
Clear[t]
\[Omega] = 1;
\[Sigma] = 1;
myf[(t_)?NumericQ] := NIntegrate[
Exp[I*\[Omega]*u]*Erf[u/(Sqrt[2]*\[Sigma])],
{u, -Infinity, t}]
mytable = Table[{t, myf[t]}, {t, 0, 20, 0.25}];
ListPlot[{({#1[[1]], Re[#1[[2]]]} & ) /@ mytable,
({#1[[1]], Im[#1[[2]]]} & ) /@ mytable},
Joined -> True]
[tex]Erf(1+i)=\frac{2}{\sqrt{\pi}} \int_0^{1+i} e^{-t^2}dt[/tex] just parameterize a straight-line path from the origin to the point 1+i as t=t+it so that the integral becomes: [tex]Erf(1+i)=\frac{2}{\sqrt{\pi}} (1+i)\int_0^1 e^{-(t+it)^2} dt[/tex] |
| Oct11-11, 07:35 AM | #10 |
|
|
A more simple way in order to separate the non-convegent part of the integral :
|
| New Reply |
| Tags |
| error function, fourier transform |
Similar discussions for: Problem with numerical integration of error function
|
||||
| Thread | Forum | Replies | ||
| Define a function via numerical integration in Mathematica | Math & Science Software | 6 | ||
| what is an easy way to calculate numerical integration uncertainty/error | Calculus | 1 | ||
| Numerical multidimensional integration over function of six variables | Calculus | 5 | ||
| Finding derivatives of vector function for numerical integration | Differential Equations | 0 | ||
| numerical integration error | Programming & Comp Sci | 8 | ||