声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: weilinhy

[综合讨论] 请教多重积分问题 谢谢大家

[复制链接]
发表于 2010-6-22 23:53 | 显示全部楼层

回复 15楼 weilinhy 的帖子

汗! 我可没帮上忙! :@L
这些东东不是忘光了, 就是还需再学习!
回复 支持 反对
分享到:

使用道具 举报

发表于 2010-6-23 17:49 | 显示全部楼层
暂时没有想到更好的办法,不知从解析上能否分析一下这个积分收敛性,如果收敛的话或许可以通过将abs(s1-u1)改为abs(s1-u1)+eps尝试解一下。有时间看看,这两天有点忙
 楼主| 发表于 2010-6-24 09:15 | 显示全部楼层
谢谢rocwoods
当H<3/4时,上述积分是收敛的。因为
1.jpg
2.jpg
3.jpg
4.jpg
当H<3/4,上述积分是有限的(将区间分为[0,1]和[1,+\infinite])

我现在还有个问题
采用您的方法计算下面积分时候,当H<3/4时候
5.jpg
clear all
theta=1; T=10; H=0.78;
ff1=@(x) @(y,z) exp(-theta*x-theta*(y-z)).*((x-y)).^(2*H-2).*z.^(2*H-2);
ff2=@(x) @(y,z) exp(-theta*x-theta*(y-z)).*((y-x)).^(2*H-2).*z.^(2*H-2);
ff3=@(x) @(y,z) exp(-theta*x-theta*(z-y)).*((x-y)).^(2*H-2).*z.^(2*H-2);
ff4=@(x) @(y,z) exp(-theta*x-theta*(z-y)).*((y-x)).^(2*H-2).*z.^(2*H-2);
Int1 = quadgk(@(x) arrayfun(@(x) quad2d(ff1(x),0,x,0,@(y)y),x),0,T)
Int2 = quadgk(@(x) arrayfun(@(x) quad2d(ff2(x),x,T,0,@(y)y),x),0,T)
Int3 = quadgk(@(x) arrayfun(@(x) quad2d(ff3(x),0,x,@(y)y,T),x),0,T)
Int4 = quadgk(@(x) arrayfun(@(x) quad2d(ff4(x),x,T,@(y)y,T),x),0,T)
INT = Int1+Int2+Int3+Int4

运行后

> In quad2d at 254
  In @(x)quad2d(ff1(x),0,x,0,@(y)y)
  In @(x)arrayfun(@(x)quad2d(ff1(x),0,x,0,@(y)y),x)
  In quadgk>evalFun at 357
  In quadgk>f1 at 375
  In quadgk>vadapt at 269
  In quadgk at 208
Warning: Reached the maximum number of function evaluations (2000). The result fails the global
error test.

请问怎么可以避免这个问题

辛苦您了

[ 本帖最后由 weilinhy 于 2010-6-24 09:23 编辑 ]
发表于 2010-6-24 17:39 | 显示全部楼层
楼主你用的MATLAB哪个版本?我用2010a没有提示:

  1. >> clear all
  2. theta=1; T=10; H=0.78;
  3. ff1=@(x) @(y,z) exp(-theta*x-theta*(y-z)).*((x-y)).^(2*H-2).*z.^(2*H-2);
  4. ff2=@(x) @(y,z) exp(-theta*x-theta*(y-z)).*((y-x)).^(2*H-2).*z.^(2*H-2);
  5. ff3=@(x) @(y,z) exp(-theta*x-theta*(z-y)).*((x-y)).^(2*H-2).*z.^(2*H-2);
  6. ff4=@(x) @(y,z) exp(-theta*x-theta*(z-y)).*((y-x)).^(2*H-2).*z.^(2*H-2);
  7. Int1 = quadgk(@(x) arrayfun(@(x) quad2d(ff1(x),0,x,0,@(y)y),x),0,T)
  8. Int2 = quadgk(@(x) arrayfun(@(x) quad2d(ff2(x),x,T,0,@(y)y),x),0,T)
  9. Int3 = quadgk(@(x) arrayfun(@(x) quad2d(ff3(x),0,x,@(y)y,T),x),0,T)
  10. Int4 = quadgk(@(x) arrayfun(@(x) quad2d(ff4(x),x,T,@(y)y,T),x),0,T)
  11. INT = Int1+Int2+Int3+Int4

  12. Int1 =

  13.     1.2617


  14. Int2 =

  15.     4.1067


  16. Int3 =

  17.     1.4130


  18. Int4 =

  19.     3.2933


  20. INT =

  21.    10.0747
复制代码

评分

1

查看全部评分

发表于 2010-6-24 22:35 | 显示全部楼层
使用2009a试了下roc的编码, 结果同roc
 楼主| 发表于 2010-6-26 11:07 | 显示全部楼层

回复 19楼 rocwoods 的帖子

对不起 上面的我写错了 应该是
clear all
theta=1; T=10; H=0.68; %H is less than 3/4
ff1=@(x) @(y,z) exp(-theta*x-theta*(y-z)).*((x-y)).^(2*H-2).*z.^(2*H-2);
ff2=@(x) @(y,z) exp(-theta*x-theta*(y-z)).*((y-x)).^(2*H-2).*z.^(2*H-2);
ff3=@(x) @(y,z) exp(-theta*x-theta*(z-y)).*((x-y)).^(2*H-2).*z.^(2*H-2);
ff4=@(x) @(y,z) exp(-theta*x-theta*(z-y)).*((y-x)).^(2*H-2).*z.^(2*H-2);
Int1 = quadgk(@(x) arrayfun(@(x) quad2d(ff1(x),0,x,0,@(y)y),x),0,T)
Int2 = quadgk(@(x) arrayfun(@(x) quad2d(ff2(x),x,T,0,@(y)y),x),0,T)
Int3 = quadgk(@(x) arrayfun(@(x) quad2d(ff3(x),0,x,@(y)y,T),x),0,T)
Int4 = quadgk(@(x) arrayfun(@(x) quad2d(ff4(x),x,T,@(y)y,T),x),0,T)
INT = Int1+Int2+Int3+Int4

运行后

> In quad2d at 254
  In @(x)quad2d(ff1(x),0,x,0,@(y)y)
  In @(x)arrayfun(@(x)quad2d(ff1(x),0,x,0,@(y)y),x)
  In quadgk>evalFun at 357
  In quadgk>f1 at 375
  In quadgk>vadapt at 269
  In quadgk at 208
Warning: Reached the maximum number of function evaluations (2000). The result fails the global
error test.

请问怎么可以避免这个问题

请注意 H<0.75的情况 (赫斯特指数H<0.75时候)
辛苦您了
 楼主| 发表于 2010-6-28 23:33 | 显示全部楼层

回复 21楼 weilinhy 的帖子

求助阿 感谢大家帮忙 拜谢
 楼主| 发表于 2010-7-12 10:00 | 显示全部楼层

回复 19楼 rocwoods 的帖子

请问 请问怎么可以避免这个问题

请注意 H<0.75的情况 (赫斯特指数H<0.75时候)
辛苦您了

clear all
theta=1; T=10; H=0.68; %H is less than 3/4
ff1=@(x) @(y,z) exp(-theta*x-theta*(y-z)).*((x-y)).^(2*H-2).*z.^(2*H-2);
ff2=@(x) @(y,z) exp(-theta*x-theta*(y-z)).*((y-x)).^(2*H-2).*z.^(2*H-2);
ff3=@(x) @(y,z) exp(-theta*x-theta*(z-y)).*((x-y)).^(2*H-2).*z.^(2*H-2);
ff4=@(x) @(y,z) exp(-theta*x-theta*(z-y)).*((y-x)).^(2*H-2).*z.^(2*H-2);
Int1 = quadgk(@(x) arrayfun(@(x) quad2d(ff1(x),0,x,0,@(y)y),x),0,T)
Int2 = quadgk(@(x) arrayfun(@(x) quad2d(ff2(x),x,T,0,@(y)y),x),0,T)
Int3 = quadgk(@(x) arrayfun(@(x) quad2d(ff3(x),0,x,@(y)y,T),x),0,T)
Int4 = quadgk(@(x) arrayfun(@(x) quad2d(ff4(x),x,T,@(y)y,T),x),0,T)
INT = Int1+Int2+Int3+Int4

运行后

> In quad2d at 254
  In @(x)quad2d(ff1(x),0,x,0,@(y)y)
  In @(x)arrayfun(@(x)quad2d(ff1(x),0,x,0,@(y)y),x)
  In quadgk>evalFun at 357
  In quadgk>f1 at 375
  In quadgk>vadapt at 269
  In quadgk at 208
Warning: Reached the maximum number of function evaluations (2000). The result fails the global
error test.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-24 19:04 , Processed in 0.079494 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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