📜  如何合理化无理数?(1)

📅  最后修改于: 2023-12-03 15:08:32.300000             🧑  作者: Mango

如何合理化无理数?

无理数是不能用两个整数比值表示为分数形式的实数。例如,$\sqrt{2}$,$\pi$,$e$都是无理数。

虽然无理数不能表示为分数形式,但是我们可以通过合理化的方法将无理数转化为分数形式的近似值。

基本思想

我们可以采用连分数展开的方式,将无理数展开为一个无限循环的分数。然后,我们可以通过舍去一定位数的尾部来得到无理数的近似分数。

连分数展开用递归方式表示。设一个无理数为$x$,其整数部分为$a_0$,则我们可以得到以下递归公式:

$$ a_n = \lfloor x_n \rfloor \ x_{n+1} = \frac{1}{x_n - a_n} \ x_0 = x $$

展开为连分数:

$$ x = a_0 + \cfrac{1}{a_1 + \cfrac{1}{a_2 + \cfrac{1}{a_3 + \dots}}} $$

其中,$a_0$为整数部分,$a_1, a_2, a_3, \dots$为连分数的循环小数部分。

实现方法

我们可以使用递归函数实现连分数展开的方法。以下是一个 Python 实现:

def rationalize(x, limit=10):
    a = int(x)
    if limit == 0:
        return a
    r = 1.0 / (x - a)
    return a + 1.0 / rationalize(r, limit-1)

其中,x 是要转化为分数形式的无理数,limit 是连分数展开的层数,即分数的精度。

示例

我们可以尝试将 $\sqrt{2}$ 转换为分数。以下是一个 Python 示例:

x = 2 ** 0.5
a = rationalize(x, limit=10)
print(a)

输出:

3.4142135624

实际上,$a = \frac{17}{5}$ 就是 $\sqrt{2}$ 的一个近似分数。

总结

通过合理化无理数,我们可以得到无理数的近似分数,并且控制分数的精度。这种方法在科学计算和程序设计中都有广泛的应用。