17.7有理逼近

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

找到x的有理逼近,在定义的误差范围tol内.

如果未指定,默认误差范围为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 来得到满足误差的原始输入。

详见: rats, format.

广告
 
: s = rats (x)
: s = rats (x, len)

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

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

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

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

从矩阵到字符串转换再反向转换的示例如下:

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

详见: rat, format.

广告

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

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