Main Content

rat

有理分式近似值

说明

R = rat(X) 返回 X 在默认容差 1e-6*norm(X(:),1) 内的有理分式近似值。近似值是一个包含截断的连分式展开项的字符向量。

示例

R = rat(X,tol) 在容差 tol 内求 X 的近似值。

示例

[N,D] = rat(___) 使用以上任何语法返回两个数组 ND,以使 N./DX 的近似值。

示例

示例

全部折叠

使用数量 pi 的有理表示形式计算值 π 的近似解。

数学数量 π 不是有理数,但为它求近似值的数量 pi 一个有理数,因为所有浮点数都是有理数。

计算 pi 的有理表示形式。

format rational
pi
ans = 
     355/113   

结果表达式是一个字符向量。您还可以使用 rats(pi) 获得相同的答案。

使用 rat 可查看 pi 的连分式展开。

R = rat(pi)
R = 
'3 + 1/(7 + 1/(16))'

结果是一个按连分式展开的近似值。如果您考虑展开的前两项,则会获得近似值 3+17=227,它仅与保留 2 位小数的 pi 一致。

但如果您考虑 rat 输出的所有三项,则可以恢复值 355/113,它与保留 6 位小数的 pi 一致。

3+17+116=355113

指定容差以增加近似值的精度。

R = rat(pi,1e-7)
R = 
'3 + 1/(7 + 1/(16 + 1/(-294)))'

得到的近似值 104348/33215 与保留 9 位小数的 pi 一致。

创建一个 4×4 矩阵。

format short;
X = hilb(4)
X = 4×4

    1.0000    0.5000    0.3333    0.2500
    0.5000    0.3333    0.2500    0.2000
    0.3333    0.2500    0.2000    0.1667
    0.2500    0.2000    0.1667    0.1429

使用 ratX 的元素表示为小整数的比率。

[N,D] = rat(X)
N = 4×4

     1     1     1     1
     1     1     1     1
     1     1     1     1
     1     1     1     1

D = 4×4

     1     2     3     4
     2     3     4     5
     3     4     5     6
     4     5     6     7

两个矩阵 NDN./DX 的近似值。

使用 format rationalX 的元素视为比率。

format rational
X
X = 
       1              1/2            1/3            1/4     
       1/2            1/3            1/4            1/5     
       1/3            1/4            1/5            1/6     
       1/4            1/5            1/6            1/7     

在这种形式中,很明显 N 包含每个分数的分子,D 包含分母。

输入参数

全部折叠

输入数组,指定为类 singledouble 的数值数组。

数据类型: single | double
复数支持:

容差,指定为标量。NDX 的近似值,以使 abs(N./D - X) <= tol。默认容差是 1e-6*norm(X(:),1)

输出参量

全部折叠

连分式,以包含 m 个行的字符数组形式返回,其中 mX 中的元素数。通过连分式获得的有理近似值的精度随项数增加。

分子,以数值数组形式返回。N./DX 的近似值。

分母,以数值数组形式返回。N./DX 的近似值。

算法

即使所有的浮点数都是有理数,有时也需要通过简单有理数求它们的近似值,这些有理数是其分子和分母都为小整数的分数。有理近似值是通过截取连分式展开式生成的。

rat 函数按以下形式的连分式为 X 的每个元素求近似值

ND=D1+1D2+1+1Dk.

重复去掉整数部分,然后获取分数部分的倒数来获取 D。近似值的精度随项数呈指数增加,在 X = sqrt(2) 时精度最低。对于 X = sqrt(2)k 项的误差大概是 2.68*(.173)^k,这样每增加一项便会使增加一定的精度,增量不到一位小数。要获得全浮点精度,项数需达到 21 项。

扩展功能

版本历史记录

在 R2006a 之前推出

另请参阅

|