weideyong8 发表于 2011-4-28 20:34

matlab 怎样更改小数点后面的位数?

默认的是0.0000小数点后面是4位,如何改成更长的位数?

meiyongyuandeze 发表于 2011-4-28 20:45

pi
ans =
    3.1416
>> format long
>> pi
ans =
   3.141592653589793
>>

weideyong8 发表于 2011-4-28 21:10

回复 2 # meiyongyuandeze 的帖子

有的数会这样显示啊
M1 =
1.0e+005 *
Columns 1 through 7
   0.00000524454475   0.00000537470803   0.00000000567869   0.00000000037219   0.00000000000979-0.00000035238926-0.00000403848505
   0.00000537470803   0.00000552743069   0.00000000583010   0.00000000000979-0.00000000037219   0.00000034323765-0.00000413831257
   0.00000000567869   0.00000000583010   0.00000000942503-0.00000035238926   0.00000034323765                  0-0.00000000438066

我不想这样显示,能否换成另一种形式 比如说1.235e+10这种形式的

meiyongyuandeze 发表于 2011-4-28 21:27

回复 3 # weideyong8 的帖子

a=0.00054816548974
a =
5.4817e-004
>> format long e
>> a
a =
    5.481654897400001e-004是不是想例子这样??

weideyong8 发表于 2011-4-28 21:47

回复 4 # meiyongyuandeze 的帖子

是的 谢谢

weideyong8 发表于 2011-4-28 21:48

回复 4 # meiyongyuandeze 的帖子

你好 请问 输入inv(M1)      %输入这个命令 提示警告,怎么解决啊
能出结果 但是有警告!怎么解决啊

Warning: Matrix is close to singular or badly scaled.
         Results may be inaccurate. RCOND = 2.308810e-022.
为什么会这样啊?

meiyongyuandeze 发表于 2011-4-28 22:07

回复 6 # weideyong8 的帖子

说明你的矩阵M1是病态的,求逆的话会出错!一般来说这是求得逆应该是广义逆。
可以用pinv(A)可以按照默认的精度求Moore-Penrose广义逆矩阵,当然也可以按照指定的精度求广义逆,可以参将help文件。
在matlab中可能就这个好办法了。还可尝试奇异值分解方法。

weideyong8 发表于 2011-4-30 10:08

回复 7 # meiyongyuandeze 的帖子

应用pinv命令 能保证这个逆例如A
pinv(A)*A=单位矩阵吗?
好像不等于单位矩阵啊

meiyongyuandeze 发表于 2011-4-30 13:53

本帖最后由 meiyongyuandeze 于 2011-4-30 13:58 编辑

回复 8 # weideyong8 的帖子

病态矩阵的逆是根本不存在的,广义逆矩阵的定义是,存在一个矩阵N,满足ANA=A,称N为A的广义逆矩阵。

weideyong8 发表于 2011-4-30 15:15

回复 9 # meiyongyuandeze 的帖子

你说的对 我的矩阵的数量级差不多能相差10^10吧,这样怎么解决啊?解决这个病态矩阵?

meiyongyuandeze 发表于 2011-5-1 23:40

解决矩阵的病态问题可能要看一些关于矩阵理论和数值计算累的专业书籍吧,这个应该是专业问题!

weideyong8 发表于 2011-5-2 10:14

回复 11 # meiyongyuandeze 的帖子

size(Ki5heng)

ans =

    31    31

>> rank(Ki5heng)

ans =

    28

>> det(Ki5heng)

ans =

    9.989084322069472e+290
这是怎么回事啊?明明矩阵是奇异的怎么行列式不为零啊!!!

海外 发表于 2012-11-23 21:13

利用format long可以更改成15为小数的,如果只要显示的话可以尝试一下vpa函数
页: [1]
查看完整版本: matlab 怎样更改小数点后面的位数?