声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 9269|回复: 16

[编程技巧] 请问如何改善病态矩阵条件数(Xb=A)?

[复制链接]
发表于 2009-12-15 17:51 | 显示全部楼层 |阅读模式

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

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

x
现遇到一线性方程组X*b=A!(其中b为8X8型的方阵,X和A 为1X8);
显然X= A *inv(b) or X = A/B; 运行后,matlab总显示
Warning: Matrix is close to singular or badly scaled.
         Results may be
         inaccurate.
         RCOND =
         2.041979e-017

一般的线性方程组都是针对AX = b 即左除X=A\B.如何改良此运算,使得条件数降低,运算结果准确?谢谢!!!

[ 本帖最后由 ChaChing 于 2009-12-17 11:02 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-12-15 17:54 | 显示全部楼层
彻底改进应该是在形成这个方程前把不独立方程去掉
 楼主| 发表于 2009-12-15 20:50 | 显示全部楼层

回复 沙发 VibrationMaster 的帖子

什么是不独立方程?那啥,事情是这样的。X是一个传递函数X=A *inv(b) ,A和b的每一个元素均为空间频率和时间频率的函数。当时间频率固定,取一个空间频率,解一次X=A *inv(b) 。貌似没有所说的不独立方程。
发表于 2009-12-15 23:26 | 显示全部楼层
楼主的版本为何?
 楼主| 发表于 2009-12-16 09:00 | 显示全部楼层

回复 地板 ChaChing 的帖子

更新了的matlab2008版。
发表于 2009-12-16 09:04 | 显示全部楼层
AX = b ==》X=inv(A)*b
看得有点混乱
 楼主| 发表于 2009-12-16 09:27 | 显示全部楼层

回复 6楼 VibrationMaster 的帖子

问的是Xb=A,X=A *inv(b),如何改善改运算的条件数?:@L
发表于 2009-12-16 10:56 | 显示全部楼层

回复 7楼 yingzhangning 的帖子

检查b的行列式是否为0或非常接近于0。若是想办法削去不独立的行和相应的未知数
 楼主| 发表于 2009-12-16 11:21 | 显示全部楼层

回复 8楼 VibrationMaster 的帖子

det(b) = 6.2883e-035.,接近0了,所以不能直接求拟啊,所以可以往Xb=A两边同右乘以D,即令b’=bD, A‘=AD,则转换成x =A' *inv(b').若bD的行列式不接近0,则改善算法可以。就是不知道这个D该怎么取。
以前成功处理过bx=A病态条件数的运算,两边同左乘以D,D为b(为方阵)的每一行绝对值最大的元素组成的对角阵。则病态明显改善。
现在这种情况,对同样的方阵b,和行向量A(为前述情况的转置)。取同样的D却不能改善其条件数。
Master说得有道理。所以只要新构造的系数矩阵b‘=bD其行列式不等于或不接近0,则求逆运算合理,条件数应该不会很高,可这种情况下这个D该如何选取呢

敢问怎么消去不独立的行和相应的未知数?可以举个例子吗。多谢

[ 本帖最后由 ChaChing 于 2009-12-17 01:37 编辑 ]
 楼主| 发表于 2009-12-16 17:40 | 显示全部楼层
ok,已经搞定:@) 。还是谢谢各位!
发表于 2009-12-17 01:38 | 显示全部楼层

回复 10楼 yingzhangning 的帖子

建议与大家分享你的成果, 做个结束!
发表于 2010-6-17 11:23 | 显示全部楼层

回复 10楼 yingzhangning 的帖子

同LS建议一样,望楼主造福众生啊~~
发表于 2010-6-17 18:10 | 显示全部楼层

回复 10楼 yingzhangning 的帖子

不妨说出你解决的方法。人人为我,我为人人!
发表于 2010-9-1 18:02 | 显示全部楼层
你是怎样解决改善病态矩阵条件数的?
急需!!!!
 楼主| 发表于 2010-10-28 19:52 | 显示全部楼层
回复 chenmanstein 的帖子

不好意思。我的方法是,
对Ax=B,

key = max(abs(A),[],2);  Di = sparse(1:2*N,1:2*N,1./key);
A = Di*A; B = Di*B;
X = A\B

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-16 04:22 , Processed in 0.072256 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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