仅用max,min函数实现sgn函数


在使用某一作图小插件的时候需要绘制sgn函数曲线,但是该工具只提供min, max, ceil, floor, sin, cos等基本函数,于是我就想用这些简单函数来组合出sgn函数,各种尝试过程如下:
- 首先最简单的,是使用ceil(或floor)和sin(或cos)函数:

   
  ceil(sin(x));        /* 然后进行平移即可 */
 

- 再进一步可以用ceil, max, min函数:

   
  ceil(min(max(x, 0), 1));        /* 然后进行平移即可 */
 

- 考虑到sgn函数仅有条件分支,min(或max)也仅有条件分支,于是就想是否能直接仅用min或max来实现该函数,想来想去只想到了下面的一个间接的水办法,还木有能想到一个直接的办法:

   
  1/k * max(min(x, k), min(-x, -k));       /* 0<k<1,表示精度 */
 

这个办法能够达到某一精度,但是还不算最直接,虽然直觉上觉得不能实现,但是也无法证明;

各位大神充分发挥一下当年做24点的热情,来试试用上面的基本函数来实现sgn函数的功能,或者谁给证明一下,min(或max)是无法直接实现sgn函数的,请指教。

离散数学 趣味

Mega笑脸 11 years, 3 months ago

Your Answer