藝術真得很難嗎?也許如同編程同樣容易。我寫了一套軟件,其功能是經過輸入數學方程式,生成藝術圖像。一提到數學有人可能會發怵,這裏請不要擔憂,生成混沌的數學公式大都非常簡單,基本上只用加、減、乘、除、餘、正弦、餘弦這七種運算。說到數學,在我內心也留有一大片陰影,別問我陰影面積有多大,由於我算不出來。依然記得當年的數學考試,每次其最後一道BOSS題,我是歷來沒有作出來過。再說高等數學的微積分,十年前我學得還算能夠,但應付完考試就被廢了。而如今文檔論文上的公式大多都要整幾個微積分來提升逼格,我一看到就怵。幾年前參加一個面試,問我如何求橢球面上任意兩點的距離,我就說你在橢球上給這兩點穿個洞,兩點的距離就是其直線距離。前些日子我讀小說三體,因而也研究了下三體,並寫了兩個關於三體和N體的小程序。只是我寫的程序其精確性是不夠的,由於沒有使用微積分。原本打算重學下高數,並專門從故紙堆裏翻出了當年大學時的高數課本,結果到如今也沒翻過幾頁。面試
好吧有些跑題了,再拉回來談混沌。什麼是混沌?數學上的混沌和莊子所說的混沌,雖有類似之處但不是一個東西。個人理解是:混沌就是不肯定性。你可能知道混沌公式生成值的一個範圍,但難以得知其具體爲什麼值。如何實現這種不肯定,有兩種辦法,一個是隨機,另外一個是迭代。算法
先講隨機,我曾思考過一個問題:世上有真正的隨機嗎?個人結論是:莫須有。我對隨機的理解是:沒法明確計算,它是肯定的反義。先說計算機中的隨機數rand(),你們都知道這其實是僞隨機數。只有隨機數種子不變,其生成的隨機數就是固定的。有個關於隨機的實驗叫沙丘實驗,它是從密封空間中的一點向下滴沙粒,其結論是沒法得知哪個沙粒落下後會形成沙丘的崩塌。並有人說沙粒間的碰撞計算量是隨沙粒數目呈指數增加的。但計算量大並不表明能形成隨機,也許哪天技術一進度,這就能計算出了呢。再說,用數學的推演法看,兩個沙粒的碰撞計算是肯定的,那麼3個沙粒的碰撞計算也是肯定的,從而N個沙粒的碰撞計算亦是肯定的。比沙粒更微觀的實驗是布朗運動,它是粒子在液體中隨機的運動,但這粒子的運動依然是與其受力有關,因此理論上也是可計算的。再微觀到雪花的生成,空氣中的一堆水分子,如何組成雪花。雪花自己就是一個隨機的東西,聽說兩片雪花徹底相同的機率是一個天文數字分之一,我不知道若是兩片雪花生成時全部的參數都一致,其形態是否徹底相同。最後微觀到原子及量子物理,原子核中電子在質子周圍出現,沒有明確的軌跡,彷佛是隨機。可目前不知道其軌跡規律,不表明它沒有。卻是數學上每個無理數其後面出現的數字應該是隨機的。編程
再講迭代。迭代的意思是本身的輸出再作爲本身的輸入。記得第一次知道迭代是在大學時上的一門課,課名彷佛叫工業控制。我連課名都記不清了,可見對這課講的什麼知識已經全忘了。可是對迭代卻頗有印象,本身的輸出再作爲本身的輸入,這在當時的我看來這有違倫禮,有背道德啊。這不如同本身產的米田共本身再吃了嗎,毀三觀啊,有木有!另外一個讓我以爲毀三觀的是:遞歸,本身調用本身Abnormal。後來,經歷了歲月的洗禮後,對迭代和遞歸也就習覺得常了,在這個YChaos軟件中,混沌的生成就是用的迭代,而數學表達式的解析算法用得則是遞歸。一般咱們用的數學公式是線性的,而有了迭代則出現了非線性數學。如函數x=sin(t+1.0)這是線性的函數,只要給定t值,x值就能夠明確獲得。而函數x=sin(x+1.0)則是非線性的,由於將這個函數迭代執行若干次後,若是不一步一步地計算,鬼才知道是什麼結果。小程序
最後說下藝術,我認爲只要以爲好看就是藝術。這算是比較輕鬆的,我搞混沌算法就是爲了生成些漂亮的圖像。我不關心洛倫茨的蝴蝶線圈怎麼就和天氣有了關係,也不想了解爲何邏輯斯蒂映射圖和生育繁殖有毛關係,我只生成藝術圖像。函數
混沌圖像:spa
01洛倫茨吸引子3d
02陳氏吸引子orm
03呂陳吸引子blog
04蔡氏電路遞歸
05拉比諾維奇-法布里康特方程
06非線性電路電容中的混沌控制系統
07杜芬方程
08若斯叻吸引子
09二維離散電路混沌系統
10三體
11玫瑰線
12圓內旋輪線
13圓外旋輪線
14三翅鷹
15國王映射
16馬丁迭代
17SinAddCos
18SinMulCos
19SinSubCos
20隨機
21謝爾賓斯基
22邏輯斯蒂映射
23曼德勃羅映射
24正弦映射
25標準映射
26標準方程
27埃農映射
28德容吸引子
29Julia
30五星
這裏先提供個YChaos軟件下載地址和基本使用操做。詳細的使用手冊容我之後再寫。
軟件下載地址:http://files.cnblogs.com/files/WhyEngine/YChaos.zip
雙擊"YChaos圖像生成軟件.exe"啓動軟件.
軟件有兩種模式:編輯模式與圖像生成模式。默認打開時爲編輯模式,鍵盤F1用於兩種模式的切換。鍵盤F2用於切換到圖像生成模式,並進行圖像生成處理。鼠標右鍵拖動用於設置視口位置,滾輪用於視口的縮放。按下鍵盤F,會自動設置成最佳視口。按下鍵盤X則設置成默認大小的視口,這可以使圖像處於其原始大小顯示。
文件夾"images"中存放各類生成圖像的配置文件。鼠標將某一配置文件拖入到軟件中,便可打開文件。也能夠經過菜單項中的文件->打開配置文件...來進行文件選擇打開。亦可使用快捷鍵CTRL+F來加載配置文件。
打開某個配置文件後,會切換入編輯模式。按下F2會切換到圖像生成模式並生成混沌圖像。