17.7 有理逼近

 
s = rat (x)
s = rat (x, tol)
[n, d] = rat (…)

在由 tol 指定的容差范围内,求 x 的有理逼近。

若未指定,默认容差为 1e-6 * norm (x(:), 1)

当使用一个输出参数调用时,返回一个包含连分数展开式(多项)的字符串。

当使用两个输出参数调用时,返回 x 的分数表示形式的分子和分母的数值矩阵,使得 x = n ./ d

例如:

s = rat (pi)
⇒   s = 3 + 1/(7 + 1/16)

[n, d] = rat (pi)
⇒   n =  355
⇒   d =  113

n / d - pi
⇒   2.6676e-07

复数输入的处理方式类似:

s = rat (0.5 + i * pi)
⇒   s = complex (1 + 1/(-2), 3 + 1/(7 + 1/16))

[n, d] = rat (0.5 + i * pi)
⇒   n =  113 + 710i
⇒   d =  226

n / d - (0.5 + i * pi)
⇒   0 + 2.6676e-07i

编程注意事项:

1. 当使用一个输出参数时,rat 生成一个字符串形式的连分数展开式。 要生成简单分数(单个分子和分母)的字符串,请使用 rats

2. rat 输出的字符串可以传递给 eval, 以在所用容差范围内还原原始输入。

另请参阅: ratsformat

 
s = rats (x)
s = rats (x, len)

x 转换为字符串形式的有理逼近表示。

浮点数的有理逼近是一个简单分数,具有分子 N 和分母 D,使得 x = N/D

可选的第二个参数指定表示 x 各元素的字符串的最大长度。默认情况下,len 为 13。

若最小可能有理逼近的长度超过 len,则返回一个用空格填充的星号(*)。

以下示例演示了从矩阵转换为字符串,再转换回来的过程:

r = rats (hilb (4));
x = str2num (r)

另请参阅: ratformat


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2