首頁 > 其他

如何利用matlab建立Hilbert矩陣

2019-12-25 20:52:13

    希爾伯特矩陣(Hilbert matrix)是一種數學變換矩陣,正定,且高度病態(即,任何一個元素發生一點變動,整個矩陣的值和逆矩陣都會發生巨大變化),病態程度和階數相關。線上性代數中,希爾伯特矩陣是一種係數都是單位分數的方塊矩陣。


1

數學形式

    Hilbert矩陣是一種著名的「壞條件」矩陣。該矩陣的元素的數學表示式是a(i,j)=1/(i+j-1)。下面就展示一下五階的Hilbert矩陣的數學表示形式。


2

用for迴圈生成Hilbert矩陣

    下面我們就根據數學表示式,借助for回圈生成Hilbert矩陣,具體的運算程式碼和結果如下圖所示,為了和第一步中數學表示形式的Hilbert矩陣做比較,本次計算也選擇5階。


3

矩陣空間預設定可提高執行速度

    在對矩陣的運算中,對矩陣空間進行預設定可以提高執行速度,尤其對高階矩陣的運算速度影響明顯。我們可以通過計時函數tic和toc進行驗證。tic表示計時開始,toc表示計時結束。圖一為不進行矩陣空間預設定所用時間,為3.2464秒;圖二是進行矩陣空間預設定時計算所用時間,為0.072233。可以很明顯看出提高了執行速度。



4

向量化程式設計產生Hilbert矩陣

    當我們採用向量化程式設計產生Hilbert矩陣時,可以大大提高執行速度,所以在平時程式設計時應盡量採用向量化程式設計,但須對matlab有較高的認知。如圖所示所用時間為0.031616秒,所用時間比前兩種都短。


5

用matlab自帶函數eig計算

   這裡我們用matlab自帶的產生Hilbert矩陣的函數hilb(n)計算一下。所用的時間為0.003173秒。可以看出所用的時間最短,所以在程式設計時我們應該盡量使用matlab已經有的相應功能的函數,如實在找不到在自己變。這樣可以節省計算時間。


6

希爾伯特矩陣的逆

    此外matlab還自帶有求希爾伯特矩陣的逆的函數invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。我們看一下,具體程式碼和結果如下圖。有圖可以看出用時還是比較短的。



IT145.com E-mail:sddin#qq.com