zhangjungis 发表于 2010-6-21 09:08

请问如何改变矩阵条件数接近于0的病态情况

请大家帮忙看看吧~~求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=;
deltaX=F1*(delta1.')

ChaChing 发表于 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=';
deltaX=F\delta1

zhangjungis 发表于 2010-6-21 11:30

回复 沙发 ChaChing 的帖子

您好,非常感谢您的回复。你的方法和我的方法最后算出的结果是一样的,但是这个结果明显是错误的,所以我才去看矩阵的条件数大小,查出来矩阵条件数非常大,那么这个矩阵肯定是病态的,所以求解的结果不符合常理也是正常的,那么解决问题的着手点就在于,将这个病态的矩阵变成不病态的,关键就是怎么变?
还往高人指点!!!

ChaChing 发表于 2010-6-23 00:19

6个等式3个未知数, 不是应该属于least square问题?
怎也有病态矩阵问题? 忘光了, 高手释疑下
页: [1]
查看完整版本: 请问如何改变矩阵条件数接近于0的病态情况