Numerical integral of sin(x)/x from 0 to inf

I am using a loop to estimate the parameters in a formula. However, when using the syntax 'integral' to numerically integrate sin(x)/x from 0 to inf, Matlab always gives me a warning and a wrong answer. The exact result of this integral is pi/2 if I use the syntax 'int'. Unfortunately, for estimation purpose, numerical integration saves me a great deal of time, and I can only use 'integral' rather than 'int'. My formula is pretty similar to the problem of integrating sin(x)/x. Can anyone help me correct the result given by Matlab 'integral'? Many thanks!

 Accepted Answer

One option is to use a large upper limit that is less than Inf:
z = integral(@(x) sin(x)./x, 0, 1E+4)
z =
1.57089154538596
That is reasonably close to .

2 Comments

Thanks! I have tried that before. But this function is just for demonstration. My formula is similar to it and this setup will greatly slow down my estimation. I am wondering if Matlab could use a more robust way to calculate the numerical integral.
My pleasure.
Please post the function you want to integrate, as well as any additional information as necesary. It may be possible to use the 'Waypoints' name-value pair to help approximating it. With the necessary information, we may be able to help you with it.

Sign in to comment.

More Answers (1)

y=@(x)sin(x)./x
integral(y,0,inf)

5 Comments

Thanks! But that is not working on my Matlab 2016a. Matlab always gives me the wrong answer. Is it working on your Matlab? If yes, I might need to change the version.
what error are you getting? Below is the warning I got
Warning: Reached the limit on the maximum number of intervals in use.
Approximate bound on error is 4.9e+00. The integral may not exist, or it may
be difficult to approximate numerically to the requested accuracy.
> In integralCalc/iterateScalarValued (line 372)
In integralCalc/vadapt (line 132)
In integralCalc (line 83)
In integral (line 88)
Warning: Reached the limit on the maximum number of intervals in use. Approximate bound on error is 4.9e+00. The integral may not exist, or it may be difficult to approximate numerically to the requested accuracy.
So the error message is really clear " it is difficult to approximate numerically"
That is why I am posting this question. This numerical integral works well on other softwares.

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!