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 5 数量级的均方误差。