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的问题。这是为什么呢?

原文地址:https://www.cnblogs.com/bovine/p/2222788.html