hustly 发表于 2011-3-11 13:39:43

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

有一个矩阵q,对其进行矩阵求逆,发现将q中数据小数点后5位数据省略掉后就不能求逆,保留则可以。不知道这是什么原因。求教!
q=[-3.0246493984942027 2.9805546467133417 1.1078858435331913 -2.8459027398871020-7.6379348756778969 -8.4588365215171937 0
31.9948643536182970.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

后者显然是有问题的,求教!多谢!

qibbxxt 发表于 2011-3-11 14:13:54

本帖最后由 qibbxxt 于 2011-3-11 14:15 编辑

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

hustly 发表于 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上试试
页: [1]
查看完整版本: 求教:matlab中pinv求矩阵逆解问题