计算方法 Gauss 消去法ch05a r
- 格式:ppt
- 大小:457.00 KB
- 文档页数:22
实验一 用列主元Gauss 消去法求解线性方程组实验目的会使用Matlab 语言编程使用列主元Gauss 消去法求解线性方程组.实验原理1、 列主元Gauss 消去法记线性方程组1112111212222212n n n n nn n n a a a x b a a a x b a a a x b ⎛⎫⎛⎫⎛⎫⎪⎪ ⎪ ⎪⎪ ⎪=⎪⎪ ⎪⎪⎪ ⎪⎝⎭⎝⎭⎝⎭ 为Ax=b, 其中A =111212122212n n n n nn a a a a a a a a a ⎛⎫ ⎪ ⎪ ⎪⎪⎝⎭,x=12n x x x ⎛⎫⎪ ⎪ ⎪⎪⎝⎭, b=12n b b b ⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭, 记其增广矩阵为()(1)(1)(1)1111(1)(1)(1)(1)(1)2122(1)(1)(1)1n nn nnn a a b aa b Ab a a b ⎛⎫ ⎪ ⎪= ⎪ ⎪ ⎪⎝⎭。
设主元(1)11a 0≠,记(1)11(1)11(2,3,,)i i a l i n a =-=,用1i l 乘增广矩阵()(1)(1)A b 的第1行,再分别与第i 行相加,得()(1)(1)(1)(1)111211(1)(1)(2)(2)(2)2222(2)(2)(2)2b 00n nn nnn a a a a a b Ab a a b ⎛⎫ ⎪⎪= ⎪ ⎪ ⎪⎝⎭, 其中(2)(1)(1)1,ij ij i ij a a l a =+ i ,j=2,3,,n(2)(1)(1)11,i i i b b l b =+ i=2,3,,n又设主元(2)(2)i222i2(2)22a 0,l =-a a≠用乘矩阵()(2)(2)A b 的第二行,再与第i 行相加(i=3,4,,n ),得()(1)(1)(1)(1)(1)1112131n 1(2)(2)(2)(2)22232n 2(3)(3)(3)(3)(3)333n3(3)(3)(3)n3nnn b 0b Ab =0b 00b a a a a a a a a a a a ⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭. 经过n-1步消去后,增广矩阵最终变为()=)()( n n b A实验程序function x=gaussc(A ,b ) [n,m ]=size(A); A=[A ,b]; for k=1:n —1for p=k+1:nif abs(A (p ,k))>abs(A(k ,k )) for j=k :n+1 t=A(k,j );A (k,j)=A(p,j ); A(p,j)=t; end endend %搜索主元并交换 for i=k+1:nl=-A(i ,k )/A(k,k); for j=k+1:n+1A (i,j )=A(i ,j )+l*A(k,j); end endend %消去过程结束 x(n)=A (n,n+1)/A (n ,n); for i=n —1:-1:1 s=0;for j=i+1:ns=s+A (i,j)*x(j ); endx (i)=(A (i,n+1)-s )/A (i,i); end实验结果设A=[2,5;4,6],b=[3;4],求解线形方程组Ax=b.实验步骤:1) 先在matlab 里输入上面的程序;2) 然后输入A=[2,5;4,6] b=[3;4]3)再输入x=gaussc(A,b)命令即得出结果.由以上程序可求解得到x=( 0.2500 0。
一、实验题目用顺序Gauss 消去法和列主元Gauss 消去法解线性方程组:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡--⨯-2178.4617.5911212592.112113.6291.51314.59103.0432115x x x x 二、 实验目的 1.掌握顺序Gauss 消去法和列主元Gauss 消去法的基本思路和迭代步骤;2.培养编程与上机调试能力。
三、实验原理1. 顺序Gauss 消去法的原理:(1).消元计算(k=1,2,….,n-1)()()(1)()()(1)()()/,1,...,,,,1,...,,,1,...,.k k ik ik kk k k k ij ij ik kj k k k i i ik k m a a i k n a a m a i j k n b b m b i k n ++==+=-=+=-=+(2).回带公式()()()()()1/,()/,1,...,2,1.n n n n nn ni i i i iii j ii j i x b a x b a x a i n =+==-=-∑2. 列主元Gauss 消去法的原理:设Ax=b.本算法用A 的具有行交换的列主元素法,消元结果冲掉A,乘数m ij 冲掉a ij ,计算解x 冲掉常数项b ,行列式存放在det 中。
(1)det ←1(2)对于k=1,2,…,n-1按列选主元:,max ik ik k i n a k a ≤≤=如果,0ik a k =,则停止(det (A )=0)如果k i =k 则转(a )换行:1*(*)/*det *det/ikkkij ij ik kjni i ij j ii ik kj i nn nn n n nnm a a a m a b b a b a m b a a b b a =+←←←←-←←=←∑(a ).消元计算对于 i=k+1,…,n① ik a ←ik m =ik a /kk a② 对于j=k+1,…,n*ij ij ik kj a a m a ←←③ *i i ik k b b m b ←←det *det kk a ←(3).如果0nn a =,则计算停止(det (A )=0)(4).回代求解四、实验内容及结果原始数据:A=[0.3e-15,59.14,3,1;5.291,-6.13,-1,2;11.2,9,5,2;1,2,1,1]; b=[59.17;46.78;1;2];1.顺序Gauss 消去法程序源代码%magauss.mfunction x=magauss(A,b,flag)%用途:顺序Gauss 消去法解线性方程组Ax=b%格式:x=magauss(A,b,flag), A 为系数矩阵, b 为右端项, 若flag=0, 则不 % 显示中间过程,否则显示中间过程, 默认为0, x 为解向量if nargin<3,flag=0;endn=length(b);%消元for k=1:(n-1)m=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-m*A(k,k+1:n);b(k+1:n)=b(k+1:n)-m*b(k);A(k+1:n,k)=zeros(n-k,1);if flag~=0, Ab=[A,b], endend%回代x=zeros(n,1);x(n)=b(n)/A(n,n);for k=n-1:-1:1x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);end输入: A=[0.3e-15,59.14,3,1;5.291,-6.13,-1,2;11.2,9,5,2;1,2,1,1] b=[59.17;46.78;1;2]magauss2(A,b,0)结果:A =0.0000 59.1400 3.0000 1.00005.2910 -6.1300 -1.0000 2.000011.2000 9.0000 5.0000 2.00001.00002.0000 1.0000 1.0000b =59.170046.78001.00002.0000ans =3.84571.6095-15.476110.41132. 列主元Gauss消去法程序源代码%magauss2.mfunction x=magauss2(A,b,flag)%用途:列主元Gauss消去法解线性方程组Ax=b%格式:x=magauss(A,b,flag), A为系数矩阵, b为右端项, 若flag=0, % 则不显示中间过程,否则显示中间过程, 默认为0, x为解向量if nargin<3,flag=0;endn=length(b);for k=1:(n-1)%选主元[ap,p]=max(abs(A(k:n,k))); p=p+k-1;if p>kt=A(k,:); A(k,:)=A(p,:); A(p,:)=t;t=b(k); b(k)=b(p); b(p)=t;end%消元m=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-m*A(k,k+1:n);b(k+1:n)=b(k+1:n)-m*b(k);A(k+1:n,k)=zeros(n-k,1);if flag~=0, Ab=[A,b], endend%回代x=zeros(n,1);x(n)=b(n)/A(n,n);for k=n-1:-1:1x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);end输入: A=[0.3e-15,59.14,3,1;5.291,-6.13,-1,2;11.2,9,5,2;1,2,1,1] b=[59.17,46.78,1,2]'magauss(A,b,0)结果:A =0.0000 59.1400 3.0000 1.00005.2910 -6.1300 -1.0000 2.000011.2000 9.0000 5.0000 2.00001.00002.0000 1.0000 1.0000b =59.170046.78001.00002.0000ans =23.68481.0005五、实验结果分析顺序高斯消去法求解线性方程组具有较高的稳定性,但计算过程繁琐。
数值分析上机报告1. 考虑方程组⎪⎪⎩⎪⎪⎨⎧-=+++=+++=+++=+++2557.03927.02786.04002.01784.04240.00643.03781.01920.03645.01550.01129.04015.03872..02246.04043.02943.03678.01234.04069.04.3214.3214.3214.321x x x x x x x x x x x x x x x x (1) 用Gauss 消去法解所给方程组(用四位小数计算);(2) 用列主元素消去法解所给方程组并且与(1)比较结果。
1. Matlab 程序>> clearA=input('输入系数矩阵A :');b=input('输入b 向量(按行向量):');B=[A b'];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB ,所以此方程组无解.\n')returnendif RA==RBif RA==nfprintf('请注意:因为RA=RB=%d ,所以此方程组有唯一解.\n',n) X=zeros(n,1);for p=1:n-1for k=p+1:nm= B(k,p)/ B(p,p);B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);endend%把方程组系数矩阵A 化为同解的上三角矩阵b=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);end%从xn 至x1逐个求解上三角方程组elsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')returnendenddisp('方程组的解为:');X运行后输入系数矩阵A:[0.4096 0.1234 0.3678 0.2943;0.2246,0.3872,0.4015,0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]输入b向量(按行向量):[0.4043 0.1550 0.4240 -0.2667]请注意:因为RA=RB=4,所以此方程组有唯一解.方程组的解为:X =-0.2603-1.73242.3280-0.44712.Matlab程序>> clearA=input('输入系数矩阵A:');b=input('输入b向量(按行向量):');B=[A b'];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.\n')endif RA==RBif RA==nfprintf('请注意:因为RA=RB=%d,所以此方程组有唯一解.\n',n)X=zeros(n,1); C=zeros(1,n+1);for p= 1:n-1[Y,j]=max(abs(B(p:n,p))); C=B(p,:);B(p,:)= B(j+p-1,:); B(j+p-1,:)=C;for k=p+1:nm= B(k,p)/ B(p,p);B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);endend%把方程组系数矩阵A化为同解的上三角矩阵b=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);end%从xn至x1逐个求解上三角方程组elsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')returnendenddisp('方程组的解为:');X运行结果输入系数矩阵A:[0.4096 0.1234 0.3678 0.2943;0.2246,0.3872,0.4015,0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]输入b向量(按行向量):[0.4043 0.1550 0.4240 -0.2667]请注意:因为RA=RB=4,所以此方程组有唯一解.方程组的解为:X =-1.7324 2.3280 -0.4471。
Matlab程序Gauss列主元消去法编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(Matlab程序Gauss列主元消去法)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为Matlab程序Gauss列主元消去法的全部内容。
.Gauss 列主元消去法求解线性方程组迭代法计算停止的条件为:.采用用用Gauss 列主元消去法时,Matlab 计算程序为: clearclcA=[2 2 1 2;4 1 3 —1;—4 —2 0 1;2 3 2 3];B=[1;2;1;0];n=length(B);X=zeros (n,1);c=zeros(1,n);d1=0;for i=1:n —1max=abs(A(i ,i ));m=i;for j=i+1:nif max<abs (A (j,i ))max=abs (A (j,i));m=j;endendif (m ~=i)for k=i :nc(k)=A(i ,k);A (i,k)=A(m ,k);A (m,k)=c (k );endd1=B(i);12346212425027,2085113270x x x x -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪- ⎪ ⎪ ⎪= ⎪ ⎪ ⎪-- ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭6)()1(3110max -+≤≤<-k j k j j x xB(i)=B(m);B(m)=d1;endfor k=i+1:nfor j=i+1:nA(k,j)=A(k,j)—A(i,j)*A(k,i)/A(i,i);endB(k)=B(k)—B(i)*A(k,i)/A(i,i);A(k,i)=0;endendX(n)=B(n)/A(n,n);for i=n-1:—1:1sum=0;for j=i+1:nsum=sum+A(i,j)*X(j);endX(i)=(B(i)-sum)/A(i,i);endX计算结果为:X =(1。
gauss列主元消去法条件-回复Gauss列主元消去法是一种常用的线性方程组求解方法,它通过高斯消元和行交换的方式将一个线性方程组转化为上三角形方程组,从而方便地求解未知数的值。
在实际操作中,我们需要注意一些条件和步骤,以确保计算过程的正确性和可行性。
一、线性方程组的条件在使用Gauss列主元消去法求解线性方程组时,需要满足以下两个条件:1. 方程组必须是齐次或非齐次的线性方程组。
所谓齐次的线性方程组是指常数项全部为零的线性方程组,即右端项为零向量;非齐次的线性方程组则是指右端项不为零的线性方程组。
2. 方程组的未知数个数必须等于方程组的方程个数。
这意味着方程组必须是方阵,即系数矩阵的行数和列数相等。
满足以上两个条件后,可以应用Gauss列主元消去法对线性方程组进行求解。
二、Gauss列主元消去法的步骤下面我们一步一步来详细解释Gauss列主元消去法的过程。
步骤1:构造增广矩阵首先,将线性方程组的系数矩阵和右端项向量排列在一起,构成增广矩阵。
例如,对于一个3×3的线性方程组:a11x1 + a12x2 + a13x3 = b1a21x1 + a22x2 + a23x3 = b2a31x1 + a32x2 + a33x3 = b3构造的增广矩阵为:[ a11 a12 a13 b1 ][ a21 a22 a23 b2 ][ a31 a32 a33 b3 ]步骤2:选取主元在消元过程中,我们需要选取一个主元素进行消元,目的是将主元素所在的列下方的元素全部消为零。
为了提高计算的精确性,我们在选取主元素时通常选择当前列的绝对值最大的元素。
即,在第i列中,选取使得a[i][i]最大的行k,然后将第k行与第i行进行交换,将主元素移动到当前位置。
步骤3:高斯消元通过选取主元后,我们开始进行高斯消元的操作。
对于第i行以下的每一行j,执行如下操作:1. 计算倍数m,使得第j行的第i列元素消为零。
倍数m的值为第j行第i列的元素除以主元素所在位置的元素值,即m=a[j][i]/a[i][i]。
gauss消去法及其某些变形时解低阶稠密方程组的有效方法。
一、引言Gauss消去法作为一种经典的线性方程组求解方法,在数学、物理、计算机科学等领域具有广泛的应用。
其在低阶稠密方程组求解中表现出了较高的效率,成为了一种有效的解决方法。
本文将对Gauss消去法及其某些变形进行详细介绍,并分析其在低阶稠密方程组解中的应用情况,以期为相关领域的研究提供参考。
二、Gauss消去法原理Gauss消去法是一种基于高斯消元的过程,通过初等行变换将增广矩阵转化为阶梯形矩阵,从而求解线性方程组。
具体步骤如下:1.选取一个方程的系数矩阵,将其与增广矩阵进行相乘,得到一个新的矩阵。
2.用新矩阵减去原矩阵,得到一个上三角矩阵。
3.重复步骤1和2,直到所有方程的系数矩阵都被替换为1。
4.将上三角矩阵的右侧部分替换为对应的方程右端项,得到一个新的增广矩阵。
5.按照步骤2-4的方法,将新矩阵转化为阶梯形矩阵。
6.从阶梯形矩阵中提取线性方程组的解。
三、Gauss消去法的变形1.列文逊-逆平方根法:在Gauss消去法的基础上,对矩阵进行列文逊分解,然后求解低阶线性方程组。
该方法在一定程度上提高了求解速度,但计算过程中需要进行多次矩阵乘法,可能导致计算量大。
2.列文逊-逆平方根法的改进型:针对原方法的时间复杂度问题,通过对列文逊分解过程中的矩阵进行优化,降低了计算量。
这种改进型在低阶稠密方程组求解中具有较高的效率。
3.其他相关变形方法:例如列文逊-托马斯法、托马斯算法等,这些方法在低阶稠密方程组求解中也有一定的应用价值。
四、低阶稠密方程组的解法1.低阶稠密方程组的定义和特点:低阶稠密方程组指的是系数矩阵的阶数较小,且元素较多的线性方程组。
这类方程组在实际应用中具有一定的特点,如系数矩阵非奇异、右端项较小等。
2.Gauss消去法在低阶稠密方程组中的应用:Gauss消去法在低阶稠密方程组中具有较好的解题效果,能够有效克服直接求解所带来的计算量大、存储空间不足等问题。