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

关于计算二维积分:当被积分对象为复杂的隐函数时的处理问题

[复制链接]
发表于 2018-6-20 03:03:42 | 显示全部楼层 |阅读模式 来自 甘肃兰州
现在遇到一个被积分函数为复杂隐函数关系的二维积分问题,因为被积分对象是一个由积分参数依赖的6维矩阵的本征值,本征矢组合成的复杂式子,因而没有显式,假定包含了之前所有计算的可以调用的函数为F(x,y), 只能输入(x,y)2个参数得到一个数f, 现在我要对这个F在(x,y )的二维区域进行积分,可喜的是积分区域是一个长方形,并且积分对象没有振荡行为,而且连续光滑(虽然这个之前的关系很复杂,没法看出,但是因为这是研究的是一个物理问题,这个是物理量,它的行为是可以预见的),我本来想利用matlab原有的积分,但是很快发现这个貌似是无法向量化的。所以我接着用最简单的粗粒化1000*1000网格,然后输出格点值,再求和乘以单元面积,当其他参数(非积分参数x,y)合适的时候,结果还不错(精度在10-3左右,因为是有物理意义的量,正确值一定是一个整数(数学上说其实算的是陈数),所以我可以判断精度),但是当参数不是那么合适的时候,局部的被积隐函数将很陡(相邻节点的值相差可以是几百!!),这时候那部分的精度就很低了,然后算的结果偏差就很大,我计算2000*2000的话需要8个小时才能跑完,如果无脑的提升格点那么将计算成本很大,我看了一些论坛计算二维积分的帖子,目前想尝试版主rocwoods http://forum.simwe.com/forum.php?mod=viewthread&tid=790492这个帖子提到的做法,但是不知道还有么有其他好的思路,在兼顾时间和精度的同时,得到比较好的值,误差控制在10-3基本就够了。我看了本领域内其他人提到的数值计算这个量的方式,但是你们懂的科研文章这类东西都不会明说,人家只是说选用2500*2500 Gaussian Mesh ,我不知道这个是不是类似前面的帖子的做法。 期待各位讨论提供更好的解决思路,在日常的工作,我经常遇到这类跟矩阵本征值本征矢隐函数的积分,希望能得到一个比较普遍的思路。谢谢~
 楼主| 发表于 2018-6-20 03:09:13 | 显示全部楼层 来自 甘肃兰州
Simdroid开发平台
可以看到这个第一幅图变化较缓,所以计算结果比较好,但是第二幅图就很陡了,那几个峰的图像都出现了毛糙的表面了,数值都跳变的厉害计算就不准了

本帖子中包含更多资源

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

×
回复 不支持

使用道具 举报

发表于 2019-1-8 22:24:19 | 显示全部楼层 来自 北京
luleisure 发表于 2018-6-20 03:09
可以看到这个第一幅图变化较缓,所以计算结果比较好,但是第二幅图就很陡了,那几个峰的图像都出现了毛糙的 ...

算不准,是因为在这种情况下,你用了不合理的原始数据。

所以,建议是增加采样点数,细化x&y的步长,相当于增加空间分辨率。
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 18:33 , Processed in 0.031793 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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