MATLAB如何使用invhilb函数创建逆Hilbert(希尔伯特)矩阵

2020年12月18日14:39:05MATLAB如何使用invhilb函数创建逆Hilbert(希尔伯特)矩阵已关闭评论

MATLAB如何使用invhilb函数创建逆Hilbert(希尔伯特)矩阵

【语法说明】

Y=invhilb(n):生成n阶Hilbert矩阵的逆矩阵。

【功能介绍】对n阶的Hilbert矩阵求逆矩阵。Hilbert矩阵接近奇异阵,属于病态矩阵,直接使用inv函数会带来较大误差。

【实例】使用invhilb函数生成一个5阶的逆Hilbert矩阵,再使用inv函数求5阶Hilbert矩阵的逆矩阵,在Hilbert矩阵上添加轻微扰动,再求其逆矩阵作为对比。

>> d=invhilb(5)  % 5阶Hilbert矩阵的逆矩阵

d =

25  -300  1050  -1400  630

-300  4800 -18900  26880 -12600

1050 -18900 79380 -117600  56700

-1400 26880 -117600 179200 -88200

630 -12600 56700 -88200  44100

>> s=inv(hilb(5)) % 普通求逆方法求5阶Hilbert矩阵的逆矩阵

s =

1.0e+005 *

0.0002 -0.0030 0.0105 -0.0140 0.0063

-0.0030 0.0480 -0.1890 0.2688 -0.1260

0.0105 -0.1890 0.7938 -1.1760 0.5670

-0.0140 0.2688 -1.1760 1.7920 -0.8820

0.0063 -0.1260 0.5670 -0.8820 0.4410

>> mse(d-s)  % 两者相差很小,w约等于s

ans =

1.0419e-015

>> s=inv(hilb(5)+rand(5)*0.0000001) % 给 Hilbert矩阵添加e-7强度的扰动

s =

1.0e+005 *

0.0003 -0.0030 0.0106 -0.0141 0.0063

-0.0030 0.0483 -0.1901 0.2704 -0.1268

0.0106 -0.1901 0.7984 -1.1827 0.5702

-0.0141 0.2705 -1.1828 1.8018 -0.8866

0.0063 -0.1268 0.5703 -0.8867 0.4432

>> mse(d-s)    % 添加扰动后,d与s相差很大

ans =

1.1558e+005

【实例讲解】Hilbert 矩阵属于病态矩阵,在这个实例中,给 5阶 Hilbert 矩阵添加 rand(5)*0.0000001 作为随机扰动,求得的逆矩阵就与正确的逆矩阵产生了10 数量级的均方误差。

  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。