声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2087|回复: 3

[编程技巧] 请问如何改变矩阵条件数接近于0的病态情况

[复制链接]
发表于 2010-6-21 09:08 | 显示全部楼层 |阅读模式

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

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

x
请大家帮忙看看吧~~  求F*deltaX=delta1;F是个6*3的矩阵,因此求的是F的广义逆;在这里,也求了F矩阵的条件数,计算如下,计算结果其条件数为
C1 =3.0645e+005;这样看的话,条件数过大,矩阵应该是病态的,那最后计算的deltaX也应该不是正确的,对吧?
请问下,在F矩阵形成之后,有没有什么办法改正其病态呢? 请高手指点!!!

F=[35.314823 -0.300284755 -4932.730705
   35.705847 -0.271179544 -4988.853639
   36.133745 2.693776275 -5344.2614
   36.518221 2.071490476 -5334.253167
   36.900859 1.691980211 -5348.294325
   37.114437 1.589713508 -5367.106892];
F1=pinv(F); %求广义逆
n1=norm(F,inf) %A的最大奇异值,矩阵的范数 ()欧几里德范数 (,2)2范数,(,1)1范数,列范数,(,inf)行范数
n2=norm(F1,inf)
C1=n1*n2   %以上三行求条件数 C1 =3.0645e+005
delta1=[2.7064 12.3723 -18.0171 -15.2015 -21.7533 9.21];
deltaX=F1*(delta1.')
回复
分享到:

使用道具 举报

发表于 2010-6-21 11:07 | 显示全部楼层
个人水平专业有限, 且数学也过久没碰了!
专业问题没太多时间recover, 一般遇到F*deltaX=delta1的问题时, 都仅是如下处理而已!
比较好奇的是, 好像matlab并无warning!? 同待高人路过!
F=[35.314823 -0.300284755 -4932.730705
   35.705847 -0.271179544 -4988.853639
   36.133745 2.693776275 -5344.2614
   36.518221 2.071490476 -5334.253167
   36.900859 1.691980211 -5348.294325
   37.114437 1.589713508 -5367.106892];
delta1=[2.7064 12.3723 -18.0171 -15.2015 -21.7533 9.21]';
deltaX=F\delta1
 楼主| 发表于 2010-6-21 11:30 | 显示全部楼层

回复 沙发 ChaChing 的帖子

您好,非常感谢您的回复。你的方法和我的方法最后算出的结果是一样的,但是这个结果明显是错误的,所以我才去看矩阵的条件数大小,查出来矩阵条件数非常大,那么这个矩阵肯定是病态的,所以求解的结果不符合常理也是正常的,那么解决问题的着手点就在于,将这个病态的矩阵变成不病态的,关键就是怎么变?
还往高人指点!!!
发表于 2010-6-23 00:19 | 显示全部楼层
6个等式3个未知数, 不是应该属于least square问题?
怎也有病态矩阵问题? 忘光了, 高手释疑下
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-16 16:01 , Processed in 0.080097 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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