文档详情

第3章线性方程组的直接解法1.ppt

发布:2017-12-30约1.41万字共155页下载文档
文本预览下载声明
若 足够小,使得 ,则 从而由 ,有 【注】 仅 或 有误差是(3.26)式中 或 的特例. 例16 已知方程组 中 若 解 由于 由式 , 比右端项的相对误差 扩大了2015倍. 时,估计解的相对误差. (3.25)有误差估计 例17 设在例15方程组中, 有扰动 =(0,0.00001)T , ,并说明 对解向量 的影响. 求得 ,则 , 这说明右端项向量 其分量的万分之一的变化,可能引起 有600%的变化,如果我们事先不作分析,其解 是严重病态矩阵,相应的方程组 试计算 解 由 解向量 就难以置信了.因此, 是病态方程组. 3.6.2 矩阵的条件数及其性质 , , 分别称为矩阵 的 -条件数、1-条件数和 常用的条件数有 2-条件数. 条件数的性质 时, (2) 当 对称正定时, ,其中, 和 分别是矩阵 的按模最大和按模最小 存在,则有 (4) 若 为正交矩阵,即 ,则 , . (1) 当 ; 的特征值. (3) 若 ; 判别一个矩阵是否病态是件极其重要的事情.MATLAB提 供了cond(X,p)函数求矩阵X的p条件数,例如, cond(X,1):X的1条件数; cond(X,2):X的2条件数; cond(X,inf):X的 cond(X,fro):X的Frobenius条件数. p缺省情况表示2条件数,即cond(X)=cond(X,2). 条件数; 例18 下列希尔伯特(Hilbert)矩阵是一族著名的病态矩阵. 用MATLAB函数计算条件数 for n=3:8 cond(hilb(n)) end 得到3至8阶希尔伯特矩阵的条件数分别为: 524.0568 1.5514e+004 4.7661e+005 1.4951e+007 4.7537e+008 1.5258e+010 由此可见,随着 的增加, 的病态可能越严重. 常出现在数据拟合和函数逼近中. .输入 例19 用MATLAB求解线性方程组 ,其中 , 显然,这个方程组的精确解为 下面用MATLAB求解,讨论 (1) 当 n=5;H=hilb(n);b=H*ones(n,1);x=H\b;x 得到 x = 1.0000 1.0000 1.0000 1.0000 1.0000 其解没有什么问题. n=10;H=hilb(n);b=H*ones(n,1);x=H\b;x 得到 x = 1.0000 1.0000 1.0000 1.0000 0.9999 1.0002 0.9996 1.0004 0.9998 1.0000 其解有误差,但误差不大,可以接受. 为不同值的情况. 时,输入 (2) 当 时,输入 (3) 当 n=20;H=hilb(n);b=H*ones(n,1);x=H\b;x 得到 x = 1.0000 1.0000 0.9997 1.0039 0.9794 1.0126 1.3920 -1.1443 6.6138 -7.8690 11.9311 -15.2355 26.1941 -24.9072 16.5064 -10.4564 19.5516 -18.4902 10.8570 -0.9390 此时方程组的解已经面目全非了,基本上看不出解的各个分 量为1. 时,输入 5 10 20 60 cond(hilb(n)) 4.7661×105 1.6025×1013 1.9084×1018 2.3191×1019 2.6733×10-12 6.1431×10-4 106.1591 6.3902×103 方程组的解与精确值之间的误差如表3-1所示. 表3-1列出的误差大得超过我们的想像.原因在于Hilbert 计算的舍入误差很小,但由于巨大的条件数,还会产生 很大的计算误差.对于病态方程组,通常的方法无法得 到它的准确解,需要采用一些特殊的处理方法. 系数矩阵当 时,条件数已达到1018,尽管计算机 表3-1 Hilbert系数矩阵方程组的解的误差 3.6.3 病态方程组的处理 ? 对于病态方程组,可采用高精度的算术运算,如双精度或扩充精度,以改善或减轻方程组的病态程度.如果用无限精度运算即不存在舍入误差的话,即使条件数很大,也没有病态可言.我们也可对病态方程组作预处理,使改善方程组系数矩阵的条件数. 例20 设方程组 ,即 试验证其为病态方程组,且对其作预处理 ,使 解 (1)用MATLAB
显示全部
相似文档