无理数检查功能

时间:2012-09-20 12:15:05

标签: python math

我正在尝试绘制以下函数:

f(x) = 0 if x is rational else 1 # so 1 if x is irrational 

我的计划是使用python和matplotlib。你如何在Python中生成随机无理数?

4 个答案:

答案 0 :(得分:12)

这称为Dirichlet function,,它是无处不连续的功能示例。这是一个简单的数学事实,在任何一对数字之间,存在无限多的理性和无限的无理数。

在实践中绘制此函数等效于绘制 f(x) = 0和 f(x) = 1,因为您正在使用离散像素进行绘图。

有两个陷阱:

无论哪种方式,这种“问题”并不意味着接近严格的编程问题。

答案 1 :(得分:4)

答案是你不能。

你可以做的是弄清楚一些epsilon,之后这个数字被认为是非理性的。

看起来一样。

考虑一下:2的平方根是一个无理数。

wolframlpah给你一个近似值: 1.4142135623730950488016887242096980785696718753769480 ...

蟒蛇只看到了 1.4142135623730950488016887242096980785696718753769480 意思是: 1+ 4142135623730950488016887242096980785696718753769480 / 10000000000000000000000000000000000000000000000000000

答案 2 :(得分:2)

随机数几乎总是不合理的(即概率为1)

def f(x): 
    return 1

几乎总能随心所欲地工作!

答案 3 :(得分:0)

您无法在计算机程序中表示无理数。它不适合内存,你不能打印整个无理数,但你仍然可以用它们做一些计算,并做“给我前100位数”这样的操作。您可以将它们表示为一种懒惰的枚举器。问题是,这并不能真正满足您的需求,因为检查这种数字是否合理等同于停止问题,因此是不可判定的。

但是在一个区间中选择一个无理数,例如在0和1之间并不总是不可能,它只取决于你想做什么。我最近这样做了,但这些数字的应用只是必须进行比较,算法的一些决定取决于这些比较。在这里,将它们表示为惰性枚举器可以正常工作:如果比较,则从左侧开始并比较每个数字,直到一个数字具有更大的数字。因此,我们只是动态生成随机数字,并将生成的数字存储在一个数组中,直到它们与我们要比较的数字的相应数字不同。

只是为了区分有限数和无限数,我们只需要一个有限的部分:在第一种情况下,数字的长度是固定的和有界的,在第二种情况下,我们只需要存储有限数量的数字,但是这个数字可能超出任何界限,所以如果我们比较足够的数字,每个有限数字都与这样的无限数字不同。