如何利用matlab创建Hilbert矩阵

作者:神奇的周 | 创建时间: 2023-04-16
希尔伯特矩阵(Hilbert matrix)是一种数学变换矩阵,正定,且高度病态(即,任何一个元素发生一点变动,整个矩阵的值和逆矩阵都会发生巨大变化),病态程度和阶数相关。在线性代数中,希尔伯特矩阵是一种系数都是单位分数的方块矩阵。...
如何利用matlab创建Hilbert矩阵

操作方法

数学形式 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阶的希尔伯特矩阵的逆矩阵。我们看一下,具体代码和结果如下图。有图可以看出用时还是比较短的。

温馨提示

本中计算所用的时间受电脑配置、matlab版本、该程序是否首次运行等因素影响,其结果会有所变化。
点击展开全文

更多推荐