实验5-线性代数方程组的数值解法(2012080076)7.5分
- 格式:pdf
- 大小:959.64 KB
- 文档页数:27
实验5 线性代数方程组的数值解法化工系 毕啸天 2010011811【实验目的】1. 学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2. 通过实例学习用线性代数方程组解决简化的实际问题。
【实验内容】题目3已知方程组Ax=b ,其中A ,定义为⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------=32/14/12/132/14/14/12/132/14/14/12/132/14/12/13A试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对收敛速度的影响。
实验要求:(1)选取不同的初始向量x (0)和不同的方程组右端项向量b ,给定迭代误差要求,用雅可比迭代法和高斯-赛德尔迭代法计算,观测得到的迭代向量序列是否均收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论;(2)取定右端向量b 和初始向量x (0),将A 的主对角线元素成倍增长若干次,非主对角线元素不变,每次用雅可比迭代法计算,要求迭代误差满足 ,比较收敛速度,分析现象并得出你的结论。
3.1 模型分析选取初始向量x(0) =(1,1,…,1)T ,b=(1,1,…,1)T ,迭代要求为误差满足 ,编写雅各比、高斯-赛德尔迭代法的函数,迭代求解。
3.2 程序代码function x = Jacobi( x0,A,b,m ) D=diag(diag(A)); U=-triu(A,1); L=-tril(A,-1); B1=D\(L+U); f1=D\b; x(:,1)=x0;x(:,2)=B1*x(:,1)+f1; k=1;while norm((x(:,k+1)-x(:,k)),inf)>m x(:,k+2)=B1*x(:,k+1)+f1; k=k+1; endendfunction x = Gauss( x0,A,b,m )D=diag(diag(A));U=-triu(A,1);L=-tril(A,-1);B2=(D-L)\U;f2=(D-L)\b;x(:,1)=x0;x(:,2)=B2*x(:,1)+f2;k=1;while norm((x(:,k+1)-x(:,k)),inf)>mx(:,k+2)=B2*x(:,k+1)+f2;k=k+1;endendA1=3.*eye(20,20);A2=sparse(1:19,2:20,-1/2,20,20);A3=sparse(1:18,3:20,-1/4,20,20);AA=A1+A2+A3+A2'+A3';A=full(AA);b=ones(20,1); %输入自选右端项向量b x0=ones(20,1); %输入自选初始向量x0 m=1e-5;x1=Jacob(x0,A,b,m);x2=Gauss(x0,A,b,m);结果输出数据:3.3.1将x0各分量初值置为0【分析】从数据中可以看出,当迭代的初值变化了,达到相同精度所需要的迭代次数也变化了。
实验报告——线性方程组的数值解法姓名:班级:学号:日期:一 实践目的1. 熟悉求解线性方程组的有关理论和方法。
2. 会编列主元消去法,全主元消去法,雅克比迭代法及高斯-赛德尔迭代法的程序。
3.通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。
4. 进一步应用数学知识,扩展数学思维,提高编程能力。
二 问题定义及题目分析1.求解线性方程是实际中常遇到的问题。
而一般求解方法有两种,一个是直接求解法,一个是迭代法。
2.直接法是就是通过有限步四则运算求的方程准确解的方法。
但实际计算中必然存在舍入误差,因此这种方法只能得到近似解。
3.迭代法是先给一个解的初始近似值,然后按一定的法则求出更准确的解,即是用某种极限过程逐步逼近准确解的方法。
4.这次实践,将采用直接法:列主元高斯消去法,全主元高斯消去法;迭代法:雅克比迭代法和高斯-赛德尔迭代法。
三 详细设计 设有线性方程组11112211n n a x a x a x b +++=21122222n n a x a x a x b +++= 1122n n nn n n a x a x a x b +++=令A= 111212122212n n n n nn a a a aa a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦ x=12n x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦ b= 12n b b b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦一. 上三角方程组的求解很简单。
所以若能将方程组化为上三角方程组,那就很容易得到方程的解,高斯消去法则是一种简洁高效的方法,可以将方程组化为上三角方程组,但是这种方法必须满足每一步时0kk a =才能求解,还有当kk a 绝对值很小时,作分母会引起较大的舍入误差。
因此在消元过程中应尽量选择绝对值较大的系数作为主元素。
1.列主元消去法很好的解决这一问题。
将1x 的系数1(1)k a k n ≤≤中绝对值最大者作为主元素,交换第一行和此元素所在的行,然后主元消去非主元项1x 的系数,。
1大学数学实验 实验报告 | 2014/4/5一、 实验目的1、学习用Matlab 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2、通过实例学习用线性代数方程组解决简化问题。
二、 实验内容项目一:种群的繁殖与稳定收获:种群的数量因繁殖而增加,因自然死亡而减少,对于人工饲养的种群(比如家畜)而言,为了保证稳定的收获,各个年龄的种群数量应维持不变。
种群因雌性个体的繁殖而改变,为方便起见以下种群数量均指其中的雌性。
种群年龄记作k=1,2,…,n ,当年年龄k 的种群数量记作x k ,繁殖率记作b k (每个雌性个体1年的繁殖的数量),自然存活率记作s k (s k =1−d k ,d k 为1年的死亡率),收获量记作ℎk ,则来年年龄k 的种群数量x ̌k 应该为x ̌k =∑b k n k=1x k , x ̌k+1=s k x k −ℎk , (k=1,2,…,n -1)。
要求各个年龄的种群数量每年维持不变就是要求使得x ̌k =x k , (k=1,2,…,n -1).(1) 如果b k , s k 已知,给定收获量ℎk ,建立求各个年龄的稳定种群数量x k 的模型(用矩阵、向量表示).(2) 设n =5,b 1=b 2=b 5=0,b 3=5,b 4=3,s 1=s 4=0.4,s 2=s 3=0.6,如要求ℎ1~ℎ5为500,400,200,100,100,求x 1~x 5.(3) 要使ℎ1~ℎ5均为500,如何达到?问题分析:该问题属于简单的种群数量增长模型,在一定的条件(存活率,繁殖率等)下为使各年龄阶段的种群数量保持不变,各个年龄段的种群数量将会满足一定的要求,只要找到种群数量与各个参量之间的关系,建立起种群数量恒定的方程就可以求解出各年龄阶段的种群数量。
模型建立:根据题目中的信息,令x ̌k =x k ,得到方程组如下:{x ̌1=∑b k nk=1x k =x 1x ̌k+1=s k x k −ℎk =x k+1整理得到:{−x 1∑b k nk=1x k =0−x k+1+s k x k =ℎk2 大学数学实验 实验报告 | 2014/4/52写成系数矩阵的形式如下:A =[b 1−1b 2b 3s 1−100s 2−1…b n−1b n0000⋮⋱⋮000000000⋯00−10s n−1−1]令h =[0, ℎ1,ℎ2,ℎ3,…,ℎn−2,ℎn−1]Tx =[x n , x n−1,…,x 1]T则方程组化为矩阵形式:Ax =h ,即为所求模型。
线性代数方程组的数值解法【实验目的】1. 学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2. 通过实例学习用线性代数方程组解决简化的实际问题。
【实验内容】【题目1】通过求解线性方程组A1x=b1和A2x=b2,理解条件数的意义和方程组的性态对解的影响。
其中A1是n阶范德蒙矩阵,即⎡1x0⎢1x1⎢A1=⎢⎢⎢⎣1xn-12x0x12 2xn-1n-1⎤ x0⎥ x1n-1⎥1,...,n-1 ,xk=1+0.1k,k=0,⎥ n-1⎥ xn-1⎥⎦A2是n阶希尔伯特矩阵,b1,b2分别是A1,A2的行和。
(1)编程构造A1(A2可直接用命令产生)和b1,b2;你能预先知道方程组A1x=和A2x=。
b2的解吗?令n=5,用左除命令求解(用预先知道的解可检验程序)b1(2)令n=5,7,9,…,计算A1,A2的条件数。
为观察它们是否病态,做以下试验:b1,b2不变,A1和A2的元素A1(n,n),A2(n,n)分别加扰动ε后求解;A1和A2不变,b1,b2的分量b1(n),分析A和b的微小扰动对解的影响。
b2(n)分别加扰动ε求解。
ε取10-1010,-8,10-6。
(3)经扰动得到的解记做x~,计算误差-x~x,与用条件数估计的误差相比较。
1.1构造A1,A2和b1,b2首先令n=5,构造出A1,A2和b1,b2。
首先运行以下程序,输出A1。
运行以下程序对A1,A2求行和:由于b1,b2分别是A1,A2的行和,所以可以预知x1=运行下列程序,用左除命令对b1,b2进行求解:得到以下结果: T。
x2=(1,1, ,1)1.2 计算条件数并观察是否为病态1.不加扰动,计算条件数。
运行以下程序:由此可知,A1,A2的条件数分别是3.574∗10, 4,766∗10。
2.b1,b2不变,A1(n,n),A2(n,n)分别加扰动(1)n=5时设x11,x12,x13分别为A1添加扰动10−10,10−8,10−6后的解。
数值分析实验报告-清华大学--线性代数方程组的数值解法(总15页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--线性代数方程组的数值解法实验1. 主元的选取与算法的稳定性问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。
但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。
主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。
实验内容:考虑线性方程组 n n n R b R A b Ax ∈∈=⨯,,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。
实验要求:(1)取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。
取n=10计算矩阵的条件数。
让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。
每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。
若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。
(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。
(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。
重复上述实验,观察记录并分析实验结果。
程序清单n=input('矩阵A 的阶数:n=');A=6*diag(ones(1,n))+diag(ones(1,n-1),1)+8*diag(ones(1,n-1),-1); b=A*ones(n,1);p=input('计算条件数使用p-范数,p='); cond_A=cond(A,p) [m,n]=size(A);Ab=[A b];r=input('选主元方式(0:自动;1:手动),r=');Abfor i=1:n-1switch rcase(0)[aii,ip]=max(abs(Ab(i:n,i)));ip=ip+i-1;case (1)ip=input(['第',num2str(i),'步消元,请输入第',num2str(i),'列所选元素所处的行数:']);end;Ab([i ip],:)=Ab([ip i],:);aii=Ab(i,i);for k=i+1:nAb(k,i:n+1)=Ab(k,i:n+1)-(Ab(k,i)/aii)*Ab(i,i:n+1);end;if r==1Abendend;x=zeros(n,1);x(n)=Ab(n,n+1)/Ab(n,n);for i=n-1:-1:1x(i)=(Ab(i,n+1)-Ab(i,i+1:n)*x(i+1:n))/Ab(i,i);endx运行结果(1)n=10,矩阵的条件数及自动选主元Cond(A,1) =×103Cond(A,2) = ×103Cond(A,inf) =×103程序自动选择主元(列主元)a.输入数据矩阵A的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=0b.计算结果x=[1,1,1,1,1,1,1,1,1,1]T(2)n=10,手动选主元a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元矩阵A 的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:1(2)(2) 6.0000 1.00007.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.00001.000015.00006.0000 1.00008.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k 步选择主元处于第k 行) 最终计算得x=[, , , , , , , , , ]Tb. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.0000 6.0000 1.000015.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.000015.00008.0000 1.00006.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k 步选择主元处于第k+1行) 最终计算得x=[1,1,1,1,1,1,1,1,1,1]T(3)n=20,手动选主元a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元 矩阵A 的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:1(2)(2) 6.0000 1.00007.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.00001.000015.00006.0000 1.00008.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k 步选择主元处于第k 行) 最终计算得x=[,,,,,,,,,,,,,,,,,,,]T b. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.0000 6.0000 1.000015.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.000015.00008.0000 1.00006.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k步选择主元处于第k+1行)最终计算得x=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]T(4)A分别为幻方矩阵,Hilbert矩阵,pascal矩阵和随机矩阵简要分析计算(1)表明:对于同一矩阵,不同范数定义的条件数是不同的;Gauss消去法在消去过程中选择模最大的主元能够得到比较精确的解。
实验5 线性代数方程组的数值解法化学工程系化22班朱燚豪 2012080076实验目的:1. 学会用MATLAB软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2. 通过实例学习用线性代数方程组解决简化的实际问题。
实验内容:问题1:问题陈述:已知方程组,其中,定义为:试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对收敛速度的影响。
实验要求:(1)选取不同的初始向量和不同的方程组右端向量b,给出迭代误差要求,用雅可比迭代法和高斯-赛德尔迭代法计算,观测得到的迭代向量序列是否均收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论;(2)取定右端向量b和初始向量,将A的主对角线元素成倍增长若干次,非主对角线元素不变,每次用雅可比迭代法计算,要求迭代误差满足‖ ‖,比较收敛速度,分析现象并得出你的结论。
问题分析及其求解:(1)取误差要求为ε=10-5,为了看出结果与x0和b之间的关系,分别改变x0和b,观察迭代步数大小,步数越大收敛越慢编写 MATLAB 程序:检验雅可比的程序:function [k,x]=Jac(A,b,x0,n,e)xr=A\bD=diag(diag(A));U=-triu(A,1);L=-tril(A,-1);B=inv(D)*(L+U);f=inv(D)*b;x=x0;for k=1:nx=B*x+f;dx=x-xr;d=norm(dx,2)if d<ebreakendend检验gauss-seidel的程序:function [k,x]=GS(A,b,x0,n,e)xr=A\b;D=diag(diag(A));U=-triu(A,1);L=-tril(A,-1);B=inv(D-L)*U;f=inv(D-L)*b;x=x0;for k=1:nx=B*x+f;dx=x-xr;d=norm(dx,2);if d<ebreakendend(1)选择不同的x0,观察迭代情况:MATLAB 程序:x1=sparse(1:20,1:20,3,20,20);x2=sparse(2:20,1:19,-1/2,20,20);x3=sparse(1:19,2:20,-1/2,20,20);x4=sparse(3:20,1:18,-1/4,20,20);x5=sparse(1:18,3:20,-1/4,20,20);A=x1+x2+x3+x4+x5;A=full(A);%输入矩阵A首先取x0=(1,1,…,1)’,b=[1:20]’,先取n=30,若还达到误差要求再增大n再输入:x0=ones(20,1); %输入向量x0b=(1:20)'; %输入向量bn=30;%迭代30次e=10^-5; %取误差要求为ε=10-5xr=A\b;%得到x的精确解[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算得到表:可比迭代要在 21 次迭代下才能使其误差达到要求,而高斯-赛德尔迭代只需用14 次就可达到。
保持b不变,改变x0数量级,观察迭代次数变化情况;再输入:x0=rand(20,1); %输入元素为0-1之间的随机向量n=50;%迭代50次[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算得到表:x0=10.*rand(20,1); %输入元素为0-10之间的随机向量[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算得到表:x0=100.*rand(20,1); %输入元素为0-100之间的随机向量[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算得到表:再输入:x0=1000.*rand(20,1); %输入元素为0-1000之间的随机向量[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算得到表:x0,迭代向量序列都是收敛的。
当 x0 的数量级不变的情况下,迭代的最终次数也是基本不变的,当 x0 的数量级增大,迭代次数也随之增加,且雅可比迭代法变化更为明显。
(2)选择不同的b,观察收敛情况:保持x0=(1,1,…,1)’不变,改变b数量级,观察迭代次数变化情况输入:x0=ones(20,1); %输入向量x0b=rand(20,1); %输入元素为0-1之间的随机向量xr=A\b; %得到x的精确解[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算得到表:b=10.*rand(20,1); %输入元素为0-10之间的随机向量xr=A\b; %得到x的精确解[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算得到表:b=100.*rand(20,1); %输入元素为0-100之间的随机向量xr=A\b; %得到x的精确解[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算得到表:再输入:b=1000.*rand(20,1); %输入元素为0-100之间的随机向量xr=A\b; %得到x的精确解[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算得到表:结果分析与讨论:由上述实验情况知,迭代向量序列都收敛,并且用高斯-赛德尔迭代的速度比雅可比迭代速度快很多。
我们发现,本题中的矩阵 A 实际上是对角占优阵,而A 是对角占优阵是迭代收敛的充分条件。
而且在输入[R,p] =chol(A)返回值 p=0,可以看出A是对称正定矩阵。
最后我们还可以验证一下两种迭代方式在x(k+1)=B*x(k)+f中B的谱半径。
输入:D=full(x1);L=-full(x2+x4);U=-full(x3+x5);BJ=D^(-1)*(L+U);%得到雅可比迭代法的迭代矩阵BGS=(D-L)^(-1)*U; %得到高斯-赛德尔迭代法的迭代矩阵rJ=max(abs(eig(BJ)))%得到雅可比迭代法的谱半径rGS=max(abs(eig(BGS))) %得到高斯-赛德尔迭代法的谱半径得到:rJ=0.4893 rGS=0.2523 可以看到rGS<rJ<1,由:‖ ‖‖ ()‖‖ ‖‖ ()‖(q为B的任一范数‖‖,B的谱半径≤q)故可以看到雅克比迭代法和高斯-赛德尔法均收敛,且高斯-赛德尔法收敛速度较快另外通过上述实验我们可以看出:(1)当 b 不变的条件下, x0 的数量级不变的情况下,迭代的最终次数也是基本不变的,当 x0 的数量级增大,迭代次数也随之增加。
(2)当 x0 不变的条件下,在 b 的同一数量级上,迭代次数基本不变。
随着 b 的数量级的增加,迭代次数也会增加。
(2)取定 b=[1:20]’ , x0=(1,1,…,1)’,有(1)问知道,在此种情况下,雅各比迭代和高斯-塞德尔迭代的次数分别是 k=21 和 k=14。
下面,分别去主对角元素分别是最初的 2倍,3倍,5倍,10倍,100倍,通过观察此时两种迭代法的迭代次数,得出结论。
1)对角元素为原来2倍输入:x11=x1.*2;A=full(x1+x2+x3+x4+x5); %矩阵主对角线元素为最初的2倍b=[1:20]' ; %输入向量bx0=ones(20,1); %输入向量x0xr=A\b;%得到x的精确解[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算D=full(x11);BJ=D^(-1)*(L+U);%得到雅可比迭代法的迭代矩阵BGS=(D-L)^(-1)*U; %得到高斯-赛德尔迭代法的迭代矩阵rJ=max(abs(eig(BJ)))%得到雅可比迭代法的谱半径rGS=max(abs(eig(BGS))) %得到高斯-赛德尔迭代法的谱半径得到表:2)对角元素为原来3倍x12=x1.*3;A=full(x12+x2+x3+x4+x5); %矩阵主对角线元素为最初的3倍b=[1:20]' ; %输入向量bx0=ones(20,1); %输入向量x0xr=A\b;%得到x的精确解[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算D=full(x12);BJ=D^(-1)*(L+U);%得到雅可比迭代法的迭代矩阵BGS=(D-L)^(-1)*U; %得到高斯-赛德尔迭代法的迭代矩阵rJ=max(abs(eig(BJ)))%得到雅可比迭代法的谱半径rGS=max(abs(eig(BGS))) %得到高斯-赛德尔迭代法的谱半径得到表:2)对角元素为原来5倍x13=x1.*5;A=full(x13+x2+x3+x4+x5); %矩阵主对角线元素为最初的5倍b=[1:20]' ; %输入向量bx0=ones(20,1); %输入向量x0xr=A\b;%得到x的精确解[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算D=full(x13);BJ=D^(-1)*(L+U);%得到雅可比迭代法的迭代矩阵BGS=(D-L)^(-1)*U; %得到高斯-赛德尔迭代法的迭代矩阵rJ=max(abs(eig(BJ)))%得到雅可比迭代法的谱半径rGS=max(abs(eig(BGS))) %得到高斯-赛德尔迭代法的谱半径得到表:3)对角元素为原来10倍x14=x1.*10;A=full(x14+x2+x3+x4+x5); %矩阵主对角线元素为最初的10倍b=[1:20]' ; %输入向量bx0=ones(20,1); %输入向量x0xr=A\b;%得到x的精确解[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算D=full(x14);BJ=D^(-1)*(L+U);%得到雅可比迭代法的迭代矩阵BGS=(D-L)^(-1)*U; %得到高斯-赛德尔迭代法的迭代矩阵rJ=max(abs(eig(BJ)))%得到雅可比迭代法的谱半径rGS=max(abs(eig(BGS))) %得到高斯-赛德尔迭代法的谱半径得到表:x15=x1.*100A=full(x15++x3+x4+x5); %矩阵主对角线元素为最初的100b=[1:20]' ; %输入向量bx0=ones(20,1); %输入向量x0xr=A\b;%得到x的精确解[k,x]=Jac(A,b,x0,n,e)%用雅可比法迭代计算[k,x]=GS(A,b,x0,n,e) %用高斯-赛德尔法迭代计算D=full(x15);BJ=D^(-1)*(L+U);%得到雅可比迭代法的迭代矩阵BGS=(D-L)^(-1)*U; %得到高斯-赛德尔迭代法的迭代矩阵rJ=max(abs(eig(BJ)))%得到雅可比迭代法的谱半径rGS=max(abs(eig(BGS))) %得到高斯-赛德尔迭代法的谱半径得到表:从以上各表可看出,在 A 的主对角线元素增加数倍时,用两种迭代方法得到的解都收敛于精确解。