24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1350  |  回复: 34

wgdd

木虫 (正式写手)

[求助] 求助一个数值积分问题,用matlab的quadgk函数来计算,谢谢!

现求解一个半无限震荡积分问题:

被积函数为s*besselj(0,s*R)./(s.^2-k0^2), 积分区间为[0,inf], 其中R=6, k0=10, 均为已知常数。我打算用两种方法来计算这个问题。(解析解和数值解)

方法一,解析解
对于这样一个积分,可以查到数学手册中积分结果为pi*i/2*besselh(0,1,k0*R). 经过计算可以得到结果为-0.0744。
计算程序
% analytic method
k0=10;
R=6;
p_inc=real(pi*1i/2*besselh(0,1,k0*R));

方法二,采用matlab中的quadgk函数进行计算,由于k0为奇点,所以将积分区间分为两块。[0,k0]和[k0,inf],计算结果为0.0390
计算程序
% numerical method
k0=10;
R=6;
p_f=@(s)(s).*besselj(0,s*R)./(s.^2-k0^2);

p1=quadgk(p_f,0,k0);
p2=quadgk(p_f,k0,inf);

p_incN=p1+p2;

求各位大牛支招,为啥两种方法差别这么大呀~正确的数值积分方法应该是怎么样的呢?十分感谢!@wuming524
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
2楼2017-08-17 17:25:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
3楼2017-08-17 19:47:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
4楼2017-08-18 01:07:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
5楼2017-08-18 02:06:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
6楼2017-08-18 13:54:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
7楼2017-08-18 15:56:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
8楼2017-08-18 16:43:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
9楼2017-08-18 22:33:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
10楼2017-08-19 00:41:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wgdd 的主题更新
信息提示
请填处理意见