找回密码
 注册
Simdroid-非首页
查看: 344|回复: 14

[2.数值] Maple能解高震荡函数积分吗?

[复制链接]
发表于 2013-11-2 03:11:34 | 显示全部楼层 |阅读模式 来自 加拿大
本帖最后由 winner245 于 2013-11-2 03:14 编辑

请问Maple能解下面这个高震荡函数积分吗?

  1. evalf(Int(cos(log(x)/x)/x, x = 0..1));
复制代码
我试了 int、Int、evalf/Int 都没求出来。另外,Matlab数值积分函数束手无策

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2013-11-6 14:59:18 | 显示全部楼层 来自 陕西西安
Simdroid开发平台
mma 直接给出答案。

你为什么matlab问了,这里又要问呢?是两个结合着用吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2013-11-7 04:44:47 | 显示全部楼层 来自 加拿大
TBE_Legend 发表于 2013-11-6 14:59
mma 直接给出答案。

你为什么matlab问了,这里又要问呢?是两个结合着用吗?

mathematica 我知道可以求解,我想看看 maple 是否可以求解。我自己试过了,找不到 maple 求解的办法,所以,就发到专门的 maple 版块了。Matlab 的求解方法,我还在尝试中。如果有违版规,还请版主见谅
回复 不支持

使用道具 举报

发表于 2013-11-30 13:20:54 | 显示全部楼层 来自 陕西西安
本帖最后由 feiyuzhen 于 2013-11-30 13:23 编辑

画了个图,大概十分钟

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2013-12-1 04:32:27 | 显示全部楼层 来自 加拿大
feiyuzhen 发表于 2013-11-30 13:20
画了个图,大概十分钟

看来Maple并没有用专门的方法计算震荡积分,还是使用经典的积分办法,所以时间会这么久,越接近0点,震荡性越大,所需点越多,maple计算时长就越长
回复 不支持

使用道具 举报

发表于 2014-1-9 02:43:32 | 显示全部楼层 来自 陕西西安
本帖最后由 windflag 于 2014-1-9 03:16 编辑

对于这种高度震荡的函数,建议用软件处理前,还是先做必要的数学处理。用maple和mathematica曾经做过类似情况的问题,但涉及很少,经验有限,貌似好像mathematica的能力强些(不一定,可能跟函数默认的参数设置有关)。但是,不做相应的处理直接调用这两个软件的函数进行积分,所得到的的结果是否正确个人还不能确定(软件的结果有可能不对,这个并非是软件自身问题,因为软件的函数积分时,对所处理的函数会有一些默认的参数设置,例如取样点的密度以及精度判断等,数值积分中会出现“假收敛”现象即是一例)。但个人对此问题并无研究,故只是怀疑罢了。

推荐一本书,《数值积分方法》(Philip J.Davis, Philip Rabinowitz 著;冯振兴,伍富良译),里面有相关情况处理。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-1-12 01:43:36 | 显示全部楼层 来自 加拿大
windflag 发表于 2014-1-9 02:43
对于这种高度震荡的函数,建议用软件处理前,还是先做必要的数学处理。用maple和mathematica曾经做过类似情 ...

你好,非常感谢你的建议与参与!对于以上这个高震荡积分,maple确实没法精确计算。mathematica我试过了,直接用NIntegrate函数可以精确计算。数值积分这一块,mathematica要强一些,它使用了专门针对高震荡积分的原理。

这本数值积分的书我有英文版,里面其实主要是涉及了经典的积分算法,对于高震荡积分算法描述很少。后来,我读了一些专门针对高震荡积分的数学论文,采用 Levin 算法解决了这个积分,代码我在这里给出了:http://forum.simwe.com/thread-1090647-1-1.html
回复 不支持

使用道具 举报

发表于 2014-6-22 21:20:01 | 显示全部楼层 来自 陕西西安
本帖最后由 feiyuzhen 于 2014-6-22 21:24 编辑
winner245 发表于 2014-1-12 01:43
你好,非常感谢你的建议与参与!对于以上这个高震荡积分,maple确实没法精确计算。mathematica我试过了, ...

基于Maple的国外高手解答方案(见第一题)
补充一下,我用的是maple12,下述命令可以算
  1. evalf(Int(cos(log(x)/x)/x, x = 0.1e-2 .. 1, method = _d01akc))
复制代码

如果你的版本较高,可以添加maxintervals选项同时减小积分下限来进行更高精度的计算
回复 不支持

使用道具 举报

 楼主| 发表于 2014-6-22 22:55:26 | 显示全部楼层 来自 加拿大
feiyuzhen 发表于 2014-6-22 21:20
基于Maple的国外高手解答方案(见第一题)
补充一下,我用的是maple12,下述命令可以算

通过设置一个 “比较小” 的积分下限,确实是可以计算的,但是这只是近似计算,因为无论你给多么小的积分下限,你都不知道这个下限是否足够小。因为被积函数在 0 点高度震荡,这种近似误差可能会很大。总之,在真实结果没有得到之前,任何通过设置一个 “比较小” 的积分下限的方法,都是不可靠的
回复 不支持

使用道具 举报

发表于 2014-6-23 13:12:18 | 显示全部楼层 来自 陕西西安
如果只是尝试一次计算,那所得到的结果可靠性确实很差,
我想是通过一系列的积分下限值来进行计算,根据所得结果来判断是不是收敛,
本例中上面的命令得到的数字可以继续往下进行,直到满足需要的精度为止,
d01akc是nag提供给maple的求解震荡积分的算法,这个是maple里面最适合这类问题的命令,
我用的maple版本较老,无法添加maxintervals选项,你可以在高版本的maple里试试这种方法,
如果可以的话,欢迎贴出结果。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-6-23 22:19:44 | 显示全部楼层 来自 加拿大
本帖最后由 winner245 于 2014-6-23 22:22 编辑
feiyuzhen 发表于 2014-6-23 13:12
如果只是尝试一次计算,那所得到的结果可靠性确实很差,
我想是通过一系列的积分下限值来进行计算,根据所 ...

多谢你的建议!我用 Maple 17 试了一下,Maple 17 里是通过修改 maxintervals 参数 (默认是500)来实现更高精度的计算。我分别设置了几组很大的 maxintervals  参数,同时积分下限也相应的减小了。截图所示:



当我将下限设置为1e-6,maxintervals设置为300000000时,提示:Memory allocation failed. 这应该算是达到Maple的计算极限了吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2014-6-24 12:48:40 | 显示全部楼层 来自 陕西西安
恩,应该是maple的极限了,
如果精度不足,只能换方法了
回复 不支持

使用道具 举报

 楼主| 发表于 2014-6-24 21:30:14 | 显示全部楼层 来自 加拿大
feiyuzhen 发表于 2014-6-24 12:48
恩,应该是maple的极限了,
如果精度不足,只能换方法了

另外,请教一下版主:
为什么我将 maxintervals = 5000 改成 maxintervals = 5e3 就报错:Error, (in evalf/int) invalid optional argument maxintervals = 0.5e4
可我前面的 x = 1e-4 .. 1 的 1e-4 的写法就没问题


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2014-6-24 21:59:07 | 显示全部楼层 来自 陕西西安
我猜测是参数传递的时候指定了数据类型,
如果你有其他版本的maple,可以试一试看看什么情况,
手头是低版本的,没法验证
回复 不支持

使用道具 举报

 楼主| 发表于 2014-6-24 22:21:08 | 显示全部楼层 来自 加拿大
feiyuzhen 发表于 2014-6-24 21:59
我猜测是参数传递的时候指定了数据类型,
如果你有其他版本的maple,可以试一试看看什么情况,
手头是低版 ...

没有其他版本了。。。
这似乎是Maple做得不太好的地方,Maple本身是接受这类科学计数法的,而且单独的表达式里写 5e3 和 5000 是等效的,到了这里就不行。即便maple规定了数据类型,也不至于到了这里就不允许用户使用科学计数法了吧,这显得很不方便,尤其是我需要很大的迭代参数时,我需要留意我后面到底输了几个0
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2026-1-7 04:49 , Processed in 0.031084 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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