文章

顯示從 2月, 2021 起發佈的文章

目錄

20200718 想法源起 20200719 我們在做什麼(一) 20200722 我們在做什麼(二) 20200725 竟然成為數學家(一) 20200729 竟然成為數學家(二) 20200801 竟然成為數學家(三) 20200805 不同職級(一) 20200808 不同職級(二) 20200812 趕客系列(一)為什麼讀大學? 20200815 趕客系列(二)不同大學學位跟工作的關係 20200819 趕客系列(三)大學的目的 20200822 趕客系列(四)大學為什麼要有主修 20200826 趕客系列(五)要挑選一個什麼樣的主修 20200829 沒有無緣無故的恨(一) 20200831 科普系列 - 數學與電影動畫製作(一) 20200902 沒有無緣無故的恨(二) 20200905 沒有無緣無故的恨(三) 20200907 科普系列 - 數學與電影動畫製作(二) 20200909 終身職位的評核 20200912 學術界吸引人的地方 20200914 科普系列 - 數學與電影動畫製作 (三) 20200916 學術界辛苦的地方(一) 20200919 學術界辛苦的地方(二) 20200921 科普系列 - 數學與電影動畫製作 (四) 20200923 大學的讀書成績有多重要 20200926 本科生研究機會 20200928 科普系列 - 數學與圖像修復(一) 20200930 用創新的方法去教育科學 20201003 參加研討會的重要 20201005 科普系列 - 數學與圖像修復(二) 20201007 教授與教學 20201010 研究是什麼(一) 20201012 科普系列 - 數學與圖像修復(三) 20201014 研究是什麼(二) 20201017 研究是什麼(三) 20201019 科普系列 - 數學與圖像修復(四) 20201021 如何閱讀研究論文 20201024 研究生應該修什麼課 20201026 科普系列 - 數學與圖像修復(五) 20201029 本科生的多主修多副修 20201102 科普系列 - 數學與數獨(一) 20201105 幾位教授(一) 20201109 科普系列 - 數學與數獨(二) 20201112 幾位教授(二) 20201116 科普系列 - 數學與數獨(三) 20201119 幾位教授(三) 20

YouTuber系列 - 用數學拍電影(中)

圖片
  介紹一下如何用數學的方式繪畫動畫。 開始編寫程式前需要一些什麼數學? #數學 #動畫 #STEM #STEMEducation #MATH #Science

計算數學入門系列 - 數值表示方式(三)

圖片
  另外一個比較特別的,是可以看到在電腦裏面可以表示的數字並不是平均分布。上面我們可以看到在0.0 旁邊的數字,要比在1.0旁邊的密 (距離1.0 最近的數字所差距只有大約\(10^{-7}\))。 而這個在1.0附近的數字密度就大大影響着所有在電腦裏面計算的準確度。 想像一下,如果我們要計算x+y = x (1+y/x),如果y/x 是少於 \(\epsilon\),電腦將無法把1+y/x 準確計算出來。所以x+y就等於x。 由於上面這兩個關於數值分布的特性,在我們編寫程式時有些時候也要特別留意。其中一個例子是同學在編寫偏微分方程的數值解的時候,有時會出現下面的情況。 (下面用到的,是一些MATLAB 的程式,在其他編程語言裏面問題也差不多。) finalT=…; N=…; % number of time iterations dt=finalT/N; time=0; while (time~=finalT)       time=time+dt;       … end 上面這個結構,很多時候我們在解決跟時間有關的偏微分方程時都會用到。我們希望找到在finalT 時候的數值解。由於一些穩定性的要求,我們必須把從開始的時間到最後時間分隔成N分,然後也要把中間的所有數值解也找出來,而時間與時間之間的相隔用dt 來表示。 這個程式的問題是在於time 這個variable 會不斷改變,而這個不斷改變的time,我們會期待在N次運算以後剛好等於finalT,然後中間的while-loop 就會完成。這個疊代 (Iteration)過程完結以後,我們得到的數值解就是我們希望找到的答案。可是由於數字很可能無法被正確表示,有可能time 和finalT 是沒有辦法相等的。然後,這個程式就loop 死了。 那有什麼辦法解決呢?方法有很多,既然已經知道需要做N次疊代,為什麼不用它作為疊代 的index 呢? finalT=…; N=…; % number of time iterations dt=finalT/N; time=0; for i=1:N       time=time+dt;       … end   另外還有些情況,穩定性的要求有機會需要隨着時間而有所改變,這樣子我們就沒有辦法在程式開始時知道必須要做多少次的疊代,上面這個問題就需要有其他的解決方法。 fin

YouTuber系列 - 用數學拍電影(上)

圖片
介紹一下如何用數學的方式繪畫動畫。 #數學 #動畫 #STEM #STEMEducation #MATH #Science

計算數學入門系列 - 數值表示方式(二)

圖片
通常我們介紹這些實數的標示方式,開始時都會用single precision 作為切入,如果同學有用C/C++, 在設定variable 的時候就會用到float 這一個class ,如果還有人在寫FORTRAN,用的就是real 這一個class。Single precision 只會用4 bytes (32 bits,意思就是說會用32個0或者1) 去代表一個實數。 表示的方式,會是 \( (-1)^s 2^{e-127} 1.f\)。s代表Sign,是32 bits 裏面的第一個bit,用來代表這個數字是正數還是負數,0 代表正數,1代表負數。 然後的1 byte = 8 bits 是e (代表exponent),會先化為一個整數, 再減去127。 剩餘的23 bits,叫作mantissa,每一個bit 的數值會用二進制小數點的數位值慢慢遞減。 例如,這23bits 裏面的第一個bit, 數位值就是½,第二bit 的數位值就是¼,如此類推。 如果e=0,無論s 或者f 是什麼,數值所代表的都是實數0.0。而如果\(e=11111111_{(2)}=255_{(10)}\),情況就有點不同。如果f=0,數值所代表的就是正無限大或是 負無限大 (根據s 是等於0還是等於1)。而如果f 是其他東西,就是同學最不知所措的NaN (Not A Number)。 通常這些情況,就很可能是同學在編寫程式時有Bug。中間一定有一些在編程時的問題。 舉個例子,\( 1.0 = (-1)^0 2^{127-127} 1.0\) 在single precision 裏面的表示方式是, \[0 01111111 000000000000000000000000000。\] 那麼,最接近0的正實數是那一個數字呢? 由於e不可以是0,我們要找的這個數字 的數值表示方式是 \( (-1)^0 2^{1-127} 1.0 = 2-126_{(10)}\),大約等於\(1.2\times10^{-38}\)。另外一個有趣的問題,是問,最接近1 而又比1大的實數是那一個數目字。 這個數字的數值表示方式是 \[0 01111111 000000000000000000000000001。\] 把它換回十進制,我們得到 \( (1+2^{-23})_{(10)}\) 。 因為這一個數值\(2^{-

面試要準備什麼(三)

圖片
通常面試最後一部份,我們都會問一下申請人對我們有沒有什麼問題。通常這個問題是在整個面試裏面對申請人來說最困難的一個部份。如果申請人的問題過於表面和簡單,我們就會知道他對我們認識不深。為什麼會對我們認識不深呢?就是因為他對我們根本毫無興趣,根本不知道自己在申請一些什麼東西。如果申請人的問題聽起來毫無關連,我們就會知道他根本是在找事情發問,讓我們以為他對這個職位或者學系非常有興趣。所以同學如果需要面試,也可以花一點時間想一想有沒有一些問題你在網頁上會找不到答案的。如果真的有,不妨在面試這一部份提出。這個問題可能會令我們對你的印象完全改觀。當然如果真的沒有,就說沒有就可以了。不要為問而問。 最後講一些比較特別的面試,是在申請助理教授(Tenure Track Assistant Professor)的安排。這個同學可能未必了解。去年自己得到學系的信任,把我加入了Search Committee,幫忙挑選合適的申請人加入數學系這個大家庭。這幾年裏面,可能平均每年會收到大約200個來自世界各地的申請。這個委員會首要的工作是從這些申請表裏面挑選一些研究出色的研究員,他們可能是剛剛博士畢業,可能是經歷過了幾年的博士後。我們需要從海量的申請人裏面挑選一些研究成果出色而且有機會成為獨當一面學者的申請人進行面試。 首先講一下面試的過程。自己在美國博士後的時候,也申請了美國一些大學的助理教授職位。曾經到過New Jersey和Texas的兩間大學進行面試。面試的過程非常疲累,通常整個過程將會是三天兩夜,第一天可能是下午開始,會跟一些學系裏面的教授吃個飯,聊一下天。第二天將會由早上早餐開始到晚上晚飯不斷跟人聊天,做報告,講解研究。你會有機會跟學系裏面每一位教授講解自己的研究課題,也聽一下他們對什麼研究項目有興趣。你亦都會有時間做一個學術報告,跟全學系的人介紹自己的研究成果。他們會發問很多問題看看你對這些研究項目有多了解。也看看你是否有能力成為一個獨立的研究人員,是否不需要再依靠自己的博士指導老師進行研究。這些學術討論我覺得並不是面試裏面最困難的地方,更困難和辛苦的是你需要在早餐午飯和晚飯時候不停跟他們聊天。通過這些對話,而學系裏面的其他教授亦可以通過這些聊天過程了解你是一個怎樣的人。這不單可以讓其他人認識到一些沒有寫在申請表上邊的你,你也可以更加認識這個學系、你將來可能一起工作的同事和生活

計算數學入門系列 - 數值表示方式(一)

圖片
在這一系列的文章裏面,我會嘗試簡單介紹一下在電腦裏面關於計算數學的一些不同問題,希望可以簡單的講一下如何入門。如果同學對計算數學有興趣,這系列的討論希望可以幫助到同學將來的學習和研究。 由於是比較專門的「入門」,所以這一個系列的文章可能需要同學對數學有多一點的基礎認識。當然我也會盡可能把問題說得簡單一點,不希望把很多同學都嚇跑。 作為入門的第一篇,應該要講一下計算數學的「起手式」。 所謂起手式,就是入門裏面的第一樣需要知道的知識。通常在大學應用數學課程裏面,第一門需要學習的就是「數值方法」。這門學科,就是講解如何運用計算機(真的是一部手提的計算機)或者電腦去幫我們解決一些在數學裏面的問題。這些問題的答案都會是數字。比如說,我們要電腦幫我們找f(x)=0 的解。在課程的第二章就會深入淺出有不同的方法去找出這個函數的根,然後再做一點分析,讓我們知道在什麼情況之下那一個方法可以更快的可以把答案找出來。如果我們要解決的問題,所需要的並不是一個數值的答案,而是一些更加像是人類解決代數問題的方法,那些符號計算(Symbolic Computation)的問題都不會在這個數值方法的課程裏面學得到。 等一下,上面提到的問題,是在數值方法的第二章,那麼第一章是什麼呢? 通常這一章同學都不會花太多時間留意,很多時候都不知道學習這一張內容的用處。當然其中一個原因是學期剛開始,同學還在挑選自己喜歡的課程,學期的第一二個星期,心情還沒有定下來,根本沒有留心我們講解這章的目的。講到這裏,以往有修讀過數值方法的同學可能還沒有把這一章節的內容回想起來。對,起手式就是說數字在電腦裏面是如何表達。我想大部份同學都知道,電腦是運用二進制去表示數字。所以對所有的正整數 (positive integers)來說,數值表示方式在中學時候可能已經有所接觸。問題是,那其他的數字呢?在大學數學課程裏面,我們學習到實數(Real Number) 有不可數那麼多(Uncountable Many), 電腦如何可以有一個方法去表示這些實數呢? 答案是,不可能。要知道電腦裏面我們只有有限的儲存空間,我們根本沒有辦法把不可數的那麼多數字全都放到電腦裏面去。所以我們就必須要有所挑選,要想像如何用有限的資源代表着大部份的數字。 這一章節聽起來好像真的沒有什麼用,對於現今的計算機或者電腦來說,怎麼可能有數字不可能被準確表示!不但

面試要準備什麼(二)

圖片
所以參與面試時,應該要有什麼準備,令到面試官更加認識自己呢? 首先講一下申請學系、學科或者獎學金的時候,你應該要準備什麼。第一,應該也是最重要的,是一個短短幾分鐘介紹自己的演說。你會說,我叫什麼名字,在那邊讀書,考了什麼DSE科目等等都已經在申請表上面明確顯示。那我是誰,你不是看得一清二楚嗎?為什麼還要我介紹。對,如果你只是跟我們報告你自己的名字,考試成績怎麼樣,這些其實你都真的不需要介紹了。可是,這樣子你就浪費了一個表現自己的機會。我們要聽的,並不是這些在申請表上面都已經清楚顯示的資料和數字,而是希望你跟我們說,你是一個怎樣的人,為什麼你對這個學科那麼大的興趣,為什麼你覺得自己有足夠的能力應付這個學科,為什麼我們需要取錄你。 有些時候,同學在自我介紹時會顯得一臉茫然,這個我會有點失望。這顯示出同學對面試毫無概念,根本不知道參與這個面試的目的是什麼。然後,亦有另外一些同學,花了很多時間,「過分準備」,滔滔不絕地講自己準備了幾分鐘的講稿。不是說這有什麼的不好,可是我自己對這些格式千篇一律的演講沒有太大興趣,同學在不斷演講的時候,我都會再打開申請書,想一想之後會有什麼問題發問。 第二,無論是申請JUPAS還是申請一個獎學金,在申請書上面你基本上都會需要填寫一些個人陳述(Personal Statement)。可能是,介紹一下自己,或者是講一下你得到這個獎學金以後如何貢獻社會,如何運用這筆金錢等等。由撰寫申請表,到面試中間可能已經經過了幾星期或者半年時間。所以我都希望同學可以在面試前,重新看一下自己的這些個人陳述。有些時候我們看見這些陳述裏面,同學可能說自己以前看過什麼什麼書籍,對某些理論非常有興趣。我們就會在面試時,問一下同學對這些理論的理解。有些時候,同學在陳述裏面提到以往的一些經歷,我們也可能對這些經歷有點興趣,會再跟同學聊一下這些經歷的背景,從而去了解同學從這些經歷裏面學習得到什麼。 有些同學在個人陳述裏面提到如果拿了這個獎學金會將金錢用在發展自己的社會企業裏面,我們就可能會問一下這個錢可以如何支持這個社企的運作,他的Business Model 是如何。如果同學在面試時對自己以往所寫的陳述毫無頭緒,這會給予我們一個非常不好的印象。 一般的面試,我們並不會收到一個問題庫,沒有人會告訴我們有什麼問題應該要問或者一定要問。每個面試官都有自己的風格和希望知道的事情。曾經

科普系列 - 計算科學不是計算機科學(三)

圖片
另外一個計算科學的特色,就是他的包容性非常強。就是說,同一個問題不同背景的人都可以有不同的研究方法和研究方向。自己也有做一些反問題(Inverse Problem)的研究。其中一個經常會拿出來介紹給同學的反問題例子,是在哈利波特電影裏面的一件神奇工具。話說哈利波特從父親那裏得到了一件隱形斗篷。披上了這個隱形斗篷,其他人就會直接看見斗篷後面的東西。所以對光線來說,原本直線行走的光線就會繞過斗篷外面進入觀察者的眼睛。如果我們知道附近環境的參數,可以有一個簡單的電腦方法找出光線的運動軌跡。數學上來說,這個叫做前向問題或者正問題(Forward Problem)。如何設計出這個隱形斗篷就是一個反問題。我們需要找出一些材料的特性令到光線可以沿着我們希望他走的路線運行。由於問題本身用了一條非線性偏微分方程模擬出來,找出這個反問題的答案,就需要運用了一些計算數學的技巧。我自己的背景,比較是希望設計出一些比較簡單的數值方法把問題找出來。所以對編寫程式的要求會高一些。同一個問題,純數學家也可以有他們的研究方法。數學系和高等研究院也有一位純數學家Prof. G. Uhlmann [ 1 ] 從數學理論出發,希望研究這個反問題的答案的存在性和唯一性。物理系也有陳子亭教授 [ 2 ],希望從實驗物理的角度出發,用計算科學的輔助,嘗試把這個東西做出來。 第三個計算科學的特色,我將它叫做可擴展性(Extensibility)。就是說雖然我是看着這一個問題設計了一些計算的工具,可是這個工具不一定只會在這個應用上面出現。所以我就可以發展一個具有自己特色的工具,嘗試把它由一個應用拓展到另外一個應用上邊。這個有點像金庸小說《天龍八部》裏面的「小無相功」[ 3 ] 。只要你有這一個內功心法,只需要多花一點點的時間,把外在的功夫練上一些,也就會好像精通了「少林派七十二門絕技」一樣,可以在各個領域上顯得很有本事。自己有一門研究範疇是去設計動態界面(Dynamic Interface)即表示方式(Representation)。其中一個例子,就是模擬多相流(Multiphase Flow),也就像是氣泡在液體流動的計算方式。由於氣泡在水裏面不斷移動,形狀也會因而改變。更困難的,是由於幾個氣泡可能由於運動關係聚在一起最終變成一個大的氣泡,一個大的起泡也可能因為在液體流動而分裂成好一些小起泡。所以如何找出一個簡單