求教: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:15 编辑
1.显示精度和计算精度不是一回事
2.对于Matlab这样的计算软件来说,一般不会出现这种错误的
3.建议你用format longG,再计算下 本帖最后由 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]