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 成反比。