找回密码
 注册
Simdroid-非首页
查看: 116|回复: 2

求教:matlab中pinv求矩阵逆解问题

[复制链接]
发表于 2011-3-11 13:39:43 | 显示全部楼层 |阅读模式 来自 湖南长沙
有一个矩阵q,对其进行矩阵求逆,发现将q中数据小数点后5位数据省略掉后就不能求逆,保留则可以。不知道这是什么原因。求教!
q=[-3.0246493984942027 2.9805546467133417 1.1078858435331913 -2.8459027398871020  -7.6379348756778969 -8.4588365215171937 0
31.994864353618297  0.28176812127478457 0.10473450405061474 -0.26903874056897092 -0.72205572969852050 -0.79966004900015664 0
0.00000000000000000 -32.137514667289466 -22.723600993797010 -15.378510837834188 -8.8017560440845912 -0.68352359745656677 0
0 -0.09411584653659 -0.09411584653659 -0.09411584653659 -0.09411584653659 -0.09411584653659 -0.09411584653659
0 0.99556125247555716 0.99556125247555716 0.99556125247555716 0.99556125247555716 0.99556125247555716 0.99556125247555716
1 0 0 0 0 0 0]
pinv(q)
得到逆解
ans =
   -0.0029    0.0309    0.0000   -0.0000    0.0000    0.0010
    0.0119    0.0011   -0.0204    0.0070   -0.0745   -0.0000
    0.0199    0.0019   -0.0067   -0.0120    0.1266    0.0000
   -0.0146   -0.0014   -0.0063   -0.0044    0.0465    0.0000
   -0.0658   -0.0062   -0.0111    0.0136   -0.1441   -0.0000
   -0.0460   -0.0044    0.0040   -0.0099    0.1048    0.0000
    0.0946    0.0089    0.0404   -0.0885    0.9363    0.0000
省略小数点后五位后
q=[   -3.0246    2.98055    1.1079   -2.8459   -7.6379   -8.4588         0
   31.9949    0.2818    0.1047   -0.2690   -0.7221   -0.7997         0
         0  -32.1375  -22.7236  -15.3785   -8.8018   -0.6835         0
         0   -0.0941   -0.0941   -0.0941   -0.0941   -0.0941   -0.0941
         0    0.99556    0.99556    0.99556    0.99556    0.99556    0.99556
    1.0000         0         0         0         0         0         0]
pinv(q)
得到逆解
ans =
  1.0e+005 *
    0.0000   -0.0000    0.0000   -0.0000   -0.0000    0.0000
   -0.0025    0.0261   -0.0000    0.0000   -0.0000   -0.8410
    0.0088   -0.0936   -0.0000   -0.0000    0.0000    3.0215
   -0.0096    0.1019   -0.0000   -0.0000    0.0000   -3.2905
    0.0029   -0.0308   -0.0000    0.0000   -0.0000    0.9955
    0.0009   -0.0095    0.0000   -0.0000    0.0000    0.3076
   -0.0006    0.0060    0.0000   -0.0000    0.0000   -0.1930

后者显然是有问题的,求教!多谢!
发表于 2011-3-11 14:13:54 | 显示全部楼层 来自 河北廊坊
Simdroid开发平台
本帖最后由 qibbxxt 于 2011-3-11 14:15 编辑

1.显示精度和计算精度不是一回事
2.对于Matlab这样的计算软件来说,一般不会出现这种错误的
3.建议你用
  1. format longG
复制代码
,再计算下

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-3-11 17:11:21 | 显示全部楼层 来自 湖南长沙
本帖最后由 hustly 于 2011-3-11 17:12 编辑

我在的第二段计算之前加了一个format long,结果依然是
ans =
  1.0e+005 *
   0.00000000000000  -0.00000000000000   0.00000000000000  -0.00000000000000  -0.00000000000000   0.00001000000000
  -0.00246300530981   0.02605386454243  -0.00000019612261   0.00000006346918  -0.00000067104046  -0.84104039650855
   0.00884922859182  -0.09360114277218  -0.00000009611051  -0.00000009459261   0.00000099915025   3.02152457968046
  -0.00963704954316   0.10193493209247  -0.00000003125524  -0.00000007125443   0.00000075562405  -3.29054617885351
   0.00291491935499  -0.03083976365470  -0.00000012020377   0.00000014445693  -0.00000152886094   0.99553161923693
   0.00090026559726  -0.00952752784545   0.00000003735986  -0.00000009649013   0.00000102068206   0.30755524398779
  -0.00056435869110   0.00597963763744   0.00000040633227  -0.00000088659410   0.00000938009957  -0.19302486754312

您可以在matlab6.5上试试
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-28 00:01 , Processed in 0.039436 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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