2026a

# rats


有理输出

函数库: TyMath

# 语法

S = rats(X)
S = rats(X,strlen)

# 说明

S = rats(X) 返回一个包含 X 的元素的有理近似值的字符向量。星号指示无法在分配的空间中输出,但与 X 中的其他元素相比并非可忽略不计的元素。示例


S = rats(X,strlen) 指定用于有理近似值的字符向量的长度。对于实数输入,length(S) 等于 strlen+1,而对于复数输入,它等于 2*strlen+3。有理近似值使用与指定的长度成反比的容差,如算法一节中所述。示例

# 示例

矩阵有理表示形式

创建一个 4×4 矩阵。

using TyMath
X = hilb(4)
X = 4×4 Matrix{Float64}:
 1.0       0.5       0.333333  0.25
 0.5       0.333333  0.25      0.2
 0.333333  0.25      0.2       0.166667
 0.25      0.2       0.166667  0.142857

使用 rats 查看矩阵的有理表示形式。

R = rats(X)
R = 4-element Vector{String}:
 "       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     "
调整输出向量长度

使用默认字符向量长度和逼近容差计算 pi 的有理表示形式。

using TyMath
rats(pi)
ans = "    355/113   "

调整输出的长度,这也会调整逼近容差。

rats(pi,20)
ans = "    104348/33215     "

结果有理近似值具有更高的精度。随着输出长度的增加,容差会减少。

再次调整输出长度以实现更高的精度。

rats(pi,25)
ans = "      1146408/364913      "

结果近似值与保留 10 位小数的 pi 一致。

# 输入参数

X - 输入数组
数组

输入数组

数据类型: Number

复数支持:

strlen - 字符向量的长度
13(默认) | 正整数

字符向量的长度,指定为正整数。您指定的字符向量的长度控制有理近似值的精度。较大的字符向量支持更精确的有理近似值。

默认长度为 13,它对实数输入生成长度为 strlen+1 的字符向量,对复数输入生成长度为 2*strlen+3 的字符向量。

# 算法

rats 使用 N,D = rat(X,tol) 获取有理近似值,其中 tol 是 min(10^(-(strlen-1)/2)*norm(X[isfinite.(X)],1),0.1)。因此,容差与输出长度 strlen 成反比。

# 另请参阅

Rational |rationalize