# Integrate vs. NIntegrate in Mathematica

• Mathematica

## Main Question or Discussion Point

I'm trying to integrate the function Exp[-I*t*x - t^2/2] from -infinity to infinity using NIntegrate in Mathematica; the value that I get is accurate when x is small, but as x gets larger, the output from NIntegrate does not match the value I get when I use Integrate -- it gets less and less accurate.
Does anyone know why this happens and what I can do to make sure NIntegrate is giving me accurate answers? (I'm ultimately going to apply NIntegrate to a much more complicated function and I'm using this test function to figure out how to deal with the oscillatory behavior)

Related MATLAB, Maple, Mathematica, LaTeX News on Phys.org
Hepth
Gold Member
The exact result is $$e^{-\frac{x^2}{2}} \left(\sqrt{2 \pi }\right)$$

Which for ##x == 10# is 4.83466*10^-22

So you need HIGH precision to recreate that with NIntegrate. You can do that, and set a precision goal by : (In the following the first example is NOT ENOUGH PRECISION, the second is enough )

Code:
With[{x = 10},
NIntegrate[Exp[-I*t*x - t^2/2], {t, -\[Infinity], \[Infinity]},
WorkingPrecision -> 20, PrecisionGoal -> 6]]
This is not enough, and gives
Code:
NIntegrate::ncvb: "\!$$\* StyleBox[\"\\\"NIntegrate failed to converge to prescribed accuracy after \\\"\", \"MT\"]$$\!$$\* StyleBox[\"9\", \"MT\"]$$\!$$\* StyleBox[\"\\\" recursive bisections in \\\"\", \"MT\"]$$\!$$\* StyleBox[\"t\", \"MT\"]$$\!$$\* StyleBox[\"\\\" near \\\"\", \"MT\"]$$\!$$\* StyleBox[ RowBox[{\"{\", \"t\", \"}\"}], \"MT\"]$$\!$$\* StyleBox[\"\\\" = \\\"\", \"MT\"]$$\!$$\* StyleBox[ RowBox[{\"{\", \"1.255585675845388\", \"}\"}], \"MT\"]$$\!$$\* StyleBox[\"\\\". NIntegrate obtained \\\"\", \"MT\"]$$\!$$\* StyleBox[ RowBox[{ RowBox[{\"-\", \"1.0581813203458523*^-16\"1.0581813203458523*}], \"+\", RowBox[{\"3.469446951953614*^-17\"3.469446951953614*, \" \", \"I\"}]}], \"MT\"]$$\!$$\* StyleBox[\"\\\" and \\\"\", \"MT\"]$$\!$$\* StyleBox[\"6.409147557108418*^-16\"6.409147557108418*, \"MT\"]$$\!$$\* StyleBox[\"\"\", \"MT\"]$$ for the integral and error estimates.
Code:
With[{x = 10},
NIntegrate[Exp[-I*t*x - t^2/2], {t, -\[Infinity], \[Infinity]},
WorkingPrecision -> 40, PrecisionGoal -> 6]]
This gives
Code:
 4.834658903596599769813455011618390931572*10^{-22} +
1.783512275559820938759410037056409076459*10^{-51} i`

So youll have to increase your working precision depending on how high "x" is.

For x = 50, you'll have to have the working precision greater than 87 (90 works).