Hilbert矩阵病态性分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Hilbert矩阵病态性分析
200820303013 王刚
一、问题叙述
Hilbert矩阵是著名的病态矩阵,用迭代法解矩阵方程时,如果系数矩阵是Hilbert矩阵,则求解结果误差较大。

本文就研究Hilbert矩阵的病态性,和Hilbert 矩阵的阶数与迭代求解误差大小的关系。

二、问题分析
MATLAB中有专门的Hilbert矩阵及其准确逆矩阵的生成函数,从而可以通过MATLAB求解出系数矩阵是Hilbert矩阵的矩阵方程比较准确的解,再根据条件数估计求解误差的大小。

三、实验程序及注释
m=input('input m:='); %输入矩阵的阶数
N=[m];
for k=1:length(N)
n=N(k); %矩阵的阶
H=hilb(n); %产生n阶Hilbert矩阵
disp(H) %输出n阶Hilbert矩阵
Hi=invhilb(n); %产生完全准确的n阶逆Hilbert矩阵b=ones(n,1); %生成n阶全1向量
x_approx=H\b; %利用左除H求近似解
x_exact=Hi*b; %利用准确逆Hilbert矩阵求准确解
ndb=norm(H*x_approx-b);nb=norm(b);
ndx=norm(x_approx - x_exact);nx=norm(x_approx);
er_actual(k)=ndx/nx; %实际相对误差
K=cond(H); %计算Hilbert矩阵的条件数
er_approx(k)=K*eps; %最大可能的近似相对误差
er_max(k)=K*ndb/nb; %最大可能的相对误差
end
disp('Hilbert矩阵阶数'),disp(N)
format short e
disp('实际误差 er_actual'),disp(er_actual),disp('')
disp('近似的最大可能差 er_approx'),disp(er_approx),disp('') disp('最大可能误差 er_max'),disp(er_max),disp('')
四、实验数据结果及分析
程序运行后,输入矩阵阶数4时的输出为:
input m:=4
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
Hilbert矩阵阶数
4
实际误差er_actual
1.0284e-013
近似的最大可能误差er_approx
3.4447e-012
最大可能误差er_max
4.7732e-011
当输入不同的矩阵阶数时,误差大小如表1所示。

表1 误差数据
五、实验结论
对于高阶系数矩阵来说,如果系数矩阵是Hilbert矩阵,则迭代结果误差较大,而且阶数越大,误差就越大。

相关文档
最新文档