MATLAB的分数和小数
今天在使用MATLAB的过程中遇见一个诡异的问题。
首先我定义一个矩阵a。
>> a = [2 0 5 6;1 3 3 6;-1 1 2 1;1 0 1 3 ]
a =
2 0 5 6
1 3 3 6
-1 1 2 1
1 0 1 3
然后求逆。
>> b = inv(a)
b =
0.4444 0.3333 -1.0000 -1.2222
0.0370 0.4444 -0.3333 -0.8519
0.3333 0 0 -0.6667
-0.2593 -0.1111 0.3333 0.9630
注意到结果是小数,我想让结果是分数。上网得知命令rats可以实现这个功能。
>> c = rats(b)
c =
4/9 1/3 -1 -11/9
1/27 4/9 -1/3 -23/27
1/3 0 0 -2/3
-7/27 -1/9 1/3 26/27
函数很好地实现了这个功能。但是诡异的事情出现了。查看原矩阵a和求逆转换后矩阵c的size,我们发现
>> size(a)
ans =
4 4
>> size(c)
ans =
4 56
c明明看上去是一个4*4的矩阵,为什么会出现这样的情况呢?我首先没有考虑这个问题的成因。而是先使用了另外一种方法解决该问题。
在开始运算前输入命令
>> format rat
这样一来接下来的运算会默认采用分数的方式表示答案。通过这种方法得到的逆矩阵没有出现上文提到过的size的问题。这是为什么呢?