目錄

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

計算數學入門系列 - 線性代數問題(二)



上面這個例子,我們考慮一個2X2 的矩陣,矩陣內每一個元素都是1。由於這個矩陣的兩橫行相等,在計算時,程式就會跟我們說這方程組並不何解。


對於MATLAB 來說,最神妙(不是之一)的內置程式,就是這個「\」,用法是


>> x=A\b;


這個計算裏面,並不會計算A的逆。這個表達式要求程式找出x 令到A乘以x等於右手邊的向量b。MATLAB 會根據A的特性用不同的方法把一個答案找出來[1]。 自己以往做過一些問題,需要解決的方程組非常巨大也異常複雜,運用其他譬如說C++ 的軟件,根本沒有辦法把方程組的答案找出來。還是需要用到MATLAB 這個神奇的內置程式。網上有人指出,這個backslash 內置函數可能有高達25萬行的程式[2]。因為裏面考慮到那麼多不同的情況,而每一個情況用到的計算方法也比較專業,所以甚至乎你跟我說程式裏面其實有一百萬行,自己一點也不會驚訝。由於這個「秘密武器」,自己也漸漸少用了FORTRAN/C/C++ 的這些編寫程式語言,而越來越多使用MATLAB。


雖然這個內置函數非常強大,但是在研究裏面反而會帶來一點困擾。由於我們很多時候都希望自己做出來的研究成果可以比其他人複製(就是所謂的reproduceable),如果其他研究員並不是使用統一編程語言,有機會沒有辦法再次做出我們在論文裏面提到的結果。所以有些時候,我們反而不希望太過倚賴這個函數。


要避免這個倚賴,有些時候我們就需要仔細考慮矩陣A 的一些特性,去使用其他的計算方法解決這個線性代數問題。在本科生的課程,數值分析的這門課裏面,我們就會介紹幾款經典的迭代方法(Iterative Methods) 去把問題的近似值找出來。在實質應用上,我們一般都不會使用這些經典的方法,可是他們也可作為入門,讓我們了解如何設計一些好像(Preconditioned) Conjugate Gradient 或者Multigrid 等等的新的迭代方法。仔細的也不會在這裏討論有興趣的同學可以看看上面的參考書。MATLAB 裏面也有不同的程式,包括了minres, gmres, fft, pcg 等等的方法。雖然很多時候效果沒有「\」那麼好,可是在使用上我們可以有多一點的控制。


留言