解线性方程组的列主元素高斯消去法和lu分解法.doc

上传人:数据九部 文档编号:10264407 上传时间:2021-05-03 格式:DOC 页数:8 大小:53KB
返回 下载 相关 举报
解线性方程组的列主元素高斯消去法和lu分解法.doc_第1页
第1页 / 共8页
解线性方程组的列主元素高斯消去法和lu分解法.doc_第2页
第2页 / 共8页
解线性方程组的列主元素高斯消去法和lu分解法.doc_第3页
第3页 / 共8页
解线性方程组的列主元素高斯消去法和lu分解法.doc_第4页
第4页 / 共8页
解线性方程组的列主元素高斯消去法和lu分解法.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《解线性方程组的列主元素高斯消去法和lu分解法.doc》由会员分享,可在线阅读,更多相关《解线性方程组的列主元素高斯消去法和lu分解法.doc(8页珍藏版)》请在三一文库上搜索。

1、数值试验报告分析 一、实验名称:解线性方程组的列主元素高斯消去法和LU分解法二、实验目的及要求: 通过数值实验,从中体会解线性方程组选主元的必要性和LU分解法的优点,以及方程组系数矩阵和右端向量的微小变化对解向量的影响。3、 算法描述: 本次试验采用的是高斯列主元消去法和LU分解法求解线性方程组的解。 其中,高斯消去法的基本思想是避免接近于零的数作分母;能进行到底的条件:当A可逆时,列主元Gauss(高斯)消去法一定能进行到底。优点:具有很好的数值稳定性;具有与顺序Gauss消去法相同的计算量。列主元Gauss(高斯)消去法的精度显著高于顺序Gauss(高斯)消去法。注意:省去换列的步骤,每次

2、仅选一列中最大的元。 矩阵的三角分解法是A=LU,L是下三角阵,U是上三角阵,Doolittle分解:L是单位下三角阵,U是上三角阵;Crout分解:L是下三角阵,U是单位上三角阵。矩阵三角分解的条件是矩阵A有唯一的Doolittle分解的充要条件是A的前n-1顺序主子式非零;矩阵A有唯一的Crout分解的充要条件是A的前n-1顺序主子式非零。三角分解的实现是通过(1)Doolittle分解的实现; (2)Doolittle分解的缺点:条件苛刻,且不具有数值稳定性。(3)用Doolittle分解求解方程组: AX=b LUX=b LY=b A=LU UX=Y;四、实验内容: 解下列两个线性方程

3、组(1) (2) a、 用你熟悉的算法语言编写程序用列主元高斯消去法和LU分解求解上述两个方程组,输出Ax=b中矩阵A及向量b, A=LU分解的L及U,detA及解向量x.b、 将方程组(1)中系数3.01改为3.00,0.987改为0.990,用列主元高斯消去法求解变换后的方程组,输出列主元行交换次序,解向量x及detA,并与(1)中结果比较。c、 将方程组(2)中的2.099999改为2.1,5.900001改为5.9,用列主元高斯消去法求解变换后的方程组,输出解向量x及detA,并与(1)中的结果比较。d、用MATLAB的内部函数inv求出系数矩阵的逆矩阵,再输入命令x=inv(A)*b

4、,即可求出上述各个方程组的解,并与列主元高斯消去法和LU分解法求出的解进行比较,体会选主元的方法具有良好的数值稳定性。用MATLAB的内部函数det求出系数行列式的值,并与(1)、(2)、(3)中输出的系数行列式的值进行比较。5、 实验结果: a、用你熟悉的算法语言编写程序用列主元高斯消去法和LU分解求解上述两个方程组,输出Ax=b中矩阵A及向量b, A=LU分解的L及U,detA及解向量x.Gauss(高斯)列主元法程序及结果().A=3.01 6.03 1.99;1.27 4.16 -1.23;0.987 -4.81 9.34;b=1;1;1;RA,RB,n,X=liezhuY(A,b)D

5、 = -0.0305RA =3RB =3n = 3X = 1.5926 -0.6319 -0.4936()A=10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 1 0 2;b=8;5.900001;5;1;RA,RB,n,X=liezhuY(A,b)D =-762.0001RA = 4RB =4n =4X = 0.0000 -1.0000 1.00001.0000分解法程序及结果() A=3.01 6.03 1.99;1.27 4.16 -1.23;0.987 -4.81 9.34;h1=zhjLU(A)D = -0.0305RA =3U = 3.0100 6.030

6、0 1.9900 0 4.1600 -2.0696 0 0 5.3107L = 1.0000 0 0 0.4219 1.0000 0 0.3279 -1.6316 1.0000h1 =3.0100 4.8635 -0.0305() A=10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 1 0 2;h1=zhjLU(A)D =-762.0001RA = 4U = 10.0000 -7.0000 0 1.0000 0 2.1000 6.0000 2.3000 0 0 -2.1429 -4.2381 0 -0.0000 0 12.7333L = 1.0000 0 0 0 -

7、0.3000 1.0000 0 0 0.5000 1.1905 1.0000 -0.0000 0.2000 1.1429 3.2000 1.0000h1 = 10.0000 -0.0000 -150.0001 -762.0001b、将方程组(1)中系数3.01改为3.00,0.987改为0.990,用列主元高斯消去法求解变换后的方程组,输出列主元行交换次序,解向量x及detA,并与(1)中结果比较。线性方程组数据改变后程序及结果A=3.01 6.03 1.99;1.27 4.16 -1.23;0.987 -4.81 9.34;b=1;1;1;A(1,1)=3;A(1,3)=0.990;RA,R

8、B,n,X=liezhuY(A,b)D = 9.8547RA = 3RB =3n =3X = -4.0264 1.91931.5210 X=1.5926 -0.6319 -0.4936;X1=-4.0264 1.9193 1.5210;wucha=X1-Xwucha = -5.6190 2.5512 2.0146c、将方程组(2)中的2.099999改为2.1,5.900001改为5.9,用列主元高斯消去法求解变换后的方程组,输出解向量x及detA,并与(1)中的结果比较。线性方程组数据改变后的程序及结果A=10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 1 0 2

9、;A(2,2)=2.1;b(2,1)=5.9;b=8;5.900001;5;1;RA,RB,n,X=liezhuY(A,b)D =-762.0000RA = 4RB =4n = 4X = -0.0000 -1.0000 1.0000 1.0000 X=0;-1;1;1;X1=0;-1;1;1;wucha=X1-Xwucha = 0 0 0 0d、用MATLAB的内部函数inv求出系数矩阵的逆矩阵,再输入命令x=inv(A)*b,即可求出上述各个方程组的解,并与列主元高斯消去法和LU分解法求出的解进行比较,体会选主元的方法具有良好的数值稳定性。用MATLAB的内部函数det求出系数行列式的值,并

10、与(1)、(2)、(3)中输出的系数行列式的值进行比较。线性方程组求解的程序及结果(1) A=3.01 6.03 1.99;1.27 4.16 -1.23;0.987 -4.81 9.34;B=inv(A)B = -1.0783 2.1571 0.5138 0.4281 -0.8560 -0.2039 0.3344 -0.6688 -0.1592 b=1;1;1;X=inv(A)*bX = 1.5926 -0.6319 -0.4936 A=3.01 6.03 1.99;1.27 4.16 -1.23;0.987 -4.81 9.34;A(1,1)=3;A(1,3)=0.990;B=inv(A)

11、B = 3.3424 -6.1983 -1.1705 -1.3269 2.7442 0.5020 -1.0365 2.0682 0.4893 b=1;1;1;X=inv(A)*bX = -4.0264 1.9193 1.5210(2) A=10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 1 0 2;B=inv(A)B = -0.0223 -0.0984 0.1181 0.1686 -0.1601 -0.1181 0.1417 0.2690 0.0108 0.1063 0.0724 -0.0755 0.1024 0.1575 -0.1890 0.1969 b=8;5.

12、900001;5;1;X=inv(A)*bX = 0 -1.0000 1.0000 1.0000 A=10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 1 0 2;A(2,2)=2.1;B=inv(A)B = -0.0223 -0.0984 0.1181 0.1686 -0.1601 -0.1181 0.1417 0.2690 0.0108 0.1063 0.0724 -0.0755 0.1024 0.1575 -0.1890 0.1969 b=8;5.900001;5;1;b(2,1)=5.9;X=inv(A)*bX = -0.0000 -1.0000 1.0000

13、1.0000 六、实验结果分析 通过本次的解线性方程组数值分析实验,不仅让我熟悉了Matlab软件的功能和它强大的计算能力,而且大大提高了我解决数值分析实际问题的能力,进一步掌握了列主元高斯消去法解方程组的思想和有效性。通过对以上方程的计算和比较,方程组(1)具有病态性。当系数矩阵有微小的变化时,所得到的解与原方程组的解有很大的相对误差。方程组(2)中当系数矩阵A和b有较小变化时,所得到的解没有相对误差。所以方程组(2)是良性的。采用Matlab内部函数inv求解逆矩阵,然后通过X=inv(a)*b也可以求解方程组的解,但没有高斯列主元消去法稳定性高。Det函数求解方程组系数矩阵的行列式所得到

14、的结果和三角法所得到的结果相同,有方便快捷明了的特点。七、附录 列主元消去法function RA,RB,n,X=liezhuY(A,b) B=A b;n=length(b);RA=rank(A); D=det(A) RB=rank(B);zhica=RB-RA; if zhica0, return warning off MATLAB:return_outside_of_loop end if RA=RB if RA=n X=zeros(n,1);C=zeros(1,1+n); for p=1:n-1 Y,j=max(abs(B(p:n,p);C=B(p,:); B(p,:)=B(j+p-1

15、,:); B(j+p-1,:)=C; for k=p+1:n m=B(k,p)/B(p,p); B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1); end end b=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n); for q=n-1:-1:1 X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)/A(q,q); end else end end LU分解法function h1=zhjLU(A)n n=size(A);RA=rank(A);D=det(A)if RA=n returnend if RA=n for p=1

16、:n h(p)=det(A(1:p,1:p); end h1=h(1:n); for i=1:n if h(1,i)=0 return end end if h(1,i)=0 for j=1:n U(1,j)=A(1,j); end for k=2:n for i=2:n for j=2:n L (1,1)=1;L(i,i)=1; if ij L(1,1)=1;L(2,1)=A(2,1)/U(1,1);L(i,1)=A(i,1)/U(1,1); L(i,k)=(A(i,k)-L(i,1:k-1)*U(1:k-1,k)/U(k,k); else U(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j); end end end end h1;RA,U,L endend

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1