查看: 2344|回复: 6

情人节特献:有心之函数必然就有分手函数

[复制链接]
  • TA的每日心情
    擦汗
    2014-2-12 10:49
  • 签到天数: 150 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-2-12 14:30:52 | 显示全部楼层 |阅读模式
    分享到:
    刚刚看到这,毛骨悚然。作者真的屌爆了!!!
    下面转文:
    首先,祝大家情人节快乐。不过,对于单身 Geek 来说,情人节或许并不快乐。情人节可以说是各种 Geek 们永久的伤痛了。即使是热爱数学的你,或许看到已经被转发到烂的“心之函数”今日再度走红,心中也会觉得不爽:我们发明出来的 Geek 玩物,竟然都被你们这些非 Geek 人士拿去装 Geek 泡妞用了,最终情人节宅在家里面向显示器编程度过平凡一天的反而还是我们这群 Geek

    1.png
    于是乎,“订完全部大床房”、“买光影院单号位”、“扎破所有安全套”等经典段子年年少不了。当然,我也没有闲着。为什么有 Geek 式的爱情祝福,就没有 Geek 式的分手诅咒?我计划着创作一个“分手函数”,它的函数图像是一个裂成两半的心。
        要制造分手函数,首先要有一个等待被恶搞的心形原型。我所选用的原型函数则是 2006 5 4 日本 Blog 所发文章里的函数(看到五年前的文章真是让我感慨万千啊)。这个函数的形式相当对称美观: 17 x^2 - 16|x|y + 17 y^2 < 225 。用 Mathematica 画出来大概是这样:


    2.png
    这个心形函数的成因非常简单,去掉中间一项的绝对值后你就明白了:


    3.png
    原来,17 x^2 - 16 x y + 17 y^2 < 225 将会画出一个椭圆,因此给 x 加上绝对值,相当于把平面直角坐标系 y 轴右半部分镜像过来,就得到一个大致的心形了。我们的目标,便是要沿着 y 轴方向给这颗心加上一道的裂缝。
        裂缝一般都是锯齿形的。什么函数也是锯齿形的呢?最常用的估计就是三角函数和取余函数了吧。这里,我决定用大家熟知的并且也是相对容易控制的正弦函数来描绘裂缝的形状。考虑二元函数 f(x, y) = x ,由于所有 x 坐标相同的点函数值都一样,它的“等高线图像”就是一条条简单的竖直线,如图所示:


    4.png
    那么,函数 f(x, y) = x + sin(y) 就是对上图中纵坐标为 y 的所有点偏移 sin(y) 的量,也就把一个个带状区域扭成了波浪。


    5.png
    不过,这个波浪似乎还不够剧烈,离我们的“裂缝”要求远了些。我们不妨加大正弦函数的频率:


    6.png
    哇, f(x, y) = x + sin(5 y) 的周期倒是变短了,不过这波动得也太剧烈了一些。看来,我们应该让 x 的变化也稍微剧烈一些,让它能适应 sin(5 y) 的步伐。于是,我把 f(x, y) 改成了 5 x + sin(5 y)


    7.png
    这就有点裂缝的味道了。注意,图里看上去裂缝带有些宽,这无所谓——这只是生成图形中等高线画得比较稀而已。光从无差异曲线的分布形状来看,我们已经实现裂缝效果了。
        但是,怎样把这个裂缝应用到之前的心之函数里呢?注意到心之函数其实是一个不等式 17 x^2 - 16|x|y + 17 y^2 < 225 。如果我们能找一个两侧值小、靠近 y 轴部分陡然增大的波浪形函数 f(x, y) 就好了。把这样的 f(x, y) 加到心之函数上,就相当于给 y 轴附近的一个波浪形范围加上一个大得出奇的值,让不等式左边超过 225 ,出现裂缝状的空缺;同时,这以外的部分 f(x, y) 几乎为 0,该小于 225 的还是小于 225 , 该大于 225 的还是大于 225 ,对心形不会造成任何实质性的影响。
        什么操作能够让一个函数变得两边小到几乎为 0 ,靠近 y 轴的地方陡然增大呢?答案是“绝对值分之一”。


    8.png
    把它应用到之前的 f(x, y) 上(函数也就变成 1/|5 x + sin(5 y)| 了):


    9.png
      哈哈,这个有效果,中间的函数值陡然增大,大到都亮得发白了。
        让我们把这个 f(x, y) 加到心之函数上,也就是说画出不等式 17 x^2 - 16|x|y + 17 y^2 + 1/|5 x + sin(5 y)| < 225


    10.png
    咦?怎么没有效果呢?且慢,仔细看图的中间,已经有一些要裂开的痕迹了。我想到了一个可能的原因:裂缝带的函数值还不够大。心形图形是由所有满足 17 x^2 - 16|x|y + 17 y^2 小于 225 的点组成的,但是这些点的函数值并不是刚好 225 ,以至于加上了一个大数后仍然比 225 小。为了扩大裂缝的影响,让我们把 1/|5 x + sin(5 y)| 的分子改成 150


    11.png
    让我们祈祷这次裂缝的函数值足以把心形破坏掉吧:


    12.png
    哈哈,这次成功了,裂开的心形!我原创的“分手方程”就此出炉了: 17 x^2 - 16|x|y + 17 y^2 + 150/|5 x + sin(5 y)| < 225 。让我们把这个不等式本身标在图上,方便在网络上传播:

    14.png
    不过,这个分手函数有一些美中不足的地方:它用到了分式运算,不能和已有的部分很好地合并在一起,很容易看出这是由心形函数和裂缝函数拼合而成的,看上去有些平凡。另外,对于某些特殊的取值(比如 x y 都为 0 ),不等式左边有可能因分母为 0 而无意义,虽然在分母上加个很小的常数可以避免,但作为完美主义者我仍然感觉很不爽~~~


    13.png
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-3-15 10:18
  • 签到天数: 1027 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2014-2-12 15:11:24 | 显示全部楼层
    牛X!!!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-3-19 13:22
  • 签到天数: 805 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2014-2-12 15:15:27 | 显示全部楼层
    神奇                       
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-10-28 10:11
  • 签到天数: 1703 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2014-2-12 16:51:04 | 显示全部楼层
    150这个位置如果不是常数,应该能做出从上面撕裂开的效果。
    请问下,有没有mathmatica的下载啊?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-8-1 16:41
  • 签到天数: 1014 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2014-2-12 17:25:01 | 显示全部楼层
    忍不住学着也画了个玩玩...

    star.zip

    218.63 KB, 下载次数: 1

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-18 12:34
  • 签到天数: 1673 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    发表于 2014-2-12 22:14:03 | 显示全部楼层
    我去,这是哪个数学牛人闲着没事研究的啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2014-2-12 10:49
  • 签到天数: 150 天

    连续签到: 1 天

    [LV.7]常住居民III

     楼主| 发表于 2014-2-14 09:40:24 | 显示全部楼层
    nemon 发表于 2014-2-12 16:51
    150这个位置如果不是常数,应该能做出从上面撕裂开的效果。
    请问下,有没有mathmatica的下载啊? ...

    这个我还真没研究过,只是看着有意思我就转了。回头好好研究研究下
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 20:28 , Processed in 0.186078 second(s), 28 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.