Dealing with complex integrals of a highly oscillatory type
4 次查看(过去 30 天)
显示 更早的评论
The following integral can be computed analytically using complex integration (required due to the pole at the origin):
However, if I try to evaluate this numerically, I run into trouble. Two approaches
1. Numerically: This is doomed to fail due to the function's behaviour at the origin.
fun = @(x) exp(1j*x)./x;
integral(fun,-inf,inf)
Warning: Reached the limit on the maximum number of intervals in use. Approximate bound on error
is 9.8e+00. The integral may not exist, or it may be difficult to approximate numerically to
the requested accuracy.
2. Symbolically: This gives the wrong answer and leaves a limit to be evaluated
syms x;
f(x) = exp(1j*x)/x;
int(f,[-inf,inf],'PrincipalValue',true)
ans =
- pi*1i + limit(- ei(-1i/eps27) + ei(1i/eps27), eps27, 0, 'Right')
What is the way to evaluating such integrals in matlab? I suspect the trouble is not at the origin, but at how the function is behaving (numerically) at the end points.
0 个评论
回答(1 个)
Alan Stevens
2020-7-29
I don't know in general, but for this particular integral, since cos(x)/x is odd, its contribution to the integral is zero and we can do the following:
>> syms x
>> I = i*int(sin(x)/x,-inf,inf)
I =
pi*1i
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Calculus 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!