24小时热门版块排行榜    

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

493508923

铁虫 (初入文坛)

[求助] 求逆矩阵问题

请问能用fortran求解大型矩阵64*64的逆矩阵吗?谢谢.我求解时显示矩阵奇异,但是在matlab里是可以求出的,是不是fortran不能求解大型矩阵的逆呢?

[ 发自手机版 http://muchong.com/3g ]
回复此楼
每天进步一点点
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

beefly

专家顾问 (职业作家)

地沟油冶炼专家


dbb627: 金币+1, 感谢应助 2012-09-26 21:08:59
如果小的特征值是数据偶然误差造成的,可以修改这些小特征值

1,对角化:X*R=R*x
2,特征矢量求倒数:
x_i > 1.d-6或x_i < -1.d-6:y_i = 1/x_i
0 < x_i < 1.d-6:y_i = 1 / (x_i + 1.d-6)
-1.d-6 < x_i < 0:y_i = 1 / (x_i - 1.d-6)
3,求逆矩阵:Y=R*y*R^T

或者用四精度编程
beefly《西太平洋大学现代英汉词典》[bi:fli]牛肉一般地
4楼2012-09-10 20:04:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

beefly

专家顾问 (职业作家)

地沟油冶炼专家

【答案】应助回帖

★ ★ ★ ★ ★
fegg7502: 金币+5, 应助指数+1, 专家考核, 谢谢专家指导,哈哈 2012-09-10 09:25:37
如果matlab能算动,fortran就更没问题了。如果调用lapack库,我算过2000*2000的矩阵,大约需要一两分钟。但是对于并行计算,我遇到过这样的问题:如果代码本身不支持并行,在计算机负载很大的情况下,1000*1000以上矩阵的并行求逆计算可能会变得非常慢,可能几个小时都没有动静。只能杀掉任务重来。
beefly《西太平洋大学现代英汉词典》[bi:fli]牛肉一般地
2楼2012-09-10 00:16:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

493508923

铁虫 (初入文坛)

引用回帖:
2楼: Originally posted by beefly at 2012-09-10 00:16:56
如果matlab能算动,fortran就更没问题了。如果调用lapack库,我算过2000*2000的矩阵,大约需要一两分钟。但是对于并行计算,我遇到过这样的问题:如果代码本身不支持并行,在计算机负载很大的情况下,1000*1000以上 ...

他们说是精度不够的原因,矩阵的元素都是-11次方数量级的,是不是因为矩阵行列式的值太小了所以求逆的时候显示奇异啊?现在在对角线上的元素加上了单位阵后还是奇异,我该怎么处理呢?
每天进步一点点
3楼2012-09-10 10:32:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

beefly

专家顾问 (职业作家)

地沟油冶炼专家

引用回帖:
4楼: Originally posted by beefly at 2012-09-10 20:04:57
如果小的特征值是数据偶然误差造成的,可以修改这些小特征值

1,对角化:X*R=R*x
2,特征矢量求倒数:
x_i > 1.d-6或x_i < -1.d-6:y_i = 1/x_i
0 < x_i < 1.d-6:y_i = 1 / (x_i + 1.d-6)
-1.d ...

特征矢量求倒数
应为
特征值求倒数
beefly《西太平洋大学现代英汉词典》[bi:fli]牛肉一般地
5楼2012-09-10 20:05:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见