数值分析实验报告——Hilbert矩阵的求解
发布时间:2022-10-15 21:49:49
数值分析课程实验报告题目:病态线性方程组的求解理论分析表明,数值求解病态线性方程组很困难。考虑求解如下的线性方程组的求解Hx = b,期中H是Hilbert矩阵,H(hijnn,hij1. 估计矩阵的2条件数和阶数的关系 2. 对不同的n,取x(1,1,1,i,j = 1,2,…,n ij1,1n,分别用Gauss消去,Jacobi迭代,Gauss-seidel迭代,SOR迭代和共轭梯度法求解,比较结果。 3. 结合计算结果,试讨论病态线性方程组的求解。
解答过程
1.估计矩阵的2-条件数和阶数的关系
矩阵的2-条件数定义为:Cond(A2A2A12,将Hilbert矩阵带入有:
Cond(H2H2H1
2调用自编的Hilbert_Cond函数对其进行计算,取阶数n = 50,可得从1阶到50阶的2-条件数,以五位有效数字输出,其中前10项见表1。
表1.前十阶Hilbert矩阵的2-条件数
阶数 2-条件数 阶数 2-条件数
1 1 6 1.4951e+007 2 19.281 7 4.7537e+008 3 524.06 8 1.5258e+010 4 1.5514e+004 9 4.9315e+011 5 4.7661e+005 10 1.6025e+013 从表1可以看出,随着阶数每递增1,Hilbert矩阵的2-条件数都至少增加一个数量级,但难以观察出明显的相依规律。故考虑将这些数据点绘制在以n为横轴、Cond(H)2为纵轴的对数坐标系中(编程用Hilbert_Cond函数同时完成了这个功能),生成结果如图1。
1 / 7
图1.不同阶数下Hilbert矩阵的2-条件数分布
由图可见,当维数较小时,在y-对数坐标系中Cond(H)2与n有良好的线性关系;但n超过10后,线性趋势开始波动,n超过14后更是几乎一直趋于平稳。事实上,从n = 12开始,系统便已经开始提出警告:“Warning: Matrix is close to singular or badly scaled.Results may be inaccurate.”。也就是说,当n较大时,H矩阵已经接近奇异,计算结果可能是不准确的。通过查阅相关资料,我找到了造成这种现象的原因:在matlab中,用inv函数求条件数过大的矩阵的逆矩阵将是不可靠的。而调用系统自带的专门对Hilbert矩阵求逆的invhilb(n)函数则不存在这个问题,生成结果如图2。
2 / 7
图2. 修正后的不同阶数下Hilbert矩阵的2-条件数分布
简便起见,取n不大于10的前十项进行线性拟合,结果如图3。
1E131E121E111E101E91E8 Cond(H Linear Fit of Sheet1 Cond(HCond(H1E7100000010000010000100010010101234567891011Cond(HCond(HInterceptSlopeEquationWeightResidual Sum of SquaresPearson's rAdj. R-Squarey = a + b*xNo Weighting0.052640.999850.99967Value-1.651831.47863Standard Erro0.055410.00893n
图3.1~10阶Hilbert矩阵2-条件数的线性拟合
由拟合结果知,Cond(H)2与n的关系为:
其线性相关系数r=0.99985,可见二者具有较好的线性关系。对上式稍作变形得:
lgCond(H21.651831.47863nCond(H2101.651831.47863n
这就是对Hilbert矩阵的