24小时热门版块排行榜    

查看: 893  |  回复: 5

493508923

铁虫 (初入文坛)

[求助] 求逆矩阵问题

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

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

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

专家顾问 (职业作家)

地沟油冶炼专家


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的回帖

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的回帖

saul0193

新虫 (初入文坛)


dbb627: 金币+1, 欢迎交流 2012-09-26 21:09:32
求解器是你自己写的还是商用的求解包?
自己写的话,你用什么方法求解?高斯消元对数值非常小的矩阵会产生错误的结果,可以采用选主元法等等,具体参考数值分析,数值计算的教材。
matlab能计算是因为他的求解器都是经过优化的,能适应各种“奇葩”的矩阵,你自己算的话可能考虑不了那么多因素,就非常可能出现问题。
64*64这么小的矩阵就不要称大型了,十万百万阶以上的才有资格叫大型。。。
6楼2012-09-26 15:10:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 493508923 的主题更新
信息提示
请填处理意见