计算方法追赶法解三对角矩阵方程
- 格式:doc
- 大小:29.00 KB
- 文档页数:2
matlab三对角矩阵Matlab三对角矩阵是一种特殊的矩阵结构,其中除了主对角线上的元素外,只有相邻的两个次对角线上有非零元素。
这种特殊结构使得三对角矩阵具有一些特殊的性质和优势,例如在求解线性方程组、插值、数值微分等问题中可以提供高效的计算方法。
一、三对角矩阵的定义和表示三对角矩阵可以用以下形式表示:```A = [d1 u1 0 0 0l1 d2 u2 0 00 l2 d3 u3 0...0 ... ln-2 dn-1 un-10 ... 0 ln-1 dn un]```其中,d1, d2, ..., dn 是主对角线上的元素;u1, u2, ..., un-1 是次对角线上的元素;l1, l2, ..., ln-1 是次对角线下的元素。
主对角线上共有 n 个元素,次对角线上和下各有 n-1 个元素。
二、创建三对角矩阵在Matlab中,可以使用以下几种方法创建一个三对角矩阵:1. 手动赋值:通过手动指定每个元素的值来创建一个三对角矩阵。
可以使用以下代码创建一个3阶的三对角矩阵:```matlabA = [2 1 0;1 2 1;0 1 2];```2. 使用 diag 函数:通过 diag 函数可以方便地创建一个具有特定对角线元素的矩阵。
可以使用以下代码创建一个4阶的三对角矩阵,其中主对角线元素为1,次对角线元素为-1:```matlabd = ones(4,1);u = -ones(3,1);A = diag(d) + diag(u,1) + diag(u,-1);```3. 使用spdiags 函数:spdiags 函数是专门用于创建稀疏矩阵的函数。
通过指定每个对角线上的元素和它们相对于主对角线的偏移量,可以创建一个三对角矩阵。
可以使用以下代码创建一个5阶的三对角矩阵,其中主对角线元素为2,次对角线元素为-1:```matlabd = 2*ones(5,1);u = -ones(4,1);A = spdiags([u d u], [-1 0 1], 5, 5);```三、三对角矩阵的性质和应用1. 可逆性:如果一个三对角矩阵 A 的所有主对角线和次对角线上的元素都非零,则 A 是可逆的。
Matlab追赶法和迭代法解线性⽅程组实验⽬的:1)追赶法解三对⾓阵;2)掌握解线性⽅程组的迭代法;3)⽤Matlab实现Jacobi及超松弛迭代法实验要求:1)掌握追赶法解三对⾓阵2)掌握解线性⽅程组的迭代法3)提交追赶法、Jacobi及超松弛迭代法的m⽂件实验内容:1)追赶法解三对⾓矩阵⽅程(m⽂件)习题1. ⽤追赶法的m⽂件求解2)Jacobi迭代法解线性⽅程组(m⽂件)对不同初值⽤Jacobi迭代法解习题1并⽐较结果。
3)超松弛迭代法解线性⽅程组(m⽂件)对不同松弛因⼦解习题1并⽐较结果。
实验步骤: 代码:1 %追赶法2 %输⼊:系数矩阵A和因变量d;3 %输出:⾃变量x4 function z=zuigan(A,d)5 n=length(d);6 %取三对⾓元素a,b,c7for i=1:n-18 a(i)=A(i,i);9 b(i)=A(i+1,i);10 c(i)=A(i,i+1);11 end12 a(n)=A(n,n);13 %分解系数矩阵14 u(1)=a(1);15 l(1)=c(1)/a(1);16for i=2:n-117 u(i)=a(i)-b(i-1)*l(i-1);18 l(i)=c(i)/u(i);19 end20 u(n)=a(n)-c(n-1)*l(n-1);21 %解y22 y(1)=d(1)/u(1);23for k=2:n24 y(k)=d(k)-c(k-1)*y(k-1)/u(k);25 end26 %解x27 x(n)=y(n);28for k=n-1:-1:129 x(k)=y(k)-l(k)*x(k+1);30 end31 z=x;32 endzuigan 运⾏: 所得结果,较为粗糙。
代码:1 %雅克⽐迭代法2 %输⼊系数矩阵A,因变量b,初始向量x0,容许误差eps,最⼤迭代次数t3 %输出⾃变量x和迭代数n4 function [z,k]=jacobi(A,b,x0,e,t)5 %默认eps和最⼤迭代次数m6if nargin==37 e=1e-6;8 m=200;9 elseif nargin<310 error('输⼊的参数不⾜');11return;12 elseif nargin==513 m=t;14 end15 n=length(b);16 x(1,:)=x0;17 z(1,:)=x0;18for k=2:m19 sum=0;20for i=1:n21 w=0;22 u=0;23for j=i+1:n24 w=w+A(i,j)*x(k-1,j);25 end26for j=1:i-127 u=u+A(i,j)*x(k-1,j);28 end29 x(k,i)=(-1/A(i,i))*(u+w-b(i));30if sum<abs(x(k,i)-x(k-1,i))31 sum=abs(x(k,i)-x(k-1,i));32 end33 end34if sum<e35 z(k,:)=x(k,:);36return;37 end38 z(k,:)=x(k,:);39 end40 endjacobi 运⾏⽰例,初始向量x0=[0 0 0 0 0 0];和初始向量x0=[1 1 1 1 1 1]; 初始值不同,迭代次数可能不同。
二1求A的LU分解,并利用分解结果求解由紧凑格式故从而故2求证:非奇异矩阵不一定有LU分解证明设非奇异,要说明A不一定能做LU分解,只需举出一个反例即可。
现考虑矩阵,显然A为非奇异矩阵。
若A有LU分解,则故,而,显然不能同时成立。
这矛盾说明A不能做LU分解,故只假定A非奇异并不能保证A能做LU分解,只有在A的前阶顺序主子式时才能保证A一定有LU分解。
3用追赶法求解如下的三对角方程组解设有分解由公式其中分别是系数矩阵的主对角线元素及其下边和上边的次对角线元素,故有从而有故,,,故,,,4设A是任一阶对称正定矩阵,证明是一种向量范数证明(1)因A正定对称,故当时,,而当时,(2)对任何实数,有(3)因A正定,故有分解,则故对任意向量和,总有综上可知,是一种向量范数。
5 设,,已知方程组的精确解为(1)计算条件数;(2)若近似解,计算剩余;(3)利用事后误差估计式计算不等式右端,并与不等式左边比较,此结果说明了什么?解(1)(2)(3)由事后误差估计式,右端为而左端这表明当A为病态矩阵时,尽管剩余很小,误差估计仍然较大。
因此,当A病态时,用大小作为检验解的准确度是不可靠的。
6矩阵第一行乘以一数成为,证明当时,有最小值证明设,则又故从而当时,即时,有最小值,且7讨论用雅可比法和高斯-赛德尔法解方程组时的收敛性。
如果收敛,比较哪一种方法收敛较快,其中解对雅可比方法,迭代矩阵,故雅可比法收敛。
对高斯-赛德尔法,迭代矩阵,故高斯-赛德尔法收敛。
因=故高斯-赛德尔法较雅可比法收敛快。
8设,求解方程组,求雅可比迭代法与高斯-赛德尔迭代法收敛的充要条件。
解雅可比法的迭代矩阵,故雅可比法收敛的充要条件是。
高斯-赛德尔法的迭代矩阵,故高斯-赛德尔法收敛的充要条件是。
9设求解方程组的雅可比迭代格式为,其中,求证:若,则相应的高斯-赛德尔法收敛。
证明由于是雅可比法的迭代矩阵,故又,故,即,故故系数矩阵A按行严格对角占优,从而高斯-赛德尔法收敛。
追赶法,高斯消元法,逆矩阵法,迭代法 —— 解线性方程组精仪学院 马金玉 1012202030本文主要详细介绍了追赶法,高斯法,逆矩阵法的方法原理,运用这三种方法分别进行线性方程的求解举例,给出MATLAB 相应程序,最后做结果分析,比较说明追赶法和高斯法的特点。
最后对三种典型迭代方法Jacobi 迭代,Gauss-Seidel 迭代,SOR 迭代进行简单的分析比较。
1. 追赶法1.1).追赶法方法介绍追赶法用于求解以下形式的方程组(三对角方程组)d Ax =其中 1[,,]T n d d =d ,系数矩阵(三对角矩阵)11222111n n n n n b c a bc a b c a b ---⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦A系数矩阵A 的元素满足1100 0 (2,,1)0i i i i i n n b c b a c a c i n b a ⎧>>⎪≥+>≠=-⎨⎪>>⎩第一步:实现A=LU 的分解,按照递推公式1111//()i i i i i c b c b a βββ-=⎧⎨=-⎩ 计算 123,,...........βββ:第二步:求解方程组LY=f,相应的递推公式 11111/()/()i i i i i i i y f b y f a y b a β--=⎧⎨=--⎩ 第三部:求解方程组UX=Y ,相应的递推公式1()n nii i i x y x y x β-=⎧⎨=-⎩ 求得x因为计算1231......n ββββ-→→→→ 及 1231......n y y y y -→→→→的过程是追赶的过程,结出结果X 。
1.2).追赶法解线性方程组的matlab实例解线性方程组第一步:编写M文件如下:function [x,y,beta]=zhuiganfa(a,b,c,f)%a,b,c是三对角阵的对角线上的元素,f是自由项.n=length(b);beta(1)=c(1)/b(1);for i=2:nbeta(i)=c(i)/(b(i)-a(i)*beta(i-1));endy(1)=f(1)/b(1);for i=2:ny(i)=(f(i)-a(i)*y(i-1))/(b(i)-a(i)*beta(i-1));endx(n)=y(n);for i=n-1:-1:1x(i)=y(i)-beta(i)*x(i+1);enddisp(sprintf('k x(k) y(k) beta(k)')); for i=0:n-1disp(sprintf('%d %15.4f %15.4f %15.4f',i,x(i+1),y(i+1),beta(i+1))); end追赶法M文件程序截图如图1所示图1 追赶法M文件程序截图第二步:根据所求方程,在命令窗口中输入如下命令,并按ENTER 键确认。
WORD格式.分享第5章复习与思考题1、用高斯消去法为什么要选主元?哪些方程组可以不选主元?k答:使用高斯消去法时,在消元过程中可能出现a的情况,这时消去法无法进行;即kkk时主元素0和舍入增长a,但相对很小时,用其做除数,会导致其它元素数量级的严重kk计误差的扩散,最后也使得计算不准确。
因此高斯消去法需要选主元,以保证计算的进行和算的准确性。
当主对角元素明显占优(远大于同行或同列的元素)时,可以不用选择主元。
计算时一般选择列主元消去法。
2、高斯消去法与LU分解有什么关系?用它们解线性方程组Ax=b有何不同?A要满足什么条件?答:高斯消去法实质上产生了一个将A分解为两个三角形矩阵相乘的因式分解,其中一个为上三角矩阵U,一个为下三角矩阵L。
用LU分解解线性方程组可以简化计算,减少计算量,提高计算精度。
A需要满足的条件是,顺序主子式(1,2,⋯,n-1)不为零。
3、楚列斯基分解与LU分解相比,有什么优点?楚列斯基分解是LU分解的一种,当限定下三角矩阵L的对角元素为正时,楚列斯基分解具有唯一解。
4、哪种线性方程组可用平方根法求解?为什么说平方根法计算稳定?具有对称正定系数矩阵的线性方程可以使用平方根法求解。
,切对角元素恒为正数,因此,是一个稳定的平方根法在分解过程中元素的数量级不会增长算法。
5、什么样的线性方程组可用追赶法求解并能保证计算稳定?对角占优的三对角方程组6、何谓向量范数?给出三种常用的向量范数。
向量范数定义见p53,符合3个运算法则。
正定性齐次性三角不等式x为向量,则三种常用的向量范数为:(第3章p53,第5章p165)设n||x|||x|1ii11n22||x||(x)2ii1||x||max|x i|1in7、何谓矩阵范数?何谓矩阵的算子范数?给出矩阵A=(a ij)的三种范数||A||1,||A||2,精品.资料WORD格式.分享||A||∞,||A||1与||A||2哪个更容易计算?为什么?向量范数定义见p162,需要满足四个条件。
计算方法实验报告
实验:追赶法解三对角矩阵方程
1.实验目的
①熟悉matlab软件的使用
②掌握追赶法的基本方法
③编程实现追赶法解三对角矩阵方程
2.实验内容
題目:用追赶法解方程组
411411411411454321xxxxx=
100
200
200
200
100
3.求解:
1.追赶法代码
function [x]=ZhuiGan(a,b,c,f)
r=size(a);
m=r(2);
r=size(b);
n=r(2);
if size(a)~=size(b)|(m~=n-1)|size(b)~=size(f)
error('变量不匹配,检查变量输入情况!');
end
p=ones(1,m);
Y=ones(1,n);
x=Y;
p(1)=a(1)/b(1);
Y(1)=f(1)/b(1);
t=0;
for i=2:m
t=b(i)-a(i-1)*p(i-1);
p(i)=c(i)/t;
Y(i)=(f(i)-a(i-1)*Y(i-1))/t;
end
Y(n)=(f(n)-a(n-1)*Y(n-1))/(b(n)-a(n-1)*p(n-1));
x(n)=Y(n);for i=n-1:-1:1
x(i)=Y(i)-p(i)*x(i+1);
end
2.输入
>> a=-1*ones(1,4);
>> c=a;
>> b=4*ones(1,5);
>> f=[100 200 200 200 100];
>> [x]=ZhuiGan(a,b,c,f)
4.结果
x =46.15384615384615 84.61538461538461 92.30769230769231
84.61538461538461 46.15384615384615
3总结
追赶法具有计算量少,方法简单,算法稳定等优点。