當前位置:編程學習大全網 - 編程語言 - 如何利用matlab創建Hilbert矩陣

如何利用matlab創建Hilbert矩陣

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

方法/步驟

數學形式

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版本、該程序是否首次運行等因素影響,其結果會有所變化。

  • 上一篇:表白情話壹籮筐
  • 下一篇:射手座編程
  • copyright 2024編程學習大全網