出于興趣,出于工作,一直很努力地看數(shù)學,可是,骨頭難啃啊。這幾天工作需要看了下JPEG編解碼的東東,DCT(離散余弦變換)的公式看了很多回,可是怎么由它用到程序中去?看了TI的IDCT代碼,搜了一下,原來還有像FFT(快速傅里葉變換)的蝶式快速算法?墒窃趺磽Q算過來的呢?搜到了相關(guān)論文來看,還是一頭霧水。
現(xiàn)在越來越后悔以前在校時為什么沒好好地學好數(shù)學?前幾年自考自己狠心地啃了好幾年,雖小撿了一下,但是還覺得遠不足用,F(xiàn)在的我一直苦惱,應該先深入哪一科先呢?性代?概率?統(tǒng)計?幾何?微積分?其實是一科扣一科,可能還得先從廣到深吧。
數(shù)學思維到計算機的機器思維,我覺得會有幾點比較難的:
1,如何從連續(xù)變到離散?
2,如何從復數(shù)或?qū)崝?shù),變成浮點,甚至整數(shù)?
3,如何優(yōu)化性能,以達到軟件跑得更快?或者簡化到可以放到FPGA之類的地方也能用?
學數(shù)學不只是公式,還要考慮應用,像一維的時候就是一段波,像音頻,那用到二維的時候呢?像圖像。三維又是如何?3D處理現(xiàn)在也很流行了。
學這些一下很難看到效果,成就感很難體現(xiàn)出來,為了給自己一點動力,也算是看看別人的一些學習方法,看了些文章。
######## 以下摘自 http://blog.csdn.net/mpzsw/article/details/6857128 ######
寫程序需要數(shù)學嗎?要看程序的目的?那我們就像討論一個簡單的程序,算出1加到100的總和。完全以程序結(jié)果為導向的人,或是訓練有素的程序女/男工,甚至有時連我都會直覺地寫出這樣的程序: - int sum = 0;
- for(int i=1; i<=100; i++)
- {
- sum += i;
- }
上面這個程序片段還算很容易讓人一眼就看懂,可是我們明明高中時就學過了這種數(shù)列級數(shù)的算法了,怎么還會寫出上面這么笨的程序呢? int sum = ((1 + 100) * (100 - 1 +1)) /2; //或更精簡的int sum = (101 * 100) >> 2; …… 為什么Google會這么重視算法和效率?應該說世界級的大公司都重視,Yahoo、微軟、YouTube…,因為你寫的程序不是給幾十個人、幾百個人用而已。而是同一時間有幾百萬,甚至上千萬人使用。一個人慢0.1秒好了,一百萬人就10萬秒,超過一天耶。瀏覽一個網(wǎng)頁,慢幾秒鐘你都不能忍受了,更何況是一天。你說能不計較算法和效率嗎?
#####################
看到上面的例子,我突然發(fā)現(xiàn),原來小學時學的速算對我們來說還是相當有用的,一個循環(huán)你哪怕優(yōu)化到匯編級別也比不過小學生的一個速算公式。
其實學哪個東西一開始都很難,就像我第一次學計算機時,看程序代碼,看那些原理就像看天書一樣,可是現(xiàn)在比看小說還輕松(當然算法的除外)。其實,學數(shù)學也同理,現(xiàn)在可能難,但是我相信不出幾年后我看到一堆的數(shù)學公式和符號也像現(xiàn)在看程序代碼一樣輕松自如。
下面這文章也不錯:
http://www.cnblogs.com/qdsa/archive/2011/03/12/1982255.html
下面這個圖是有些嚇人,但是,自己心里有數(shù)就是了。
http://dl.iteye.com/upload/attachment/0054/8180/ef4bdd64-81f6-3bdd-8fc3-7943db7c5e0b.png
|