24小时热门版块排行榜    

查看: 2266  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zhang86

木虫 (小有名气)

[求助] Fortran中高效计算矩阵的秩

最近使用Fortran处理大型矩阵(大概3000*3000),希望能判断矩阵是否奇异。
原本想用行列式判断,即IMSL中的det函数,但无奈的发现计算结果不靠谱,因为矩阵太大,虽然已经有特征值很少(1.0e-17),但计算出来的行列式还是很大的,无法由此判断奇异与否。
后来改用svd函数计算矩阵的秩,这样还是很靠谱的。不过新的问题又来了,因为矩阵太大,计算的速度较慢。
请版上的各位大牛们帮忙出出主意,看看有什么办法可以更为高效的求解矩阵的秩。
~~十分感谢~~
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

zhang86

木虫 (小有名气)

引用回帖:
2楼: Originally posted by chembetsey at 2012-09-16 09:48:19
IMSL中有rank函数,应该比你自己写的函数算的快,你可以试试。要想算得更快,可以用并行的rank。

谢谢。
但如何给定IMSL中的rank函数的误差限,也就是当特征值小于多少时可以认为是0。
还有,请问如何并行rank以提高效率?
我需要在依次迭代的过程中评价矩阵是否奇异,这样是不是没法用并行计算?
3楼2012-09-16 10:01:39
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

chembetsey

木虫 (小有名气)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
zhang86: 金币+2, 有帮助 2012-09-16 10:02:37
xzhdty: 谢谢 2012-09-16 21:14:26
IMSL中有rank函数,应该比你自己写的函数算的快,你可以试试。要想算得更快,可以用并行的rank。
2楼2012-09-16 09:48:19
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

你自己查IMSL的手册吧,具体的我也不是很清楚。
并行只是rank函数并行,和你自己的程序没关系的。
4楼2012-09-16 10:44:41
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见