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

【原创】BVP4c和BVP5c改进版

[复制链接]
发表于 2009-6-14 17:30:31 | 显示全部楼层 |阅读模式 来自 天津
本帖最后由 junziyang 于 2009-6-14 20:18 编辑

根据MATLAB文档所述,使用稀疏矩阵可以减少内存使用,提高计算效率。但也要注意使用方法,否则适得其反。下面是在Mathwoks找到一篇关于Sparse Matrix使用技巧的文章http://blogs.mathworks.com/loren/2007/03/01/creating-sparse-finite-element-matrices-in-matlab/。文章很长,但核心思想只有一个准备好数据后用sparse函数生成稀疏矩阵,而不要先创建一个大稀疏矩阵A,然后在程序中用A(i,j)的方式给它赋值
        试了一下,效果非常明显。MATLAB的自带函数bvp4c和bvp5c中大量使用了A(i,j)的方式访问稀疏矩阵。按文章建议的方法对这两个函数了一下,在方程数较少的情况下,优化前后没有明显差别,但方程数量越多,效率提升越为明显。下图是方程数为156个时,优化前后用Profiler得到的计算时间开销对比,可以看出优化后Sparse矩阵处理部分的速度竟有100倍以上的提升

       虽说咱不差时间,能省干嘛不省呢!


计算平台:操作系统-Windows XP sp3、CPU-Pentium D 915、内存-1GB、MATLAB R2009a


说明:

  • 目前bvp4c2仅对‘无未知参数’&&‘不用 FJacobian‘情况进行了优化。
  • 使用方法:解压到MATLABROOT\toolbox\matlab\funfun\; 在你的程序中将bvp4c/bvp5c改为bvp4c2/bvp5c2即可。

下载链接:

本帖子中包含更多资源

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

×

评分

1

查看全部评分

 楼主| 发表于 2009-6-14 17:38:50 | 显示全部楼层 来自 天津
Simdroid开发平台
本帖最后由 junziyang 于 2009-6-14 17:44 编辑

版主同志们,论坛现在发贴好像有些问题啊。帖子的格式发表前后变化太大,图片链接也无法用了。我附件上传png图片好像也不行啊。另外,好像Discuz代码也不让用了。感觉很不爽啊。

看着不爽的同学可以到这里查看:http://junziyang.spaces.live.com/blog/cns!909609E321D6E37A!498.entry

或者:http://junziyang.spaces.live.com/blog/cns!909609E321D6E37A!354.entry
回复 不支持

使用道具 举报

发表于 2009-6-14 18:29:29 | 显示全部楼层 来自 浙江杭州
本帖最后由 messenger 于 2009-6-14 18:45 编辑

Discuz代码链接图片和把图片当附件上传都可以用

不知道你贴的那个图片链接地址有什么问题,系统不能识别,我重新拷贝了一下,就可以用了。

为了以防原链接失效,所以将图片当附件上传了,如果lz觉得有什么不妥,可自行修改。

不过,觉得论坛发贴跳出来的这个编辑窗口是挺难用的。

回复 不支持

使用道具 举报

发表于 2009-6-14 19:08:49 | 显示全部楼层 来自 新疆乌鲁木齐
本帖最后由 bainhome 于 2009-6-14 19:25 编辑

junziyang你查看一下是不是你的浏览器或者其他防火墙之类把安全性调的太高了造成的?
我也可以用dicuz代码。png文件也可以上传,不过不能在快捷回复里操作,需要点“编辑”按钮然后再上传。

刚才粗看了一下你的大作,还没有测试,不过创建有限元矩阵对于MATLAB语言绝对是巨大的挑战,你所参考的那篇MATLAB主页上blog文章那位女侠loren好像是mathworks公司语言算法改进的顶级技术人员,影响力也很大,mathworks一般技术人员口误输在她手里,应该说并不冤。

本帖子中包含更多资源

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

×
回复 不支持

使用道具 举报

发表于 2009-6-14 19:22:51 | 显示全部楼层 来自 新疆乌鲁木齐
另外在她的那篇创建有限元矩阵的文章里第一个标题是:
MATLAB is Slow? Only If You Use It Incorrectly
联想到前几天有位伙计在坛子里发了一个什么MATLAB不如origin的高论,还有其他论坛一些关于速度的议论,我想我也来个“高论”吧:
工具并不愚蠢,二半吊子使用工具的人才愚蠢!
回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-14 20:16:53 | 显示全部楼层 来自 天津
本帖最后由 junziyang 于 2009-6-14 20:18 编辑

我是发的新帖,并没有用快捷回复。是不是会员级别的限制造成的?要不就是真跟人品有关?:lol 以前记得签名档的Dicuz代码页可以用的。现在怎么弄都不行了。呵呵
4# bainhome
回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-14 20:22:47 | 显示全部楼层 来自 天津
本帖最后由 junziyang 于 2009-6-14 20:29 编辑

Loren 的Blog文章实际上是转载了Florida大学一个叫Tim Davis的教授的。他貌似是稀疏矩阵方面的专家,是MATLAB Primer一书的作者。
希望下一版的MATLAB中Mathwoks的专家能够按这篇文章彻底优化一下稀疏矩阵处理方面的函数。潜力太大了。我现在做的东西涉及较大规模BVP系统的求解,优化前的计算速度是难以承受的。幸好发现了那篇文章,自行给bvp4c动了个小手术,没想到会有这么大的提升。与大家分享,如果有人因此节省了不少时间,别忘了分点节省下来的时间请我喝茶。:lol

5# bainhome
回复 不支持

使用道具 举报

发表于 2009-6-14 22:49:31 | 显示全部楼层 来自 北京
前段时间参加了两次Mathworks公司举办的研讨会,见识了下Mathworks首席应用工程师演示Matlab,和他们交流了下,更加让我坚信了"MATLAB is Slow? Only If You Use It Incorrectly!",可以说但凡常见的抱怨MATLAB慢的问题,绝大多数都是可以避免的。如果MATLAB避免不了,别的语言也好不到哪儿去(不是绝对,但起码相当一部分是这样。)
这些年使用MATLAB越来越强的感觉就是如果你热爱MATLAB,发挥你的聪明才智,MATLAB就会变成你手中的利器的。呵呵
PS:上次北京MATLAB研讨会见到了Mathworks美国市场主管Lynn,跟她聊了会,感觉非常随和,很幽默,一个劲儿的问我们对公司的产品有什么意见,用得咋样。呵呵,谈到loren,说她是非常smart的一个人,个儿不高,但在Mathworks里人气很高,人缘很好。至于Moler,Mathworks里的人都尊称其为老大,整体感觉Mathworks里的氛围相当不错,人们真的是把工作当成享受了。
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 10:27 , Processed in 0.042878 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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