當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 21ic電子網(wǎng)
[導(dǎo)讀]為什么sin(x2)sin(y2)=1的圖像這么復(fù)雜?其原因有兩個(gè):一是看似簡(jiǎn)單的數(shù)學(xué)公式可以生成十分復(fù)雜的圖像圖形,二是看似十分復(fù)雜的圖像圖形可以由簡(jiǎn)單的數(shù)學(xué)公式實(shí)現(xiàn)。顯然,這兩句話是一個(gè)意思,也并沒有什么營(yíng)養(yǎng)。不如先給大家講個(gè)段子:妹妹看到哥哥在抓耳撓腮地做作業(yè),就跑過去問:...

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?

為什么 sin(x2) sin(y2)=1 的圖像這么復(fù)雜?其原因有兩個(gè):一是看似簡(jiǎn)單的數(shù)學(xué)公式可以生成十分復(fù)雜的圖像圖形,二是看似十分復(fù)雜的圖像圖形可以由簡(jiǎn)單的數(shù)學(xué)公式實(shí)現(xiàn)。


顯然,這兩句話是一個(gè)意思,也并沒有什么營(yíng)養(yǎng)。


不如先給大家講個(gè)段子:

妹妹看到哥哥在抓耳撓腮地做作業(yè),就跑過去問:“哥哥,你在做什么作業(yè)?”

哥哥回答:“數(shù)學(xué)?!?/span>
妹妹看了一眼哥哥寫的東西,就說:“你騙人,你明明寫的都是英文?!?/span>
哥哥含著眼淚對(duì)妹妹說:“妹子,你還太小,數(shù)學(xué)的險(xiǎn)惡你還不懂!本來我的數(shù)學(xué)學(xué)得非常好,直到有一天,他們喪心病狂地在數(shù)字里添加了字母!”

最初我以為笑話里講的“數(shù)字里添加的字母”是代數(shù)里用的x、y、z。后來我慢慢意識(shí)到,罪孽深重最大惡極的sin會(huì)導(dǎo)致數(shù)學(xué)變得更加險(xiǎn)惡。

為了洞悉數(shù)學(xué)的險(xiǎn)惡,我曾試圖將數(shù)學(xué)以圖形圖像的方式顯示出來,并寫過幾個(gè)程序DEMO可以利用數(shù)學(xué)公式轉(zhuǎn)化成圖形圖像?,F(xiàn)在很多數(shù)學(xué)軟件都有類似的功能,我只是習(xí)慣用自己的這套邏輯,自得其樂而已。文中所發(fā)的圖片都是從我寫的程序DEMO中截屏出來的。

01

正弦波

提到“波”這個(gè)詞,我第一會(huì)想到波波,第二則想到正弦sin。很容易畫出函數(shù)y=sin(x)的圖形:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?
▍正弦波

我有個(gè)大學(xué)同學(xué)曾經(jīng)說過:“人生就像一條正弦波,有時(shí)在波峰,有時(shí)在波谷。我現(xiàn)在正處于波谷,但我相信將來不久,我就會(huì)爬上波峰?!?/span>
然而,這個(gè)比喻并不準(zhǔn)確,否則人生就不會(huì)起起落落落落落落落落......了。我覺得更準(zhǔn)確的比喻是:人生就像若干條正弦波的疊加,你永遠(yuǎn)不知道自己下一步是起還是落。

看看這個(gè)正弦波疊加函數(shù):

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

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?
▍有規(guī)律的正弦波疊加

該函數(shù)由8個(gè)正弦波疊加組成,每個(gè)波有它的振幅和頻率。然而世事無常,每個(gè)波的振幅和頻率決不會(huì)那么地有規(guī)律,如果用隨機(jī)數(shù)設(shè)置這8個(gè)波的振幅和頻率,可以得到如下圖像:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?
▍隨機(jī)的正弦波疊加

現(xiàn)在問題來了,隨意選中圖像所繪曲線上的一點(diǎn),該如何判斷該點(diǎn)將來是漲還是跌?漲又能漲多少?跌又能跌多少?這只有知道每個(gè)正弦波的振幅和頻率才能知道。小時(shí)候看電視劇《大時(shí)代》,里面講炒股要追“勢(shì)”,將股票的波動(dòng)曲線析構(gòu)成一個(gè)個(gè)的“勢(shì)”的作用結(jié)果。通過對(duì)股票波動(dòng)曲線的研究,分析出每個(gè)“勢(shì)”的大小和周期,以此漲勢(shì)則買入,跌勢(shì)則賣出,無往不利。然而單看這么一根根屌絲一樣的曲線,我是沒有辦法得到振幅和頻率的具體數(shù)值,我甚至連有幾個(gè)正弦波都看不出來。理論是美好的,現(xiàn)實(shí)是殘酷的,我斷然沒有這方面的才能,所以不敢踏入股市。就如同我知道一點(diǎn)點(diǎn)概率論的知識(shí)(投入值大于期望值八成會(huì)虧本),就不敢買彩票一樣。

加大正弦波的振幅,加快正弦波的頻率,可以生成類似下面這樣的圖像:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?
▍波動(dòng)圖

是不是感覺有點(diǎn)亂糟糟的,還可以更亂嗎?當(dāng)然可以!

看看函數(shù):y = fract(sin(x)*1000000.0)。fract是對(duì)實(shí)數(shù)忽略整數(shù)位只取小數(shù)位的操作。這個(gè)函數(shù)的圖像如下:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?
▍隨機(jī)圖

這個(gè)函數(shù)的用處就是為了生成隨機(jī)數(shù)。當(dāng)然真正大神寫的隨機(jī)數(shù)生成的函數(shù)是:

y = fract(sin(x*12.9898)*43758.5453123)。

至于為什么設(shè)置12.9898和43758.5453123這兩個(gè)常數(shù)值,我也不知道呀!大神的思維不是我等凡人所能理解的,我只知道如果設(shè)置了其他數(shù),生成的數(shù)值可能就不夠隨機(jī)了。

02

二維三維......

題目提到的方程是個(gè)二元方程,對(duì)應(yīng)的圖形是個(gè)二維圖形。我們先從簡(jiǎn)單的來講:

函數(shù)y = sin(x)擴(kuò)展到二維可以是z = sin(x) sin(y),也可以是z = sin(x y),還可以是z = sin(x)*sin(y)、z = sin(x * y)。每一個(gè)函數(shù)都是讓人頭暈?zāi)快牛瑧{我怎么去想,也想不清晰這些函數(shù)應(yīng)該是什么樣。

有一天晚上,我半夜醒來睡不覺,就閉著眼睛想z = sin(x) sin(y)這個(gè)函數(shù)應(yīng)該是什么樣,這貨應(yīng)該是圓的還是方的呢?怎么都想不清楚,第二天早上,起來用程序畫了一下。OK,原來它是這個(gè)樣子的:


z = sin(x) sin(y)

加點(diǎn)偽彩顏色后,看讓去不會(huì)那么讓人眼暈:
為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?z = sin(x) sin(y)
原來這貨是既圓又方,這圖像真讓人眩暈,如果那晚我能想象出這個(gè)函數(shù)的圖像,應(yīng)該會(huì)很快再度安然入睡。。

方程sin(x) sin(y) = 1的圖像:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?sin(x) sin(y) = 1
方程sin(x) sin(y) = 0的圖像:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?sin(x) sin(y) = 0
如果再增加一維,函數(shù)變?yōu)椋簑 = sin(x) sin(y) sin(z),這就有點(diǎn)難畫了。
這是個(gè)三維函數(shù),屬于體素?cái)?shù)據(jù),是個(gè)實(shí)心的。要看體素的內(nèi)部數(shù)值,可以使用體繪制,但我只有顯示其切片的辦法。當(dāng)然切片不一定是平面,可以用個(gè)曲面來切,將切到的數(shù)值以顏色的形式顯示出來。下圖為用一個(gè)半徑為40的球體切割函數(shù)w = sin(x) sin(y) sin(z),然后把數(shù)值轉(zhuǎn)化成灰度,得到的圖形:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?w = sin(x) sin(y) sin(z)
灰度圖看著不爽,加點(diǎn)偽彩顏色瞧瞧:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?w = sin(x) sin(y) sin(z)
球看著也不爽,既然z = sin(x) sin(y)可以生成一個(gè)平面地形高度圖形,那么就可以用w = sin(x) sin(y) sin(z)生成一個(gè)星球高度圖形:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?w = sin(x) sin(y) sin(z)為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?w = sin(x) sin(y) sin(z)
如果你們還想知道四元及以上的可視化效果,諸如:k = sin(x) sin(y) sin(z) sin(w),我也沒辦法??!四維世界的險(xiǎn)惡,我做為三維世界的生物根本看不到,也想不懂。

03

sin(x2) sin(y2)=1

話題回到問題中的方程上。先看函數(shù)y = sin(x2),我們可以很容易畫出它的圖像:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?y = sin(x2)
然后將一元變量的函數(shù)擴(kuò)展到二元變量:z = sin(x2) sin(y2)

可以將該函數(shù)以地形高度圖的方式進(jìn)行顯示:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?正面為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?反面
然后用平面z = 1橫切該地形,就可以得到方程sin(x2) sin(y2)=1的圖像:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?sin(x2) sin(y2)=1
不過我更愿意將z轉(zhuǎn)化成一個(gè)像素值而不是高度值,下圖為將z轉(zhuǎn)化成灰度值生成的一幅黑白圖像:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?灰度圖
可以將z = 1的區(qū)域用紅色標(biāo)識(shí)一下:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?灰色圖 勾勒sin(x2) sin(y2)=1
既然是灰度值,就可以對(duì)其做偽彩調(diào)色,以生成更漂亮的彩色圖像:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?偽彩圖1為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?偽彩圖2為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?偽彩圖3
再增加一維,函數(shù)變?yōu)椋簑 = sin(x2) sin(y2) sin(z2)。下圖為用一個(gè)半徑為10的球體切割得到的圖形:

為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?w = sin(x2) sin(y2) sin(z2)為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?w = sin(x2) sin(y2) sin(z2)為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?w = sin(x2) sin(y2) sin(z2)為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?w = sin(x2) sin(y2) sin(z2)
最后,大家想不想看看方程sin(x2) sin(y2) sin(z2)=1的圖形效果?圖形中含有很多可愛的激凸喲!


為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?數(shù)值范圍(-2.2, 2.2)為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?數(shù)值范圍(-3.3, 3.3)為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?數(shù)值范圍(-4.15, 4.15)為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?數(shù)值范圍(-10, 10)為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?數(shù)值范圍(-10, 10)當(dāng)然也有方程sin(x2) sin(y2) sin(z2)=0的圖形效果,密集恐懼癥患者的福利:為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?數(shù)值范圍(-6, 6)為什么?sin(x2) sin(y2)=1?的圖像這么復(fù)雜?數(shù)值范圍(-10, 10)


作者:葉飛影,來源:知乎原文地址:www.zhihu.com/question/325445882/answer/692389802版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。

21ic電子網(wǎng)

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉