资源描述:
《追赶法求解三对角线性方程组》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《数值分析》数值实验XXX追赶法求解三对角线性方程组一实验目的利用编程方法实现追赶法求解三对角线性方程组。二实验内容1、学习和理解追赶法求解三对角线性方程组的原理及方法;2、利用MATLAB编程实现追赶法;3、举例进行求解,并对结果进行分。三实验原理设n元线性方程组的系数矩阵A为非奇异的三对角矩阵这种方程组称为三对角线性方程组。显然,A是上下半宽带都是1的带状矩阵。设A的前n-1个顺序主子式都不为零,根据定理2.5的推论,A有唯一的Crout分解,并且是保留带宽的。8《数值分析》数值实验XXX其中L是下三角矩
2、阵,U是单位上三角矩阵。利用矩阵相乘法,可以得到:由上列各式可以得到L和U。引入中间量y,令,则有:已知L和d,可求得y。则可得到y的求解表达式:8《数值分析》数值实验XXX由得:可得到X的求解表达式:从而得到的解x。一Matlab编程functionx=Trid(A,d)%追赶法求解三对角的线性方程组Ax=d%b为主对角线元素,a,c分别为次对角线元素,d为右端项%A=[a1c1%b2a2c2%......%b(n-1)a(n-1)c(n-1)%b(n)a(n)]%a=[a1...a(n)]%把系数矩阵的三
3、对角转变成3个列向量%b=[0b2...b(n)]%不足的元素用0代替%c=[c1...c(n-1)0]根据以上的实验原理,在Matlab中编程如下函数x=Trid(A,d)8《数值分析》数值实验XXXn=size(A,1);%n为系数矩阵的行数a(1)=A(1,1)b(1)=0c(1)=A(1,2)fori=2:n-1a(i)=A(i,i)b(i)=A(i,i-1);c(i)=A(i,i+1);enda(n)=A(n,n)b(n)=A(n,n-1)c(n)=0l(1)=a(1);%开始求解L,Um(1)=0
4、fori=2:nm(i)=b(i)%求得m(i)u(i-1)=c(i-1)/l(i-1);%求得u(i)l(i)=a(i)-b(i)*u(i-1);%求得l(i)endu(n)=0y(1)=d(1)/l(1);fori=2:ny(i)=[d(i)-m(i)*y(i-1)]/l(i);%求得y(i)endx(n)=y(n);fori=n-1:-1:1x(i)=y(i)-u(i)*x(i+1);%求得x(i)endx=x'%将x转置,变为列向量8《数值分析》数值实验XXX在Matlab中新建Trid.m,其中程序
5、为如上虚线框内代码,放在工作目录。在CommandWindow输入以下语句:clearall;clc;fprintf('输入非奇异三对角系数矩阵A');A=input('Amatrix=');%输入系数矩阵fprintf('系数矩阵');Aifdet(A)==0%判断系数矩阵是否奇异fprintf('系数矩阵A奇异!!!请重新输入!');fprintf('重新输入非奇异三对角系数矩阵A');A=input('Amatrix=');fprintf('系数矩阵');Aendfprintf('输入矩阵d
6、');d=input('dmatrix=');fprintf('矩阵d');dx=Trid(A,d)%调用Trid.m中的Trid函数进行求解fid=fopen('Ax=d.txt','wt');%生成Ax=d.txt文件fprintf(fid,'%sr','利用三对角线追赶法求解Ax=d');fprintf(fid,'%sr','==================================');fori=1:size(A,1)fprintf(fid,'%.1ft',A(i,:));
7、%输出Ax=d,以上=为分隔符fprintf(fid,'%s','x');fprintf(fid,'%ut',i);fprintf(fid,'%.1f',d(i));endfprintf(fid,'%sr','==================================');8《数值分析》数值实验XXXfprintf(fid,'%sr','求解得到结果如下:');fori=1:size(A,1)fprintf(fid,'%s','x');%输出解向量x(i)fprintf(fid,'
8、%u',i);fprintf(fid,'%st','=');fprintf(fid,'%.5fr',x(i));endfclose(fid)一举例计算及分析以课本(《数值分析》第4版,颜庆津,北京航空航天大学出版社)27页例3为例进行计算,输入系数矩阵A和d:,调用x=Trid(A,d)后,并生成Ax=d.txt文件,CommandWindow同时也会输出解为,与课本答案一致;Ax=d.tx