為什麼 sin(x2)+sin(y2)=1 的圖像這麼複雜?
我無意中發現的,感覺這個方程還挺好看的,它的圖像該怎麼解釋呢?P1 是 Desmos 畫的,P2 是 Wolfram 畫的。
顯然是由sin(X)+sin(Y)=1經過坐標變換得到的。而sin(X)+sin(Y)=1是周期不聯通圖像,就像一個個小圈。
你畫的圖中,每一個小圈就是一個周期,因為坐標變換X→x2,Y→y2,導致靠近原點的小圈被拉長了,遠離原點的小圈被縮小了。
=========
解釋一下為什麼不聯通吧。(不用看圖)
首先sin(X)+sin(Y)=1的圖像是周期的,如果聯通,就意味著存在從起點 (X, Y) 到終點 (X+2mπ, Y+2nπ) 的通路,其中m和n是整數,且不同時為0。
不妨設m不為0,那麼從起點開始,X遍歷了至少一個2π周期,所以sin(X)的值遍歷了[-1,1],因此sin(Y)的值遍歷了[0,2],矛盾。
上面的論證也表明,在所有sin(X)+sin(Y)=a的圖像中,有且僅有a=0的圖像是聯通的。把X→x2,Y→y2不影響連通性。
============
當然,把維數擴大一下,sin(x2)+sin(y2)+sin(z2)=1仍然是聯通的,可以自己證明。大家看圖可以看 @曹洪洋 的圖,我的圖軟體限制畫的和鬼一樣。。。
他用的是
指令,畫的比我好
題主的圖畫的也是很清晰的
考慮曲線
若 , 則根據周期性
下面考慮 在 上的限制
可以認為 ,只要
定理1 分布在 內
證明 取 和 滿足
此時 ,容易看出
故在 上 ,同理
定理2 為封閉Jordan曲線
證明 令 ,則
則
根據周期性可知 封閉,根據單值性可知 可以分成四條首尾相接的Jordan曲線
故 為封閉Jordan曲線,更一般的 為 曲線
定理3 的中心為 ,對稱軸為
證明略
綜上所述,曲線 長這樣:
由此可知曲線 長這樣:
下面看曲線 ,長這樣(限於軟體限制,作圖精度不高,高精度圖線見題主的題文)
下面看 在 上的限制 ,作出圖形
額。。。。。電腦卡住了 換MMA
下面就定性分析,我懶得算
可以看出, 由3種9個圖形構成
可以看出 和 很像, 可以認為是兩個 交錯形成的, 可以看成是兩個 交錯形成的
我們擴大分析域到
值得注意的是,圖中曲線上某些部分缺了一塊,某些產生了變形,是由於軟體精度限制,我用的是MMA的 指令
我們可以看出,整個 也可以分成9個單元,與 類似
三角函數的周期性導致曲線向四周無限延伸,而平方導致一個連續的變形
這包括整個圖形的對稱中心產生位移
這就是 二重交錯的原因,在 處的對稱使 的下面4個圈 互聯在一起
下面我們討論下這些連續變形的來源,即SQRT映射 與簡單的映射複合的後果
與本例聯繫最緊密的就是
首先,看
定理4 為凹函數
證明 ,定理成立
定理5(幾何定理) 過二次函數圖線上除頂點外任意一點作二次函數的切線和對稱軸的平行線,這兩條線與二次函數過頂點的切線交於兩點,則這兩點與二次函數的頂點三點共線且夾在中間的點為兩邊兩點的中點。
證明略(註:可以設置一個運動,用質點運動方程證明)
在本例中,即
定理5 設 為 上一點 , ,作 過 的切線交 軸於 ,則 。
證明 考慮運動 ,
則 ,該矢量的斜率為 ,
由此切線方程為
就出來了。
當然,對函數 ,過點 切線方程還可以用下式求
證明略了,自己看微積分教材
下面看對數函數 (註: )
可以看到, 保持在 軸上的點,而把曲線上所有點的斜率放大 倍
比如函數對 且 ,有
積分得到
同理,可以分析 ,分析略
最後我們看
注意到
或
根據 的性質,零點必定越來越密
明顯,圖上的所有點都在函數
最後,值得一提的是,當精度不夠時,曲線將會出現奇怪的圖案,如下圖
這是 範圍
當範圍進一步擴大時,圖案會變得模糊
這是 範圍
這是 範圍
在某些範圍內圖案會變稀
這是 範圍
具體原因不明。。。。。。哪位大佬看到後也教教我唄
評論的 @張一凡 同學的解釋:
變稀是因為軟體畫圖的精度不足剛好全漏過去了唄。。。太密了,然後剛好這塊的繪圖精度跟這個周期一致了,就剛好全對準到空白處了
sin(x)+sin(y)=1是一堆圈圈
x變成x2,y變成y2之後有兩大變化,一是另一位答主已經提到的伸縮,二是還做了兩下對稱,關於x軸對稱及關於y軸對稱。
在x,y離0比較遠的時候,這種伸縮比較和緩,所以你依稀能看出圈圈的模樣,但是離0很近的時候,就會被明顯拉長,形成連接在軸上的尖尾,原本同時靠在x、y軸上的圈就變成了畸形月牙狀,靠在一軸上的則變成感嘆號的上半部分的樣子,然後再將他們給對稱一下就完事了。(事實上原本那些圈圈是不對稱的,變換後才生成的對稱圖形)
你可以觀察一下
從sin(x)+sin(y)=1
到sin(x2)+sin(y)=1
再到sin(x2)+sin(y2)=1的變化
如果原來的圖形就具有雙重對稱性,你就可以觀察到純粹的伸縮變換的樣子——靠近軸的部分被拉得近似垂直於軸
比如cos(x)+cos(y)=1變成cos(x2)+cos(y2)=1
中間是一個方方噠圈。
還可以看看cos(1/x)+cos(1/y)=1,非常優美的十字架狀(換成sin有點難受),你可以無盡的放大,看到無盡的圈圈,無盡的細節。
還可以試試裡面套指數函數,但這回就不是伸縮了……(當然,根據線性近似的原理你還是可以看成近似的線性變換,但是有平移的出現)
cos(ln(x2))+cos(ln(y2))=1呈現出迷人的自相似性……無論放大還是縮小都是一樣的形狀……
震驚,把1換成0更美……
我對這個問題的解釋是,其原因有兩條:一是看似簡單的數學公式可以生成十分複雜的圖像圖形,二是看似十分複雜的圖像圖形可以由簡單的數學公式實現。
顯然這兩句話是一個意思,也並沒有什麼營養。不如先給大家講個段子:
妹妹看到哥哥在抓耳撓腮地做作業,就跑過去問:「哥哥,你在做什麼作業?」
哥哥回答:「數學。」妹妹看了一眼哥哥寫的東西,就說:「你騙人,你明明寫的都是英文。」哥哥含著眼淚對妹妹說:「妹子,你還太小,數學的險惡你還不懂!本來我的數學學得非常好,直到有一天,他們喪心病狂地在數字里添加了字母!」
最初我以為笑話里講的「數字里添加的字母」是代數里用的x、y、z。後來我慢慢意識到,罪孽深重最大惡極的sin會導致數學變得更加險惡。
為了洞悉數學的險惡,我曾試圖將數學以圖形圖像的方式顯示出來,並寫過幾個程序DEMO可以利用數學公式轉化成圖形圖像。DEMO發在葉飛影 - 博客園裡,有興趣可以去看看。現在很多數學軟體都有類似的功能,我只是習慣用自己的這套邏輯,自得其樂而已。文中所發的圖片都是從我寫的程序DEMO中截屏出來的。
(一)正弦波
提到「波」這個詞,我第一會想到波波,第二則想到正弦sin。很容易畫出函數y=sin(x)的圖形:
我有個大學同學曾經說過:「人生就像一條正弦波,有時在波峰,有時在波谷。我現在正處于波谷,但我相信將來不久,我就會爬上波峰。」
然而,這個比喻並不準確,否則人生就不會起起落落落落落落落落......了。我覺得更準確的比喻是:人生就像若干條正弦波的疊加,你永遠不知道自己下一步是起還是落。
看看這個正弦波疊加函數:
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
該函數由8個正弦波疊加組成,每個波有它的振幅和頻率。然而世事無常,每個波的振幅和頻率決不會那麼地有規律,如果用隨機數設置這8個波的振幅和頻率,可以得到如下圖像:
現在問題來了,隨意選中圖像所繪曲線上的一點,該如何判斷該點將來是漲還是跌?漲又能漲多少?跌又能跌多少?這隻有知道每個正弦波的振幅和頻率才能知道。小時候看電視劇《大時代》,裡面講炒股要追「勢」,將股票的波動曲線析構成一個個的「勢」的作用結果。通過對股票波動曲線的研究,分析出每個「勢」的大小和周期,以此漲勢則買入,跌勢則賣出,無往不利。然而單看這麼一根根屌絲一樣的曲線,我是沒有辦法得到振幅和頻率的具體數值,我甚至連有幾個正弦波都看不出來。理論是美好的,現實是殘酷的,我斷然沒有這方面的才能,所以不敢踏入股市。就如同我知道一點點概率論的知識(投入值大於期望值八成會虧本),就不敢買彩票一樣。
加大正弦波的振幅,加快正弦波的頻率,可以生成類似下面這樣的圖像:
是不是感覺有點亂糟糟的,還可以更亂嗎?當然可以!
看看函數:y = fract(sin(x)*1000000.0)。fract是對實數忽略整數位只取小數位的操作。這個函數的圖像如下:
這個函數的用處就是為了生成隨機數。當然真正大神寫的隨機數生成的函數是:
y = fract(sin(x*12.9898)*43758.5453123)。
至於為什麼設置12.9898和43758.5453123這兩個常數值,我也不知道呀!大神的思維不是我等凡人所能理解的,我只知道如果設置了其他數,生成的數值可能就不夠隨機了。
(二)二維三維......
題主提到的方程是個二元方程,對應的圖形是個二維圖形。我們先從簡單的來講:
函數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,原來它是這個樣子的:
加點偽彩顏色後,看讓去不會那麼讓人眼暈:
原來這貨是既圓又方,這圖像真讓人眩暈,如果那晚我能想像出這個函數的圖像,應該會很快再度安然入睡。。
方程sin(x) + sin(y) = 1的圖像:
方程sin(x) + sin(y) = 0的圖像:
如果再增加一維,函數變為:w = sin(x) + sin(y) + sin(z),這就有點難畫了。這是個三維函數,屬於體素數據,是個實心的。要看體素的內部數值,可以使用體繪製,但我只有顯示其切片的辦法。當然切片不一定是平面,可以用個曲面來切,將切到的數值以顏色的形式顯示出來。下圖為用一個半徑為40的球體切割函數w = sin(x) + sin(y) + sin(z),然後把數值轉化成灰度,得到的圖形:
灰度圖看著不爽,加點偽彩顏色瞧瞧:
球看著也不爽,既然z = sin(x) + sin(y)可以生成一個平面地形高度圖形,那麼就可以用w = sin(x) + sin(y) + sin(z)生成一個星球高度圖形:
如果你們還想知道四元及以上的可視化效果,諸如:k = sin(x) + sin(y) + sin(z) + sin(w),我也沒辦法啊!四維世界的險惡,我做為三維世界的生物根本看不到,也想不懂。
(三)sin(x2)+sin(y2)=1
話題回到問題中的方程上。先看函數y = sin(x2),我們可以很容易畫出它的圖像:
然後將一元變數的函數擴展到二元變數:z = sin(x2)+sin(y2)
可以將該函數以地形高度圖的方式進行顯示:
然後用平面z = 1橫切該地形,就可以得到方程sin(x2)+sin(y2)=1的圖像:
不過我更願意將z轉化成一個像素值而不是高度值,下圖為將z轉化成灰度值生成的一幅黑白圖像:
可以將z = 1的區域用紅色標識一下:
既然是灰度值,就可以對其做偽彩調色,以生成更漂亮的彩色圖像:
再增加一維,函數變為:w = sin(x2) + sin(y2) + sin(z2)。下圖為用一個半徑為10的球體切割得到的圖形:
最後,大家想不想看看方程sin(x2)+sin(y2)+sin(z2)=1的圖形效果?圖形中含有很多可愛的激凸喲!
當然也有方程sin(x2)+sin(y2)+sin(z2)=0的圖形效果,密集恐懼症患者的福利:
推薦閱讀:
※函數用法這樣記,要想忘了有點難
※VFP命令、函數及程序語句大全
※學會十個常用函數,助你成為辦公高手
※Python 基礎系列--函數
※TRANSLATE: 自定義Excel字元替換函數