方法/步驟
數學形式
Hilbert矩陣是壹種著名的“壞條件”矩陣。該矩陣的元素的數學表達式是a(i,j)=1/(i+j-1)。下面就展示壹下五階的Hilbert矩陣的數學表示形式。
用for循環生成Hilbert矩陣
下面我們就根據數學表達式,借助for循環生成Hilbert矩陣,具體的運算代碼和結果如下圖所示,為了和第壹步中數學表示形式的Hilbert矩陣做比較,本次計算也選擇5階。
矩陣空間預配置可提高運行速度
在對矩陣的運算中,對矩陣空間進行預配置可以提高運行速度,尤其對高階矩陣的運算速度影響明顯。我們可以通過計時函數tic和toc進行驗證。tic表示計時開始,toc表示計時結束。圖壹為不進行矩陣空間預配置所用時間,為3.2464秒;圖二是進行矩陣空間預配置時計算所用時間,為0.072233。可以很明顯看出提高了運行速度。
向量化編程產生Hilbert矩陣
當我們采用向量化編程產生Hilbert矩陣時,可以大大提高運行速度,所以在平時編程時應盡量采用向量化編程,但須對matlab有較高的認知。如圖所示所用時間為0.031616秒,所用時間比前兩種都短。
用matlab自帶函數eig計算
這裏我們用matlab自帶的產生Hilbert矩陣的函數hilb(n)計算壹下。所用的時間為0.003173秒。可以看出所用的時間最短,所以在編程時我們應該盡量使用matlab已經有的相應功能的函數,如實在找不到在自己變。這樣可以節省計算時間。
希爾伯特矩陣的逆
此外matlab還自帶有求希爾伯特矩陣的逆的函數invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。我們看壹下,具體代碼和結果如下圖。有圖可以看出用時還是比較短的。
END
註意事項
本經驗中計算所用的時間受電腦配置、matlab版本、該程序是否首次運行等因素影響,其結果會有所變化。