2014-04-30 54 views

回答

1

该函数内不分段,并且它不能以任何软件来作图。这在理论上是不可能的。你能做的最好的是绘制一条从(0,1)到(1,1)的线段来代表有理数,另一个从(0,0)到(0,1)来表示无理数。

0

这是一个古老的问题,但它是一个很好的地方,可以澄清计算机程序可能通过“理性”和“非理性”的含义。

正如你可以尝试第一次尝试定义您所需的功能是这样的:

f1 := x -> `if`(x::rational, 1, 0): 

一些测试案例似乎给我们我们想要的东西:

> f1(3), f1(3/2), f1(Pi), f1(sqrt(2)); 
       1, 1, 0, 0 

然而,我们再运行into:

> f1(1.5); 
        0 

是什么给出的?由于f(3/2)= 1,我们可以预期f(1.5)是相同的。解释是检查x :: rational检查输入x是Maple类型的有理数,这是一个整数或分数。 Maple分数是一组有序的整数(分子和分母),其结构不同于浮点数。

对“理性”数学含义的更广泛解释将包括浮点数。所以我们可以扩大这个定义并写出:

f2 := x -> `if`(x::{rational,float}, 1, 0}: 

然后我们有所需的f2(1.5)= 1。

但是这些都是无用的绘图。当Maple绘制一些东西时,它会根据指定的时间间隔生成一组采样点,所有这些都是浮点数。在我们之前定义的函数中,f1将返回所有这些点的零值,而f2将返回1.

您不会对其他软件做任何改进。如果您要从某个实际的时间间隔取得真正统一的样本点,您的结果点将是非理性的(实际上是超验的)。几乎所有这些数字都不能在计算机上表示,因为它们不能以任何紧凑形式表示,因此任何试图进行此类采样的软件都会简单地返回一组结果集合并终止十进制扩展。

卡尔建议你可以产生类似的东西你想的情节与

> plot([0,1]);