24小时热门版块排行榜    

查看: 1315  |  回复: 0

whumai

新虫 (初入文坛)

[求助] 如何在matlab中计算对称矩阵的高精度本征函数?

matlab函数eig的矩阵算法是QZ算法,我用此算法计算一个密集矩阵(阶数仅为32X32)时得到的本征矢量中各个值的量级相差较多,从零点几到E-20多都有分布(如图所示)。
我知道由于浮点数会导致计算误差,但是大概由于eig函数进行了多次浮点数运算,最终导致无法把得到的本征矢量的真实值与误差值分开。
其实只有一次计算倒也无所谓,关键在于我做的程序还要将这些矢量不断迭代,继续求解,最终导致运算结果不准确。

所以,我想问的是:
1. matlab是否有程序包,可以用比较精确地算法,如jacobi-davidson算法,来得到较为精确地本征矢量,至少可以与浮点数运算的误差明显分开
2. 是否可以调整eig函数内部的计算精度解决这个问题?(单纯用eps只能用于单次计算,但是对于eig函数这种调用不好用)
3. 是否用c或者fortran会好一些?

如何在matlab中计算对称矩阵的高精度本征函数?
1.png
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 whumai 的主题更新
信息提示
请填处理意见