声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4426|回复: 6

[综合讨论] 求助matlab探讨:quad和quadl为何积分结果相差极大?

[复制链接]
发表于 2008-10-15 09:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  1. clear all;
  2. syms n r lamda z rho alpha w;
  3. k=2*pi/lamda;
  4. sgb=exp(-(r/w)^n)*besselj(0,alpha*r);%SGB
  5. intgrnd=k/z*exp(i*k*rho^2/(2*z))*sgb*exp(-i*k*r^2/(2*z))*besselj(0,k*rho*r/z)*r;

  6. N=8;% the order of SG
  7. Z=100:2:106;
  8. Rho=linspace(-0.01,0.01);
  9. intgrnd=subs(intgrnd,{n lamda z alpha w},{N,1550*10^-9,Z,600,0.05});%关于Z的向量

  10. intValue=zeros(length(Z),length(Rho));%预分配空间
  11. for iValue=1:length(Z)
  12. disp(iValue);
  13. intgrndRho=subs(intgrnd(iValue),rho,Rho);
  14. for jValue=1:length(Rho)
  15. disp(jValue);
  16. intf=inline(vectorize(char(intgrndRho(jValue))));
  17. intValue(iValue,jValue)=abs(quad(intf,0,1));
  18. end;%内循环结束
  19. plot(Rho,intValue.^2);
  20. hold on
  21. end %外循环结束
复制代码


如果将上面程序中的quad 换为quadl ,则得到很好的图像,但是数量级不正确,请问咋回事?

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2008-10-15 10:17 | 显示全部楼层

回复 楼主 soberprogress 的帖子

应该差不了多少
quadl更精确些
你的积分方程是不是奇异了
 楼主| 发表于 2008-10-15 10:27 | 显示全部楼层

回复 沙发 sigma665 的帖子

都可以给出结果,就是数量级相差极大!
试试看,就明白了!

一个图形漂亮,但是数量级不对,一个数量级正确但是图形不对!

[ 本帖最后由 soberprogress 于 2008-10-15 10:44 编辑 ]
发表于 2008-10-15 14:04 | 显示全部楼层
quad(intf,0,1,1e-15)时,会提示奇异
所以应该2个算的都不对

我倾向于相信quadl
 楼主| 发表于 2008-10-15 15:19 | 显示全部楼层

回复 地板 sigma665 的帖子

我用的是matlab6.0 没有提示任何错误啊!:@( 谢谢您!
是不是因为你设置了精度,才会出现这样的结果,我也倾向于相信quadl,因为它精度高。
发表于 2008-10-15 16:32 | 显示全部楼层

回复 5楼 soberprogress 的帖子

我设置了精度
 楼主| 发表于 2008-10-16 07:39 | 显示全部楼层

回复 6楼 sigma665 的帖子

我给 quad命令设置了 精度后,很好!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 20:26 , Processed in 0.070676 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表