其原因有兩條:一是看似簡(jiǎn)單的數(shù)學(xué)公式可以生成十分復(fù)雜的圖像圖形,二是看似十分復(fù)雜的圖像圖形可以由簡(jiǎn)單的數(shù)學(xué)公式實(shí)現(xiàn)。 顯然這兩句話是一個(gè)意思,也并沒(méi)有什么營(yíng)養(yǎng)。
最初我以為笑話里講的“數(shù)字里添加的字母”是代數(shù)里用的x、y、z。后來(lái)我慢慢意識(shí)到,罪孽深重最大惡極的sin會(huì)導(dǎo)致數(shù)學(xué)變得更加險(xiǎn)惡。 為了洞悉數(shù)學(xué)的險(xiǎn)惡,我曾試圖將數(shù)學(xué)以圖形圖像的方式顯示出來(lái),并寫過(guò)幾個(gè)程序DEMO可以利用數(shù)學(xué)公式轉(zhuǎn)化成圖形圖像。DEMO發(fā)在葉飛影 - 博客園里,有興趣可以去看看?,F(xiàn)在很多數(shù)學(xué)軟件都有類似的功能,我只是習(xí)慣用自己的這套邏輯,自得其樂(lè)而已。文中所發(fā)的圖片都是從我寫的程序DEMO中截屏出來(lái)的。 1
正弦波
提到“波”這個(gè)詞,我第一會(huì)想到波波,第二則想到正弦sin。很容易畫出函數(shù)y=sin(x)的圖形:
正弦波
我有個(gè)大學(xué)同學(xué)曾經(jīng)說(shuō)過(guò):“人生就像一條正弦波,有時(shí)在波峰,有時(shí)在波谷。我現(xiàn)在正處于波谷,但我相信將來(lái)不久,我就會(huì)爬上波峰?!?然而,這個(gè)比喻并不準(zhǔn)確,否則人生就不會(huì)起起落落落落落落落落......了。我覺(jué)得更準(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
有規(guī)律的正弦波疊加 該函數(shù)由8個(gè)正弦波疊加組成,每個(gè)波有它的振幅和頻率。然而世事無(wú)常,每個(gè)波的振幅和頻率決不會(huì)那么地有規(guī)律,如果用隨機(jī)數(shù)設(shè)置這8個(gè)波的振幅和頻率,可以得到如下圖像:
隨機(jī)的正弦波疊加 現(xiàn)在問(wèn)題來(lái)了,隨意選中圖像所繪曲線上的一點(diǎn),該如何判斷該點(diǎn)將來(lái)是漲還是跌?漲又能漲多少?跌又能跌多少?這只有知道每個(gè)正弦波的振幅和頻率才能知道。小時(shí)候看電視劇《大時(shí)代》,里面講炒股要追“勢(shì)”,將股票的波動(dòng)曲線析構(gòu)成一個(gè)個(gè)的“勢(shì)”的作用結(jié)果。通過(guò)對(duì)股票波動(dòng)曲線的研究,分析出每個(gè)“勢(shì)”的大小和周期,以此漲勢(shì)則買入,跌勢(shì)則賣出,無(wú)往不利。
然而單看這么一根根屌絲一樣的曲線,我是沒(méi)有辦法得到振幅和頻率的具體數(shù)值,我甚至連有幾個(gè)正弦波都看不出來(lái)。理論是美好的,現(xiàn)實(shí)是殘酷的,我斷然沒(méi)有這方面的才能,所以不敢踏入股市。就如同我知道一點(diǎn)點(diǎn)概率論的知識(shí)(投入值大于期望值八成會(huì)虧本),就不敢買彩票一樣。 加大正弦波的振幅,加快正弦波的頻率,可以生成類似下面這樣的圖像:
波動(dòng)圖
是不是感覺(jué)有點(diǎn)亂糟糟的,還可以更亂嗎?當(dāng)然可以! 看看函數(shù):y = fract(sin(x)*1000000.0)。fract是對(duì)實(shí)數(shù)忽略整數(shù)位只取小數(shù)位的操作。這個(gè)函數(shù)的圖像如下:
隨機(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ī)了。 2
二維三維......
題目提到的方程是個(gè)二元方程,對(duì)應(yīng)的圖形是個(gè)二維圖形。我們先從簡(jiǎn)單的來(lái)講: 函數(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)該是什么樣。
有一天晚上,我半夜醒來(lái)睡不覺(jué),就閉著眼睛想z = sin(x) + sin(y)這個(gè)函數(shù)應(yīng)該是什么樣,這貨應(yīng)該是圓的還是方的呢?怎么都想不清楚,第二天早上,起來(lái)用程序畫了一下。OK,原來(lái)它是這個(gè)樣子的:
z = sin(x) + sin(y) 加點(diǎn)偽彩顏色后,看讓去不會(huì)那么讓人眼暈:
z = sin(x) + sin(y) 原來(lái)這貨是既圓又方,這圖像真讓人眩暈,如果那晚我能想象出這個(gè)函數(shù)的圖像,應(yīng)該會(huì)很快再度安然入睡。。 方程sin(x) + sin(y) = 1的圖像:
sin(x) + sin(y) = 1 方程sin(x) + sin(y) = 0的圖像:
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è)曲面來(lái)切,將切到的數(shù)值以顏色的形式顯示出來(lái)。
下圖為用一個(gè)半徑為40的球體切割函數(shù)w = sin(x) + sin(y) + sin(z),然后把數(shù)值轉(zhuǎn)化成灰度,得到的圖形:
w = sin(x) + sin(y) + sin(z) 灰度圖看著不爽,加點(diǎn)偽彩顏色瞧瞧:
w = sin(x) + sin(y) + sin(z) 球看著也不爽,既然z = sin(x) + sin(y)可以生成一個(gè)平面地形高度圖形,那么就可以用w = sin(x) + sin(y) + sin(z)生成一個(gè)星球高度圖形:
w = sin(x) + sin(y) + sin(z)
w = sin(x) + sin(y) + sin(z) 如果你們還想知道四元及以上的可視化效果,諸如:k = sin(x) + sin(y) + sin(z) + sin(w),我也沒(méi)辦法啊!四維世界的險(xiǎn)惡,我做為三維世界的生物根本看不到,也想不懂。 3
sin(x2)+sin(y2)=1
話題回到問(wèn)題中的方程上。先看函數(shù)y = sin(x2),我們可以很容易畫出它的圖像:
y = sin(x2) 然后將一元變量的函數(shù)擴(kuò)展到二元變量:z = sin(x2)+sin(y2) 可以將該函數(shù)以地形高度圖的方式進(jìn)行顯示:
正面
反面
然后用平面z = 1橫切該地形,就可以得到方程sin(x2)+sin(y2)=1的圖像:
sin(x2)+sin(y2)=1 不過(guò)我更愿意將z轉(zhuǎn)化成一個(gè)像素值而不是高度值,下圖為將z轉(zhuǎn)化成灰度值生成的一幅黑白圖像:
灰度圖 可以將z = 1的區(qū)域用紅色標(biāo)識(shí)一下:
灰色圖+勾勒sin(x2)+sin(y2)=1 既然是灰度值,就可以對(duì)其做偽彩調(diào)色,以生成更漂亮的彩色圖像:
偽彩圖1
偽彩圖2
偽彩圖3
再增加一維,函數(shù)變?yōu)椋簑 = sin(x2) + sin(y2) + sin(z2)。下圖為用一個(gè)半徑為10的球體切割得到的圖形:
w = sin(x2) + sin(y2) + sin(z2)
w = sin(x2) + sin(y2) + sin(z2)
w = sin(x2) + sin(y2) + sin(z2)
w = sin(x2) + sin(y2) + sin(z2) 最后,大家想不想看看方程sin(x2)+sin(y2)+sin(z2)=1的圖形效果?圖形中含有很多可愛(ài)的激凸喲!
數(shù)值范圍(-2.2, 2.2)
數(shù)值范圍(-3.3, 3.3)
數(shù)值范圍(-4.15, 4.15)
數(shù)值范圍(-10, 10)
數(shù)值范圍(-10, 10) 當(dāng)然也有方程sin(x2)+sin(y2)+sin(z2)=0的圖形效果,密集恐懼癥患者的福利:
數(shù)值范圍(-6, 6)
數(shù)值范圍(-10, 10)
審核編輯:劉清
原文標(biāo)題:為什么 sin(x2)+sin(y2)=1 的圖像這么復(fù)雜?
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論