声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4229|回复: 5

[编程技巧] 条件数很大的矩阵如何精确求逆?

[复制链接]
发表于 2008-3-21 16:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
条件数很大的矩阵如何精确求逆?

[ 本帖最后由 eight 于 2008-3-21 23:20 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-3-21 18:19 | 显示全部楼层

回复 楼主 的帖子

条件数和大的矩阵
这句话不理解
发表于 2008-3-21 23:21 | 显示全部楼层
发帖时、发帖后,请反复检查你的帖子内容,不要让人摸不着头脑。

你的问题最好看看相关书籍,或者版面搜索看有否收获
发表于 2008-3-22 11:11 | 显示全部楼层
用高斯消去法等,或者一些矩阵分解的方法解病态矩阵
发表于 2008-3-24 08:49 | 显示全部楼层
条件数比较大时,高斯消去可能不大行。
试试奇异值分解求逆吧
  1. [U,S,V]=svd(A);
  2. Ainv=V*inv(S)*U';
复制代码
发表于 2008-3-24 09:02 | 显示全部楼层
晕死,还是老老实实用Matlab的inv()吧。毕竟是matlab优化过的,即便是对于接近病态的矩阵也有比较好的求解结果啊。看下面的实验
1.用inv()
  1. A=hilb(30);
  2. cA=cond(A);
  3. Ai1=inv(A);
  4. Er1=norm(Ai1*A-eye(30))
复制代码
求解的误差
Er1 =
   31.9350
2.svd分解求解
  1. A=hilb(30);
  2. [U,S,V]=svd(A);
  3. Ai2=V*inv(S)*U';
  4. Er2=norm(Ai2*A-eye(30))
复制代码
结果
Er2 =
  112.0906

这说明inv直接求逆的精度高于用svd求解的。不过,我只做了Hilbert矩阵一种情况,也许这是个特例或者也有可能求解过程有错误?——欢迎指教。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-11 03:06 , Processed in 0.096240 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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