0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么 sin(x²)+sin(y²)=1 的图像这么复杂?

新机器视觉 来源:数学职业家 2023-07-31 10:05 次阅读

其原因有两条:一是看似简单的数学公式可以生成十分复杂的图像图形,二是看似十分复杂的图像图形可以由简单的数学公式实现。 显然这两句话是一个意思,也并没有什么营养。

最初我以为笑话里讲的“数字里添加的字母”是代数里用的x、y、z。后来我慢慢意识到,罪孽深重最大恶极的sin会导致数学变得更加险恶。 为了洞悉数学的险恶,我曾试图将数学以图形图像的方式显示出来,并写过几个程序DEMO可以利用数学公式转化成图形图像。DEMO发在叶飞影 - 博客园里,有兴趣可以去看看。现在很多数学软件都有类似的功能,我只是习惯用自己的这套逻辑,自得其乐而已。文中所发的图片都是从我写的程序DEMO中截屏出来的。 1

正弦波

提到“波”这个词,我第一会想到波波,第二则想到正弦sin。很容易画出函数y=sin(x)的图形:

695efdfa-2edf-11ee-815d-dac502259ad0.jpg

正弦波

我有个大学同学曾经说过:“人生就像一条正弦波,有时在波峰,有时在波谷。我现在正处于波谷,但我相信将来不久,我就会爬上波峰。” 然而,这个比喻并不准确,否则人生就不会起起落落落落落落落落......了。我觉得更准确的比喻是:人生就像若干条正弦波的叠加,你永远不知道自己下一步是起还是落。



看看这个正弦波叠加函数: y = sin(x) + sin(x*2)/2 + sin(x*4)/4 + sin(x*8)/8 + sin(x*16)/16 + sin(x*32)/32 + sin(x*64)/64 + sin(x*128)/128 69719e38-2edf-11ee-815d-dac502259ad0.jpg

有规律的正弦波叠加 该函数由8个正弦波叠加组成,每个波有它的振幅和频率。然而世事无常,每个波的振幅和频率决不会那么地有规律,如果用随机数设置这8个波的振幅和频率,可以得到如下图像:

697fea60-2edf-11ee-815d-dac502259ad0.jpg

随机的正弦波叠加 现在问题来了,随意选中图像所绘曲线上的一点,该如何判断该点将来是涨还是跌?涨又能涨多少?跌又能跌多少?这只有知道每个正弦波的振幅和频率才能知道。小时候看电视剧《大时代》,里面讲炒股要追“势”,将股票的波动曲线析构成一个个的“势”的作用结果。通过对股票波动曲线的研究,分析出每个“势”的大小和周期,以此涨势则买入,跌势则卖出,无往不利。

然而单看这么一根根屌丝一样的曲线,我是没有办法得到振幅和频率的具体数值,我甚至连有几个正弦波都看不出来。理论是美好的,现实是残酷的,我断然没有这方面的才能,所以不敢踏入股市。就如同我知道一点点概率论的知识(投入值大于期望值八成会亏本),就不敢买彩票一样。 加大正弦波的振幅,加快正弦波的频率,可以生成类似下面这样的图像:

6992f7ea-2edf-11ee-815d-dac502259ad0.jpg

波动图

是不是感觉有点乱糟糟的,还可以更乱吗?当然可以! 看看函数:y = fract(sin(x)*1000000.0)。fract是对实数忽略整数位只取小数位的操作。这个函数的图像如下:

69a8eabe-2edf-11ee-815d-dac502259ad0.jpg

随机图

这个函数的用处就是为了生成随机数。当然真正大神写的随机数生成的函数是: y = fract(sin(x*12.9898)*43758.5453123)。

至于为什么设置12.9898和43758.5453123这两个常数值,我也不知道呀!大神的思维不是我等凡人所能理解的,我只知道如果设置了其他数,生成的数值可能就不够随机了。 2

二维三维......

题目提到的方程是个二元方程,对应的图形是个二维图形。我们先从简单的来讲: 函数y = sin(x)扩展到二维可以是z = sin(x) + sin(y),也可以是z = sin(x + y),还可以是z = sin(x)*sin(y)、z = sin(x * y)。

每一个函数都是让人头晕目炫,凭我怎么去想,也想不清晰这些函数应该是什么样。

有一天晚上,我半夜醒来睡不觉,就闭着眼睛想z = sin(x) + sin(y)这个函数应该是什么样,这货应该是圆的还是方的呢?怎么都想不清楚,第二天早上,起来用程序画了一下。OK,原来它是这个样子的:

69c9cd10-2edf-11ee-815d-dac502259ad0.jpg

z = sin(x) + sin(y) 加点伪彩颜色后,看让去不会那么让人眼晕:

69ea29f2-2edf-11ee-815d-dac502259ad0.jpg

z = sin(x) + sin(y) 原来这货是既圆又方,这图像真让人眩晕,如果那晚我能想象出这个函数的图像,应该会很快再度安然入睡。。 方程sin(x) + sin(y) = 1的图像:

6a04d32e-2edf-11ee-815d-dac502259ad0.jpg

sin(x) + sin(y) = 1 方程sin(x) + sin(y) = 0的图像:

6a303366-2edf-11ee-815d-dac502259ad0.jpg

sin(x) + sin(y) = 0 如果再增加一维,函数变为:w = sin(x) + sin(y) + sin(z),这就有点难画了。

这是个三维函数,属于体素数据,是个实心的。

要看体素的内部数值,可以使用体绘制,但我只有显示其切片的办法。当然切片不一定是平面,可以用个曲面来切,将切到的数值以颜色的形式显示出来。

下图为用一个半径为40的球体切割函数w = sin(x) + sin(y) + sin(z),然后把数值转化成灰度,得到的图形:

6a527e62-2edf-11ee-815d-dac502259ad0.jpg

w = sin(x) + sin(y) + sin(z) 灰度图看着不爽,加点伪彩颜色瞧瞧:

6a6eb2b2-2edf-11ee-815d-dac502259ad0.jpg

w = sin(x) + sin(y) + sin(z) 球看着也不爽,既然z = sin(x) + sin(y)可以生成一个平面地形高度图形,那么就可以用w = sin(x) + sin(y) + sin(z)生成一个星球高度图形:

6a91da9e-2edf-11ee-815d-dac502259ad0.jpg

w = sin(x) + sin(y) + sin(z)

6a9fede6-2edf-11ee-815d-dac502259ad0.jpg

w = sin(x) + sin(y) + sin(z) 如果你们还想知道四元及以上的可视化效果,诸如:k = sin(x) + sin(y) + sin(z) + sin(w),我也没办法啊!四维世界的险恶,我做为三维世界的生物根本看不到,也想不懂。 3

sin(x²)+sin(y²)=1

话题回到问题中的方程上。先看函数y = sin(x²),我们可以很容易画出它的图像:

6acecd82-2edf-11ee-815d-dac502259ad0.jpg

y = sin(x²) 然后将一元变量的函数扩展到二元变量:z = sin(x²)+sin(y²) 可以将该函数以地形高度图的方式进行显示:

6af370ce-2edf-11ee-815d-dac502259ad0.jpg

正面

6b1bad50-2edf-11ee-815d-dac502259ad0.jpg

反面

然后用平面z = 1横切该地形,就可以得到方程sin(x²)+sin(y²)=1的图像:

6b6009fa-2edf-11ee-815d-dac502259ad0.jpg

sin(x²)+sin(y²)=1 不过我更愿意将z转化成一个像素值而不是高度值,下图为将z转化成灰度值生成的一幅黑白图像:

6b7c77b6-2edf-11ee-815d-dac502259ad0.jpg

灰度图 可以将z = 1的区域用红色标识一下:

6b9a5312-2edf-11ee-815d-dac502259ad0.jpg

灰色图+勾勒sin(x²)+sin(y²)=1 既然是灰度值,就可以对其做伪彩调色,以生成更漂亮的彩色图像:

6bbb0ac6-2edf-11ee-815d-dac502259ad0.jpg

伪彩图1

6bfa69c8-2edf-11ee-815d-dac502259ad0.jpg

伪彩图2

6c164c42-2edf-11ee-815d-dac502259ad0.jpg

伪彩图3

再增加一维,函数变为:w = sin(x²) + sin(y²) + sin(z²)。下图为用一个半径为10的球体切割得到的图形:

6c35ed9a-2edf-11ee-815d-dac502259ad0.jpg

w = sin(x²) + sin(y²) + sin(z²)

6c5546a4-2edf-11ee-815d-dac502259ad0.jpg

w = sin(x²) + sin(y²) + sin(z²)

6c77b46e-2edf-11ee-815d-dac502259ad0.jpg

w = sin(x²) + sin(y²) + sin(z²)

6cab1458-2edf-11ee-815d-dac502259ad0.jpg

w = sin(x²) + sin(y²) + sin(z²) 最后,大家想不想看看方程sin(x²)+sin(y²)+sin(z²)=1的图形效果?图形中含有很多可爱的激凸哟!

6ccb722a-2edf-11ee-815d-dac502259ad0.jpg

数值范围(-2.2, 2.2)

6cdac93c-2edf-11ee-815d-dac502259ad0.jpg

数值范围(-3.3, 3.3)

6d05b3cc-2edf-11ee-815d-dac502259ad0.jpg

数值范围(-4.15, 4.15)

6d23e018-2edf-11ee-815d-dac502259ad0.jpg

数值范围(-10, 10)

6d48e8a4-2edf-11ee-815d-dac502259ad0.jpg

数值范围(-10, 10) 当然也有方程sin(x²)+sin(y²)+sin(z²)=0的图形效果,密集恐惧症患者的福利:

6d6b92aa-2edf-11ee-815d-dac502259ad0.jpg

数值范围(-6, 6)

6d85c012-2edf-11ee-815d-dac502259ad0.jpg

数值范围(-10, 10)






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:为什么 sin(x²)+sin(y²)=1 的图像这么复杂?

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    DSP教学实验箱_数字图像处理_操作教程:5-1 图像旋转

    θ=−x_0sinθ+y_0cosθ 坐标系 在旋转过程中,需要经过两次坐标变换。图像的坐标系和数学的坐标系是不一样的。在数字图像的坐标系中,y
    发表于 06-14 14:03

    【pcb layout大赛】“sin88”的作品

    ` 本帖最后由 sin88 于 2013-7-7 01:50 编辑 【pcb layout大赛】“sin88”的作品第一次画这么复杂的板子,O(∩_∩)O哈哈~,当学习了`
    发表于 07-07 01:46

    关于LabVIEW中sin(x)的控件问题

    LabVIEW中sin(x)的控件,按理说输入π(派)控件数值,非常接近0,但是当π除以2之后再输入sin(x)的控件中,就成为1而不是接近
    发表于 08-10 01:04

    复杂形式定积分函数中未知参数求解(已知y及积分上下限)

    y1(x)=cos(x)*0.908963434*(2*e^3*sin(x)/(e+asin((1
    发表于 10-15 22:05

    DSP怎么算sin函数

    最近研究那个SPWM波 想问一下 是不是要变压以及要变频的话 SIN函数要实时计算而不是计算出来直接存在ROM里?如果计算 那么DSP怎么算sin函数?
    发表于 04-27 10:45

    LabVIEW中sin(x)/x函数在哪

    LabVIEW中sin(x)/x函数在哪?
    发表于 06-26 13:58

    sin(x)/x函数在哪?急求啊

    sin(x)/x函数在哪?急求啊
    发表于 06-26 14:34

    设计实验 运用运放,设计一个电路,使其输出如下图所示的波形(y=6+4sin1000t)。

    设计实验运用运放,设计一个电路,使其输出的波形为(y=6+4sin1000t)。
    发表于 04-21 22:03

    函数sin()编译错误该怎么办?

    =0.5;双Y;(;){y=正弦(x);//构建错误:未定义的“罪恶”的引用ySin(0.5);/ /该线可用。}}
    发表于 10-30 10:09

    如何应用网上的Saber模型文件.sin

    如何应用网上的Saber 模型文件(.sin)?网上有一些器件厂商提供了Saber 的模型(.sin)文件,在SaberSketch 中应用还需要作如下的工作(以MOS 管2n7002l 为例):
    发表于 06-19 15:57 86次下载

    sin/cos发生器,sin/cos信号产生电路图

    sin/cos发生器 sin/cos发生器的任务是根据电压频率转换器输出脉冲的多少和方
    发表于 05-07 00:10 3702次阅读
    <b class='flag-5'>sin</b>/cos发生器,<b class='flag-5'>sin</b>/cos信号产生电路图

    C2000位置管理器技术的SIN COS解决方案介绍

    C2000DesignDRIVE位置管理器SIN COS解决方案
    的头像 发表于 04-12 07:03 3184次阅读
    C2000位置管理器技术的<b class='flag-5'>SIN</b> COS解决方案介绍

    Sin/Cos编码器与Sitara AM437x的连接参考设计

    电子发烧友网站提供《Sin/Cos编码器与Sitara AM437x的连接参考设计.zip》资料免费下载
    发表于 09-06 11:31 1次下载
    <b class='flag-5'>Sin</b>/Cos编码器与Sitara AM437<b class='flag-5'>x</b>的连接参考设计

    SIN-61T-2.6S 规格书

    SIN-61T-2.6S规格书
    发表于 03-07 17:36 0次下载

    sin和cos的傅里叶变换过程

    本文中,我们将详细介绍正弦函数和余弦函数的傅里叶变换过程。 首先,让我们回顾一下正弦函数和余弦函数的定义: 正弦函数:sin(x) = A * sin(2πf0t + φ) 余弦函数:cos(
    的头像 发表于 01-17 10:08 1.5w次阅读