相关文章推荐
酒量小的薯片  ·  c - EVP_PKEY_keygen() ...·  1 年前    · 
沉着的水桶  ·  springboot -- ...·  1 年前    · 
纯真的仙人掌  ·  谈谈 JavaScript ...·  1 年前    · 

数学形式

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