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

震荡函数积分

[复制链接]
发表于 2009-10-12 15:12:52 | 显示全部楼层 |阅读模式 来自 广西贵港
怕偏了Rocwoods的帖子的主旨,另开一帖
关于震荡函数积分
前提:
无法符号积分
精度足够高
时间短
程序通用
十分欢迎Forcal的原创者
晚上我再贴点东西
发表于 2009-10-12 16:52:48 | 显示全部楼层 来自 山东淄博
Simdroid开发平台
谢谢shunfly 关注Forcal。
欢迎讨论。
Forcal目前的算法是基于《C常用算法程序集》第二版,徐士良主编。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-12 16:58:15 | 显示全部楼层 来自 广西贵港
我也关注过,用了自适应高斯积分
震荡函数,由于函数可能正负震荡,所以,精度,判断收敛,比较麻烦
回复 不支持

使用道具 举报

发表于 2009-10-12 19:00:16 | 显示全部楼层 来自 山东淄博
徐士良算法中关于震荡函数积分的,似乎有两个:
1、自适应梯形求积法fpts:适于有强峰的定积分。
2、高震荡函数求积法part:用分部积分法计算高震荡函数的积分:∫abf(x)sinmxdx与∫abf(x)cosmxdx。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-12 19:08:41 | 显示全部楼层 来自 广东潮州
分步积分的思路,我看过国内一篇硕士论文,其中还举例了电磁场中的振荡函数,可惜只理论没实践。
回复 不支持

使用道具 举报

发表于 2009-10-13 01:47:00 | 显示全部楼层 来自 北京
这两天抽空研究了下,发现求解震荡型积分一维的可以用quadgk,二维的用quad2d,奇数高维的可以用quad2d+quadgk+arrayfun,偶数高维的可以用quad2d+arrayfun。可以参考http://forum.simwe.com/thread-790492-3-1.html里第六种方法。
回复 不支持

使用道具 举报

发表于 2009-10-13 13:25:15 | 显示全部楼层 来自 浙江杭州
觉得很难有算法能满足你提出的这4个要求,如果要兼顾“程序通用”,就无法完全满足“ 精度足够高、时间短”。因为根据被积函数特点而采用的特定算法肯定要比通用程序快。

如果首先保证通用性的话,觉得Matlab和QUADPACK都采用的自适应Gauss-Kronrod积分法来计算振荡函数积分,想来这种方法应该综合比较起来相对较好吧。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-13 20:03:45 | 显示全部楼层 来自 广西贵港
对于sin,cos型的函数,j0,j1贝瑟尔函数,采用每个零点区间高斯积分
这是我现在所谓的通用
刚装完系统,FORTRAN和MATLAB没搞好。
回复 不支持

使用道具 举报

发表于 2010-12-9 14:54:34 | 显示全部楼层 来自 浙江杭州
如果积分区间是有限的,又是多核CPU的话,可以考虑用:
1、蒙特卡洛方法
2、转化成微分方程,然后利用龙格库塔法计算

评分

1

查看全部评分

回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-10-5 05:25 , Processed in 0.056206 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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