在枫树中绘制分段函数

时间:2014-04-30 11:47:56

标签: maple

我如何用枫树绘制这个函数?

如果x是理性的,则f(x)= 1,否则为0。

此外,我希望它在0< = x< = 1

的区间内

2 个答案:

答案 0 :(得分:1)

该功能不是分段的,任何软件都无法绘制。这在理论上是不可能的。您可以做的最好的事情是从(0,1)到(1,1)绘制一个线段来表示有理数,另一个从(0,0)到(0,1)来表示不合理。

答案 1 :(得分:0)

这是一个古老的问题,但现在是澄清计算机程序“理性”和“非理性”意味着什么的好地方。

作为第一次尝试,您可以尝试以这种方式定义所需的功能:

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

一些测试案例似乎正在向我们提供我们想要的东西:

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

然而,我们遇到了这个问题:

> f1(1.5);
                   0

是什么给出的?由于f(3/2)= 1,我们可能期望f(1.5)是相同的。解释是check x :: rational检查输入x是Maple类型的有理数,它是一个整数还是一个分数。 Maple分数是一对有序的整数(分子和分母),它在结构上与浮点数不同。

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

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

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

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

使用其他软件你不会做得更好。如果你从某个实际区间中取出一个真正统一的 n 点样本,你得到的结果将是不合理的(实际上是超验的)。几乎所有这些数字都无法在计算机上表示,因为它们无法以任何紧凑的形式表示,因此任何尝试此类采样的软件都只会返回 n 结果的集合,并终止十进制扩展。

正如卡尔建议你可以用

生成类似你想要的情节的东西
> plot([0,1]);