高斯列主元消去法解线性方程组
用列主元高斯消元法求线性代数方程组的解
课程设计任务书前 言回顾普通解方程组的方法,一般都是先逐个削去未知变量,最终得到只有一个未知变量的方程,解之,把得到的值回代到消去变量过程中得到的方程组,逐个求出未知变量。
这种解线性方程组的基本方法就是这里要介绍的高斯消去法。
数学上,高斯消元法(或译:高斯消去法),是线性代数中的一个算法,可用来为线性方程组求解,求出矩阵的秩,以及求出可逆方阵的逆矩阵。
当用于一个矩阵时,高斯消元法会产生出一个“行梯阵式”。
高斯消元法可以用在电脑中来解决数千条等式及未知数。
高斯消元法可以用来找出一个可逆矩阵的逆矩阵。
用关联矩阵表述网络拓扑结构,并根据厂站拓扑结构和网络拓扑结构等概念简化了电力系统的拓扑结构。
根据广义乘法和广义加法的运算规则,将改进的高斯消元算法应用于电力系统拓扑结构分析中,并引入稀疏、分块处理等技术提高了上述拓扑分析的效率。
采用上述高斯消元算法对山东电网220kV 以上的变电站进行拓扑结构分析,结果表明了运用该高斯消元法进行网络拓扑分析的正确性和有效性。
用列主元素法,选取每列的绝对值最大的元素作为消去对象并作为主元素。
然后换行使之变到主元位子上,在进行消元计算。
设)()(k k b X A ,确定第k 列主元所在位置k i ,在交换k i 行和k 行后,在进行消元,并用MATLAB 软件进行求解。
目录摘要....................................................................................... 错误!未定义书签。
第1章绪论 ......................................................................... 错误!未定义书签。
第2章高斯消元法的算法描述 (2)2.1高斯消元法的原理概述 (2)c231730658" 2.1.1高斯消元法的消元过程 (2)c231730658" 2.1.2高斯消元法的回带过程 (3)c231730658" 2.1.3高斯消元法的复杂度分析 (4)c231730658" 2.2列主高斯消元法原理简介 (5)c231730658" 2.2.1列主高斯消元法的消元过程 (6)c231730658" 2.2.2列主高斯消元法的回带过程 (6)c231730658" 2.2.3列主高斯消元法的算法描述 (6)c231730662"第3章高斯消元法的物理应用 (9)3.1c231730663"电网模型的描述 (9)c231730658" 3.2电网模型的问题分析 (9)c231730658"3.3求解计算 (11)c231730693"参考文献 (13)摘 要用列主元素高斯消去法法,选取每列的绝对值最大的元素作为消去对象并作为主元素。
高斯列主元消去法求线性方程
MATLAB 高斯列主元消去一. 高斯列主元消去法的算法过程对于线性方程组AX=b ,A 为n*n 矩阵:(1)Step1——在增广矩阵(A ,b )第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A ,b )做初等行变换使原方程组的第一行第一列的系数 为1,且第一列其它系数都为0.Step2——在增广矩阵(A ,b )中的第二列中(从第二行开始)找到绝对值 最大的元素,将其所在行与第二行交换,再对(A ,b )做初等行变换使原方程组的第二行第二列的系数为1,且第二列中第二行以下的系数都为0. Step3——在增广矩阵(A ,b )中的第三列中(从第三行开始)找到绝对值 最大的元素,将其所在行与第三行交换,再对(A ,b )做初等行变换使原方程组的第三行第三列的系数为1,且第三列中第二行以下的系数都为0。
重复此过程…….(2)如果增广矩阵的秩为n ,则可以将增广矩阵的前n 列化为主对角线都为1的矩阵; 如果增广矩阵的秩为m<n ,则可以将增广矩阵的前m 行m 列矩阵化为主对角线 都是1的矩阵,m 行后的系数均为0;如果增广矩阵的前n 列的秩不等于增广矩 阵的秩,此时方程组无解。
(3)接下来,通过初等变换把对角线上每个1所对应的列上的其他元素变为0,就可以得到增广矩阵的最简阶梯型。
这时可以容易得到最简阶梯型对于方程组的解,即得到方程组的解。
二. 算法的流程图三.运行结果(1)随机生成增广矩阵(6*7):C =-94 -89 -41 88 83 -57 -1441 70 -27 -30 -82 93 43-67 -24 -31 -62 -49 -14 8318 -21 26 83 -15 56 7821 -35 32 -43 15 5 -7454 11 98 10 79 -34 -77方程组的解为:x =-811/542554/10151329/1117521/628-1763/1053-673/4428检查结果:Right result!>>(2)随机生成增广矩阵(6*7):C =78 -42 24 86 68 -43 830 -54 60 -81 11 -97 -44-92 -60 -80 19 67 40 -520 -24 45 -54 -60 90 -4378 18 29 -94 24 49 92-23 -47 -6 15 -66 51 -54 方程组的解为:x =1421/1429417/650-557/592-413/1529253/304964/1123检查结果:Right result!>>四.各个重点步骤的设计方法或注意事项生成增广矩阵时,对生成0到1之间的随机数进行变换:C=floor(200*rand(n,n+1)-100)求方程组的唯一解时,对第i列做初等变换前,应该注意找出首非零元绝对值最大的一行,并与第i行进行交换。
数值分析计算方法实验报告
end;
end;
X=x;
disp('迭代结果:');
X
format short;
输出结果:
因为不收敛,故出现上述情况。
4.超松弛迭代法:
%SOR法求解实验1
%w=1.45
%方程组系数矩阵
clc;
A=[2,10,0,-3;-3,-4,-12,13;1,2,3,-4;4,14,9,-13]
b=[10,5,-2,7]'
b=[10,5,-2,7]'
[m,n]=size(A);
if m~=n
error('矩阵A的行数和列数必须相同');
return;
end
if m~=size(b)
error('b的大小必须和A的行数或A的列数相同');
return;
end
if rank(A)~=rank([A,b])
error('A矩阵的秩和增广矩阵的秩不相同,方程不存在唯一解');
3.实验环境及实验文件存档名
写出实验环境及实验文件存档名
4.实验结果及分析
输出计算结果,结果分析和小结等。
解:1.高斯列主元消去法:
%用高斯列主元消去法解实验1
%高斯列主元消元法求解线性方程组Ax=b
%A为输入矩阵系数,b为方程组右端系数
%方程组的解保存在x变量中
format long;
A=[2,10,0,-3;-3,-4,-12,13;1,2,3,-4;4,14,9,-13]
return;
end
c=n+1;
A(:,c)=b;
for k=1:n-1
列主元高斯消去法和列主元三角分解法解线性方程
计算方法实验报告1课题名称用列主元高斯消去法和列主元三角分解法解线性方程目的和意义高斯消去法是一个古老的求解线性方程组的方法,但由它改进得到的选主元的高斯消去法则是目前计算机上常用的解低阶稠密矩阵方程组的有效方法;用高斯消去法解线性方程组的基本思想时用矩阵行的初等变换将系数矩阵A 约化为具有简单形式的矩阵上三角矩阵、单位矩阵等,而三角形方程组则可以直接回带求解 用高斯消去法解线性方程组b Ax =其中A ∈Rn ×n 的计算量为:乘除法运算步骤为32(1)(1)(21)(1)(1)262233n n n n n n n n n n nMD n ----+=+++=+-,加减运算步骤为(1)(21)(1)(1)(1)(25)6226n n n n n n n n n n AS -----+=++=;相比之下,传统的克莱姆法则则较为繁琐,如求解20阶线性方程组,克莱姆法则大约要19510⨯次乘法,而用高斯消去法只需要3060次乘除法;在高斯消去法运算的过程中,如果出现absAi,i 等于零或过小的情况,则会导致矩阵元素数量级严重增长和舍入误差的扩散,使得最后的计算结果不可靠,所以目前计算机上常用的解低阶稠密矩阵方程的快速有效的方法时列主元高斯消去法,从而使计算结果更加精确; 2、列主元三角分解法高斯消去法的消去过程,实质上是将A 分解为两个三角矩阵的乘积A=LU,并求解Ly=b 的过程;回带过程就是求解上三角方程组Ux=y;所以在实际的运算中,矩阵L 和U 可以直接计算出,而不需要任何中间步骤,从而在计算过程中将高斯消去法的步骤进行了进一步的简略,大大提高了运算速度,这就是三角分解法采用选主元的方式与列主元高斯消去法一样,也是为了避免除数过小,从而保证了计算的精确度计算公式1、 列主元高斯消去法设有线性方程组Ax=b,其中设A 为非奇异矩阵;方程组的增广矩阵为第1步k=1:首先在A 的第一列中选取绝对值最大的元素1l a ,作为第一步的主元素:111211212222112[,]n n n l n nn n a a a a b a a a b a a a b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦a b然后交换A,b 的第1行与第l 行元素,再进行消元计算;设列主元素消去法已经完成第1步到第k -1步的按列选主元,交换两行,消元计算得到与原方程组等价的方程组 Akx=bk第k 步计算如下:对于k=1,2,…,n -11按列选主元:即确定t 使 2如果t ≠k,则交换A,b 第t 行与第k 行元素; 3消元计算消元乘数mik 满足:4回代求解2、 列主元三角分解法 对方程组的增广矩阵 经过k -1步分解后,可变成如下形式:111max 0l i i n a a ≤≤=≠(1)(1)(1)(1)(1)1112111(2)(2)(2)(2)22222()(()1)()()()()()1,1()(,)()[,][,] k k k k nk k nk n k k k k k kk kn k k k k n k k k n nn a a a a b a a a b a a b a b b a a a +++⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥→=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦A b A b ()()max 0k k tk ik k i na a ≤≤=≠,(1,,)ik ik ik kka a m i k n a ←=-=+, (,1,,), (1,,)ij ij ik kji i ik k a a m a i j k n b b m b i k n ←+=+⎧⎨←+=+⎩⎪⎪⎩⎪⎪⎨⎧--=-←←∑+=)1,,2,1(,)(1n n i a x a b x a b x ii n i j j ij i i nnn n [,]A A b =11121,11111222,122221,11,1,1,211,11,2121,112,112,1k k k k k k k j n k k j n k k k i i i k n n kk kj kn k ik ij in i nknjk k k j k n n nnk k n a a a b A a u u u u u u y l l l l l l ll l l l u u u u u y u u u u y a a b a a b l a -------------⎡→⎣⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎦第k 步分解,为了避免用绝对值很小的数kku 作除数,引进量1111 (,1,,;1,2,,) ()/ (1,2,,;1,2,,)k kj kj km mj m k ik ik im mk kkm u a l u j k k n k n l a l u u i k k n k n -=-=⎧=-=+=⎪⎪⎨⎪=-=++=⎪⎩∑∑11(,1,,)k i ik im mk m s a l u i k k n -==-=+∑,于是有kk u =ks ;如果 ,则将矩阵的第t 行与第k 行元素互换,将i,j 位置的新元素仍记为jjl 或jja ,然后再做第k 步分解,这时列主元高斯消去法程序流程图max t ik i n s s ≤≤= ()/ 1,2,,)1 (1,2,,),kk k k t iki k ik u s s s l s s i k k n l i k k n ===++≤=++即交换前的,(且列主元高斯消去法Matlab主程序function x=gauss1A,b,c %列主元法高斯消去法解线性方程Ax=bif lengthA~=lengthb %判断输入的方程组是否有误disp'输入方程有误'return;enddisp'原方程为AX=b:' %显示方程组Abdisp'------------------------'n=lengthA;for k=1:n-1 %找列主元p,q=maxabsAk:n,k; %找出第k列中的最大值,其下标为p,qq=q+k-1; %q在Ak:n,k中的行号转换为在A中的行号if absp<cdisp'列元素太小,detA≈0';break;elseif q>ktemp1=Ak,:; %列主元所在行不是当前行,将当前行与列主Ak,:=Aq,:; 元所在行交换包括bAq,:=temp1;temp2=bk,:;bk,:=bq,:;bq,:=temp2;end%消元for i=k+1:nmi,k=Ai,k/Ak,k; %Ak,k将Ai,k消为0所乘系数Ai,k:n=Ai,k:n-mi,kAk,k:n; %第i行消元处理bi=bi-mi,kbk; %b消元处理endenddisp'消元后所得到的上三角阵是'A %显示消元后的系数矩阵bn=bn/An,n; %回代求解for i=n-1:-1:1bi=bi-sumAi,i+1:nbi+1:n/Ai,i;endclear x;disp'AX=b的解x是' x=b;调用函数解题列主元三角分解法程序流程图列主元三角分解法Matlab主程序①自己编的程序:function x=PLUA,b,eps %定义函数列主元三角分解法函数if lengthA~=lengthb %判断输入的方程组是否有误disp'输入方程有误'return;enddisp'原方程为AX=b:' %显示方程组Abdisp'------------------------'n=lengthA;A=A b; %将A与b合并,得到增广矩阵for r=1:nif r==1for i=1:nc d=maxabsA:,1; %选取最大列向量,并做行交换if c<=eps %最大值小于e,主元太小,程序结束break;elseendd=d+1-1;p=A1,:;A1,:=Ad,:;Ad,:=p;A1,i=A1,i;endA1,2:n=A1,2:n;A2:n,1=A2:n,1/A1,1; %求u1,ielseur,r=Ar,r-Ar,1:r-1A1:r-1,r; %按照方程求取ur,iif absur,r<=eps %如果ur,r小于e,则交换行p=Ar,:;Ar,:=Ar+1,:;Ar+1,:=p;elseendfor i=r:nAr,i=Ar,i-Ar,1:r-1A1:r-1,i; %根据公式求解,并把结果存在矩阵A中endfor i=r+1:nAi,r=Ai,r-Ai,1:r-1A1:r-1,r/Ar,r; %根据公式求解,并把结果存在矩阵A中endendendy1=A1,n+1;for i=2:nh=0;for k=1:i-1h=h+Ai,kyk;endyi=Ai,n+1-h; %根据公式求解yiendxn=yn/An,n;for i=n-1:-1:1h=0;for k=i+1:nh=h+Ai,kxk;endxi=yi-h/Ai,i; %根据公式求解xiendAdisp'AX=b的解x是'x=x'; %输出方程的解②可直接得到P,L,U并解出方程解的的程序查阅资料得子函数PLU1,其作用是将矩阵A分解成L乘以U的形式;PLU2为调用PLU1解题的程序,是自己编的Ⅰ.function l,u,p=PLU1A %定义子函数,其功能为列主元三角分解系数矩阵A m,n=sizeA; %判断系数矩阵是否为方阵if m~=nerror'矩阵不是方阵'returnendif detA==0 %判断系数矩阵能否被三角分解error'矩阵不能被三角分解'endu=A;p=eyem;l=eyem; %将系数矩阵三角分解,分别求出P,L,Ufor i=1:mfor j=i:mtj=uj,i;for k=1:i-1tj=tj-uj,kuk,i;endenda=i;b=absti;for j=i+1:mif b<abstjb=abstj;a=j;endendif a~=ifor j=1:mc=ui,j;ui,j=ua,j;ua,j=c;endfor j=1:mc=pi,j;pi,j=pa,j;pa,j=c;endc=ta;ta=ti;ti=c;endui,i=ti;for j=i+1:muj,i=tj/ti;endfor j=i+1:mfor k=1:i-1ui,j=ui,j-ui,kuk,j;endendendl=trilu,-1+eyem;u=triuu,0Ⅱ.function x=PLU2A,b %定义列主元三角分解法的函数l,u,p=PLU1A %调用PLU分解系数矩阵A m=lengthA; %由于A左乘p,故b也要左乘p v=b;for q=1:mbq=sumpq,1:mv1:m,1;endb1=b1 %求解方程Ly=b for i=2:1:mbi=bi-sumli,1:i-1b1:i-1;endbm=bm/um,m; %求解方程Ux=y for i=m-1:-1:1bi=bi-sumui,i+1:mbi+1:m/ui,i;endclear x;disp'AX=b的解x是' x=b;调用函数解题①②编程疑难这是第一次用matlab编程,对matlab的语句还不是非常熟悉,因此在编程过程中,出现了许多错误提示;并且此次编程的两种方法对矩阵的运算也比较复杂;问题主要集中在循环控制中,循环次数多了一次或者缺少了一次,导致数据错误,一些基本的编程语句在语法上也会由于生疏而产生许多问题,但是语句的错误由于系统会提示,比较容易进行修改,数据计算过程中的一些逻辑错误,比如循环变量的控制,这些系统不会提示错误,需要我们细心去发现错误,不断修正,调试;。
高斯列主元消元法解线性方程组
高斯列主元消元法解线性方程组一、题目:用Gauss 列主元消去法解线性方程组Ax b =,其中,A=17.031 -0.615 -2.991 1.007 -1.006 0.000-1.000 34.211 -1.000 -2.100 0.300 -1.7000.000 0.500 13.000 -0.500 1.000 -1.5004.501 3.110 -3.907 -61.705 12.170 8.9990.101 -8.012 -0.017 -0.910 4.918 0.1001.000 2.000 3.000 4.500 5.000 21.803⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭ 0.230 -52.322 54.000 240.236 29.304 -117.818b ⎛⎫ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭T X=(0.907099 -1.961798 3.293738 -4.500708 3.029344 -5.255068)二、原理及步骤分析设nn ij R a A ⨯∈=][)1(,nn Rb b b b ∈=],,,[)1()2(2)1(1 。
若约化主元素),,2,1(0)(n k a k kk =≠,则通过高斯消元法将方程b AX =约化为三角形方程组求解。
如果在消元过程中发现某个约化主元0)(=k kk a , 则第K 次消元就无法进行。
此外,即使所有约化主元全不为零,虽然可以完成方程组的求解,但也无法保证结果的可靠性,因为计算过程中存在舍入误差。
为减少计算过程中的舍入误差对解的影响,在每次消元前,应先选择绝对值尽可能大的元作为约元的主元,如果在子块的第一列中选取主元,则相应方法称为列主元消元法。
相应过程为:(1)选主元:在子块的第一列中选择一个元)(k k i k a 使)(max k ik ni k kk i a a k ≤≤=并将第k 行元与第k i 行元互换。
高斯列主元消去法例题
高斯列主元消去法例题高斯列主元消去法是解线性方程组的一种方法,也称为高斯-约旦(Gauss-Jordan)消去法。
它的基本思想是通过矩阵的初等行变换,将矩阵化为简化行阶梯形矩阵,然后根据系数矩阵的行列式是否等于0来求得唯一或无穷多解。
下面以一个例题来讲解高斯列主元消去法的步骤。
例题:解下列线性方程组x1 + 2x2 + 3x3 = 94x1 + 5x2 + 6x3 = 247x1 + 8x2 + 10x3 =40首先,将方程组表示为增广矩阵的形式:1 2 3 | 94 5 6 | 247 8 10| 40接下来,要使用高斯列主元消去法,将增广矩阵化为简化行阶梯形矩阵。
具体步骤如下:1.将第一列中的绝对值最大的元素移到第一行。
7 8 10| 404 5 6 | 241 2 3 | 92.用第一行的首元素消元。
7 8 10| 400 1 -2| 60 -6 -21| -273.将第二列中的绝对值最大的元素移到第二行。
7 8 10| 400 -6 -21| -270 1 -2| 64.用第二行的次元素消元。
7 8 10| 400 1 -2| 60 0 -9| 95.将第三列中的绝对值最大的元素移到第三行。
7 8 10| 400 1 -2| 60 0 -9| 96.用第三行的末元素消元。
7 8 10| 400 1 -2| 60 0 1 | -1现在,我们得到了一个简化行阶梯形矩阵,可以根据系数矩阵的行列式是否等于0来求得唯一或无穷多解。
我们发现,最后一行只有一个非零元素,因此,对应的未知数x3的系数不为0,可以直接利用倒推法求得方程组的解。
7.用第二行解出x2x2 - 2x3 = 6x2 = 2x3 + 68.用第一行解出x1x1 + 8x2 + 10x3 = 40x1 + 8(2x3 + 6) + 10x3 = 40x1 + 26x3 = 8综上所述,该线性方程组的解为:x1 = -26t + 8x2 = 2t + 6x3 = t其中,t为任意常数。
高斯列主元消去法解线性方程组的实现
高斯列主元消去法解线性方程组的实现班级学号姓名榴莲一、实验任务采用高斯列主元消去法求解线性方程组,以下消解方程为例。
1 2 1 x1 02 2 2 x2 = 3-1 -3 0 x3 2二、编程环境Windows7,Codeblock.三、算法步骤Gauss 消去法的基本思想是,通过将一个方程乘或除某个数以及两个方程相加减这两种运算手续,逐步减少方程组中变元的数目,最终使某个方程只含有一个变元,从而得出所求的解。
对于,G auss消去法的求解思路为:(1)若,先让第一个方程组保持不变,利用它消去其余方程组中的,使之变成一个关于变元的n-1阶方程组。
(2)按照(1)中的思路继续运算得到更为低阶的方程组。
(3)经过n-1步的消元后,得到一个三角方程。
(4)利用求解公式回代得到线性方程组的解。
四、程序流程图数据结构:i,j 变量double a[10][10] a 矩阵double b[10] b 矩阵double x[10] 求解的x矩阵n 矩阵的维度五、程序#include<stdio.h>#include<math.h>void guess(double a[][10],double b[],double x[],int n) { int k,i,j;for(k=0; k<n-1; k++){ double ma =a[k][k]; int tab = k;for(i=k+1; i<n; i++) {if(fabs(ma)<fabs(a[i][k])){ ma = a[i][k];tab = i;}}double mid; mid= b[k]; b[k] =b[tab]; b[tab] =mid; for(i=k; i<n;i++) {mid = a[k][i];a[k][i] = a[tab][i];a[tab][i] = mid;}for(i=k+1; i<n; i++) { b[i]=b[i]-a[i][k]/a[k][k]* b[k];for(j=k+1; j<n; j++) {a[i][j]=a[i][j]-a[i][k]/a[k][k]*a[k][j];}a[i][k]=0;}}for(k=n-1; k>=0; k--){ double s =0;for(j=k+1; j<n; j++) s += a[k][j]*x[j];x[k]=(b[k]-s)/a[k][k];}}int main(){ int i,j;double a[10][10] = {{1,2,1},{2,2,3},{-1,-3,0}};double b[10] = {0,3,2};double x[10];int k,n=3;guess(a,b,x,n);printf("三角化矩阵A:\n");for(i=0; i<n; i++) {for(j=0; j<n; j++){ printf("%7.2lf",a[i][j]);}printf("\n");}printf("\n 方程数值 b:\n");for(i=0; i<n; i++) printf("%7.2lf",b[i]);printf("\n");printf("\n 求得的函数值 x:\n");for(i=0; i<n; i++) printf("%7.2lf",x[i]);printf("\n");}六、实验结果及分析高斯消去法由消元和回代两个过程组成。
作业一 高斯消元法和列主元消元法
用高斯消元法和列主元消去法求解线性代数方程组(X*是方程组的精确解)1 高斯消去法1.1 基本思想及计算过程高斯(Gauss )消去法是解线性方程组最常用的方法之一,它的基本思想是通过逐步消元,把方程组化为系数矩阵为三角形矩阵的同解方程组,然后用回代法解此三角形方程组得原方程组的解。
为便于叙述,先以一个三阶线性方程组为例来说明高斯消去法的基本思想。
⎪⎩⎪⎨⎧=++II =++I =++III)(323034)(5253)(6432321321321x x x x x x x x x 把方程(I )乘(23-)后加到方程(II )上去,把方程(I )乘(24-)后加到方程(III )上去,即可消去方程(II )、(III )中的x 1,得同解方程组⎪⎩⎪⎨⎧=+-II -=-I =++III)(20223)(445.0)(64323232321x x x x x x x将方程(II )乘(5.03)后加于方程(III ),得同解方程组: ⎪⎩⎪⎨⎧-=-II -=-I =++III)(42)(445.0)(6432332321x x x x x x由回代公式(3.5)得x 3 = 2,x 2 = 8,x 1 = -13。
下面考察一般形式的线性方程组的解法,为叙述问题方便,将b i 写成a i , n +1,i = 1, 2,…,n 。
⎪⎪⎩⎪⎪⎨⎧=++++=++++=+++++++1,3322111,223232221211,11313212111n n n nn n n n n n n n n n a x a x a x a x a a x a x a x a x a a x a x a x a x a(1-1)如果a 11 ≠ 0,将第一个方程中x 1的系数化为1,得)1(1,1)1(12)1(121+=+++n n n a x a x a x其中)0(11)0()1(1aa aijj=, j = 1, …, n + 1(记ij ij a a =)0(,i = 1, 2, …, n ; j = 1, 2, …, n + 1)从其它n –1个方程中消x 1,使它变成如下形式⎪⎪⎩⎪⎪⎨⎧=++=++=++++++)1(1,)1(2)1(2)1(1,2)1(22)1(22)1(1,1)1(12)1(121n n n nn n n n n n n n a x a x a a x a x a a x a x a x(1-2)其中n i a m a aij i ij ij ,,2)1(1)1( =⋅-=,1,,3,211)1(11+==n j a a m i i由方程(1-1)到(1-2)的过程中,元素11a 起着重要的作用,特别地,把11a 称为主元素。
高斯列主元消去法优缺点
高斯列主元消去法优缺点
高斯列主元消去法是解线性方程组的一种常用方法。
它的优点是
可以有效地求解大规模线性方程组,计算精度高,稳定性强,并且可
以通过程序自动化计算。
此外,高斯列主元消去法的求解过程简单明了,易于理解和掌握,对于初学者也比较友好。
不过,高斯列主元消去法也存在一些缺点。
首先,在解决某些具
有特殊形式的线性方程组时,可能需要进行额外的操作,如部分主元
消去、对角线支配等,导致计算难度和复杂度增加。
其次,高斯列主
元消去法在求解稀疏矩阵时,可能会出现计算复杂度较高的情况,甚
至无法求解。
此外,高斯列主元消去法还可能面临误差传播和舍入误差等问题,导致求解结果略有偏差。
综合考虑,高斯列主元消去法在解决一般的
线性方程组问题时,是一种可靠、实用的方法。
但在某些特殊情况下,可能需要选择其他更适合的方法来求解。
解线性方程组-高斯消去法列主元
的数作主元 arkk1
max
kin
aikk
1
,然后将第 r 行和第 k 行交换(如 r k )。从而在计算 lik 时保证了被除
数的绝对值大于等于除数的绝对值。
实际计算时,当最大的 arkk1 很小时,求解结果同样会严重失真,则求解过程应当停止。设 0是某个 很小的数,当 arkk1 时,过程应该停止,此时已不是算法的问题,而是方程组本身的问题了。
x3 5 1 5 , x2 3 3x3 3 3 35 3 4 , x1 7 x2 x3 2 7 4 5 2 1
此方法就是高斯消去法。
计算流程
记初始方程组 Ax b 为 A0 x b0 。
k 1,即消去第 2 到第 n 个方程中的 x1 ,假定 a110 0 , 目标
a110 a120
是:
A
a201
a202
an01 an02
a1n0
b10
a110 a120
a20n
b20
0
a212
对于j k 1, , n 做 aijk aijk1 lik akkj 1
bik bik1 lik bkk1
直到 k n 1时,消元过程结束, An1 成为上三角矩阵,最后一个方程成为一元一次方程(只含 xn ),
第一步,消元过程: 对增广矩阵进行消元,
7b 11ຫໍສະໝຸດ , 0 x1
x
x2
。
x3
2
A b 4
1
1 5 1
1 1 1
gauss列主元消去法条件 -回复
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]。
计算方法实验报告_列主元高斯消去法
row_first=A[i][i]; for(int j=0;j<n+1;j++)
计算方法实验报告
{ A[i][j]=A[i][j]/row_first;
} }
for(int k=n-1;k>0;k--) {
for(int i=0;i<N;i++) {
for(int j=0;j<N;j++) {
A_B[i][j]=A[i][j]; } A_B[i][N]=B[i][0]; } return A_B; }
3
//输出矩阵 A 的 row x col 个元素 void Show_Matrix(double **A,int row,int col) {
for(int i=0;i<N;i++)
{
int row=Choose_Colum_Main_Element(N,A_B,i);
if(Main_Element<=e) goto A_0;
Exchange(A_B,N+1,row,i);
Elimination(N,A_B,i);
cout<<"选取列主元后第"<<i+1<<"次消元:"<<endl;
double factor; for(int i=start+1;i<n;i++) {
factor=A[i][start]/A[start][start]; for(int j=start;j<n+1;j++) {
Gauss消去法求解线性方程组
Gauss消去法求解线性方程组
Gauss消去法,又称高斯-约旦消去法,是求解线性方程组的一种常用方法。
其基本思想是通过行变换将线性方程组转化为行最简形式,然后利用回代法求解。
以下是Gauss消去法求解线性方程组的详细步骤:
1. 将线性方程组的系数矩阵和常数向量组成增广矩阵。
2. 从第一行开始,将第一列的元素作为主元,并通过初等行变换将其它行的第一元素消成0。
3. 将第二行的第二个元素作为主元,并通过初等行变换将其它行的第二元素消成0。
4. 以此类推,直到将增广矩阵转化为行最简形式。
5. 利用回代法求解,即从最后一行开始,解出未知数依次代入上面的方程中求解。
其中,初等行变换包括以下三种:
1. 交换矩阵中两行的位置。
表示为 Ri<->Rj。
2. 将矩阵中某一行的每个元素乘以一个非零常数k。
表示为Ri*k。
3. 将矩阵中某一行的每个元素加上另一行对应元素的k倍。
表
示为 Ri+k*Rj。
Gauss消去法是一种较为常用的求解线性方程组的方法,但当系数矩阵存在奇异现象或行列式为0时,此方法无法求解。
此时可以采用LU分解法、SOR迭代法等其他方法进行求解。
高斯列主元消去法解线性方程组
高斯列主元消去法解线性方程组c语言编写的源程序:#include <stdio.h>#include<math.h>int n;float a[100][100],b[100];void output (){int i,j;printf("the array a,b is\n");for (i=0;i<n;i++){ for (j=0;j<n;j++)printf("%-10f",a[i][j]);printf("%-10f",b[i]);printf("\n");}}void input(){int i,j;printf("input sting a ");scanf("%d",&n);printf("input array a:\n");for(i=0;i<n;i++)for(j=0;j<n;j++){scanf("%f",&a[i][j]);}printf("input array b:\n");for(i=0;i<n;i++)scanf("%f",&b[i]);}void gaosi (){ int k,i,j,max;float ta,tb,m;for(k=0;k<n;k++){max=k;for(i=k+1;i<n;i++){if(fabs(a[i][k])>fabs(a[max][k]))max=i;}if(i!=k){for(j=0;j<n;j++){ta=a[k][j];a[k][j]=a[max][j];a[max][j]=ta;}tb=b[k];b[k]=b[max];b[max]=tb; }output();for(i=k+1;i<n;i++){m=a[i][k]/a[k][k];for(j=k;j<n;j++)a[i][j]=a[i][j]-a[k][j]*m;b[i]=b[i]-m*b[k];output();}}}void qiujie (){ int i,j;float sum;b[n-1]=b[n-1]/a[n-1][n-1];for(i=n-2;i>=0;i--){sum=0;for(j=i+1;j<n;j++)sum=sum+a[i][j]*b[j];b[i]=(b[i]-sum)/a[i][i];}printf("the result is:\n");for(i=0;i<n;i++)printf("x%d=%f\n",i+1,b[i]);}void main(){ input();gaosi();qiujie();}以下是运行结果:输出矩阵的大致变化过程input sting a 4input array a:1.003 0.333 1.504 -0.333-2.011 1.455 0.506 2.9564.329 -1.952 0.006 2.0875.113 -4.004 3.332 -1.112input array b:3.005 5.407 0.136 3.772the result is:x1=-0.325438x2=0.327990x3=2.372718x4=1.040163计算如下方程组:1.003 x1+ 0.333x2+ 1.504x3 -0.333x4=3.005 -2.011x1 + 1.455 x2+ 0.506x3 + 2.956x4=5.4074.329 x1 -1.952x2+ 0.006 x3+ 2.087x4=0.1365.113 x1-4.004x2 + 3.332x3 -1.112x4= 3.772。
(完整版)2.3高斯列主元消去法
2.3高斯列主元消去法解线性方程组一:问题的提出我们都知道,高斯列主元素消去法是计算机上常用来求解线性方程组的一种直接的方法。
就是在不考虑舍入误差的情况下,经过有限步的四则运算可以得到线性方程组的准确解的一类方法。
实际运算的时候因为只能有限小数去计算,因此只能得到近似值。
在实际运算的时候,我们很多时候也常用高斯消去法。
但是高斯消去法在计算机中运算的时候常会碰到两个问题。
1.一旦遇到某个主元等于0,消元过程便无法进行下去。
2.在长期使用中还发现,即使消元过程能进行下去,但是当某个主元的绝对值很小时,求解出的结果与真实结果相差甚远。
为了避免高斯消去法消元过程中出现的上述两个问题,一般采用所谓的选择主元法。
其中又可以分为列选主元和全面选主元两种方法。
目前计算机上常用的按列选主元的方法。
因此我在这里做的也是列选主元高斯消去法。
二、算法的基本思想大家知道,如果一个线性方程组的系数矩阵是上三角矩阵时,即这种方程组我们称之为上三角方程组,它是很容易求解的。
我们只要把方程组的最下面的一个方程求解出来,在把求得的解带入倒数第二个方程,求出第二个解,依次往上回代求解。
然而,现实中大多数线性方程组都不是上面所说的上三角方程组,所以我们有可以把不是上三角的方程通过一定的算法化成上三角方程组,由此我们可以很方便地求出方程组的解。
高斯消元法的目的就是把一般线性方程组简化成上三角方程组。
于是高斯消元法的基本思想是:通过逐次消元将所给的线性方程组化为上三角形方程组,继而通过回代过程求解线性方程组。
三、算法的描述1、设有n 元线性方程组如下:1111n n nn a a a a ⎛⎫ ⎪ ⎪ ⎪⎝⎭K M OM L1n x x ⎛⎫ ⎪ ⎪ ⎪⎝⎭M =1n b b ⎛⎫ ⎪ ⎪ ⎪⎝⎭M 2、 第一步:如果a 11!=0, 令l i1= ai1/a11, I= 2,3,……,n用(-li1)乘第一个方程加到第i 个方程上,得同解方程组:a (1)11 a (1)12 . . . a (1)1nx 1 b (1)1a (1)21 a (1)22 . . . a (1)2n x 2b (1)2. . . . . . . = .a (1)n-11 a (1)n-12 . . a (1)n-1n x n-1b (1)n-1a (1)n1 a (1)n2 . . . a (1)nn x nb (1)n简记为:A (2) x = b (2)其中a (2)ij = a (1)ij – l i1 * a (1)1j , I ,j = 2,3,..,nb(2)I = b(1)I– l i1 * b(1)1 , I = 2,3,...,n第二步:如果a(2)22 != 0,令l i2= a(2)i2/a(2)22, I= 3,……,n依据同样的原理,对矩阵进行化间(省略),依次下去,直到完成!最后,得到上三角方程组:a(1)11a(1)12 . . . a(1)1n x1b(1)10 a(1)22 . . . a(1)2n x2b(1)2. . . . . . . = .0 0 . . a(n-1)n-1n x n-1b(n-1)n-10 0 . . . a(n)nn x n b(n)n简记为:A(n) x = b(n)最后从方程组的最后一个方程进行回代求解为:X n = b(n) / a(n)nnX i = ( b(k)k - a(k)kj x j ) / a(k)kk以上为高斯消去法的基本过程。
高斯消元法和列主元消元法
用第二列的3、4行除以 k22得
- 25 - 5 = 11 = k 32 90 18 11
k
42
=
3 1 9 1
2 1 = 0 1
16 45
第三行减去第二行乘以 k 3 2 , 第四行减去第二行乘以k 4 2 。
由以上可得:
骣 1 5 ç11 ç ç 32 ç 0 19 ç ç 11 11 ç ç ç ç 1870 ç0 0 ç ç 198 ç ç ç ç 0 0 - 1727 ç ç 桫 495 - 4 25 11 1133 198 8195 495 13 ÷ ÷ ÷ 147 ÷ ÷ ÷ 11 ÷ ÷ ÷ ÷ 3003 ÷ ÷ ÷ ÷ 198 ÷ ÷ ÷ 6468 ÷ ÷ ÷ ÷ 495 ÷
- 4 25 11 1133 198 3421705518 183278700
÷ ÷ ÷ ÷ 147 ÷ ÷ ÷ 11 ÷ ÷ ÷ ÷ 3003 ÷ ÷ ÷ ÷ 198 ÷ ÷ 3421705518 ÷ ÷ ÷ ÷ 183278700 ÷
13
回代过程可得:
X 4 = 1; X 3 = 1; X 2 = 1; X 1 = 1;
1 k 41 = 11
第二行减去第一行乘以 k 21 , 第三行减去第一行乘以 第四行减去第一行乘以
k k
31
,
。
41
由此上可得:
骣 1 ç11 ç ç 90 ç0 ç ç 11 ç ç ç ç ç 0 - 25 ç ç 11 ç ç ç 32 ç0 ç ç 桫 11 5 - 4 13 ÷ ÷ ÷ 32 25 147 ÷ ÷ ÷ 11 11 11 ÷ ÷ ÷ ÷ 95 56 126 ÷ ÷ ÷ ÷ 11 11 11 ÷ ÷ ÷ - 27 191 196 ÷ ÷ ÷ ÷ 11 11 11
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
������1(11)
������1(12) ������2(22)
⋯ ⋯ ⋱
������1(1������)
������2(2������) ⋮
⋯ ⋯
������1(1������)
������2(2������) ⋮
���������(���������������) ⋯ ���������(���������������)
=
������2 ⋮
(1)
������������1������1 + ������������2������2 + ⋯ + ������������������������������ = ������������
或写为矩阵形式
简记为������������ = ������.
������11 ������12 ⋯ ������1������ ������1
(5)
{
������=������+1
以上为高斯消去法的基本过程。但是如前面我们所提到的,它存在许多问题。 首先,一旦遇到某个主元���������(���������������) = 0,消元过程便无法进行下去。在长期使用中还发
现,即使消元过程能进行下去,但是当某个主元的绝对值很小时,用其做除数,会导致 其他元素的数量级严重增长和舍入误差的扩散,最后也使得结果与真实结果相差甚远。 为了避免高斯消去法消元过程中出现的上述两个问题,一般采用所谓的选择主元法。其 中又可以分为列选主元和全面选主元两种方法。目前计算机上常用的按列选主元的方法。 因此我在这里做的也是列选主元高斯消去法。他的特点是:每次在系数矩阵中依次按列 在主对角线及以下的元素中,选取绝对值最大的元素作为主元,将它调到主对角线上, 然后用它消去主对角线以下的元素,最后化为同解的上三角形方程组去求解。
用−������������������乘方程组(3) 的第������ 个方程加到第 i 个方程 (������ = ������ + 1, ⋯ , ������. ),消去从������ + 1个 方程到第������个方程的未知数������������,得到方程组(1) 等价的线性方程组������(������+1)������ = ������(������+1).
关键词:线性方程组,消去法,列主元,MATLAB,数值计算
-1By Lyvnee
高斯列主元消去法解线性方程组的 MATLAB 实现
引言
在自然科学和工程技术中许多问题的解决常常归结为解线性代数方程组,例如电学 中的网络问题,船体数学放样中建立三次样条函数问题,用最小二乘法求实验数据的曲 线拟合问题,解非线性方程组问题,用差分法或者有限元法解常微分方程,偏微分方程 边值问题等都导致求解线性方程组,而且后面几种情况常常归结为求解大型线性方程组。
������(1) = (���������(������1��� )) = (������������������), ������(1) = ������. 1)第一步(k = 1). 设������1(11) ≠ 0,首先计算乘数
������������1 = ���������(���11)⁄������1(11) ,������ = 2,3, ⋯ , ������. 用−������������1乘方程组(1) 的第一个方程,加到第������个(������ = 2,3, ⋯ , ������. )方程上,消去方程组(1) 的 从第 2 个方程到第������个方程的未知数������1,得到与方程组(1) 等价的线性方程组
三、高斯消去法的计算过程
设有线性方程组
������11������1 + ������12������2 + ⋯ + ������1������������������ = ������1
{
������21������1 ⋮
+
������22������2
+
Байду номын сангаас⋯+
������2������������������
得到求解公式
������������ = ������(������)⁄���������(���������������)
������
������������ = (���������(���������) − ∑ ���������(���������������) ������������)⁄���������(���������������),������ = ������ − 1, ������ − 2, ⋯ ,1.
-3By Lyvnee
高斯列主元消去法解线性方程组的 MATLAB 实现
简记为
������1(11) ������1(12) ⋯ ������1(1������)
������1
������1(1)
0 ������2(12) ⋮⋮
⋯
������1(1������) ⋮
(���⋮���2) =
������2(1) ⋮
⋮ (���������(���������))
简记为������(������)������ = ������(������).
设���������(���������������) ≠ 0,计算乘数 ������������������ = ���������(���������������)⁄���������(���������������) ,������ = ������ + 1, ⋯ , ������.
3)继续上述过程,且设���������(���������������) ≠ 0(������ = 1,2, ⋯ , ������ − 1),直到完成第 n-1 步消元计 算。最后得到与原方程组等价的简单方程组������(������)������ = ������(������),即
������1(11) ������1(12) ������2(22)
⋯ ������1(1������) ⋯ ������1(2������)
⋱
������1
������1(1)
������2 ⋮
=
������2(2) ⋮
(4)
(
⋯ ���������(���������������)) (������������) (���������(���������))
如果������ ∈ ℝ������×������是非奇异矩阵(即|������| ≠ 0),且���������(���������������) ≠ 0(������ = 1,2, ⋯ , ������ − 1),求解三角形线性方程组(4),
������, ������ = 2,3, ⋯ , ������, ������ = 2,3, ⋯ , ������.
2)第������次消元(������ = 1,2, ⋯ , ������ − 1).
设上述第 1 步,··· ,第 k-1 步消元过程计算已经完成,即已计算好与方程组(1) 等
价的线性方程组
������(������+1), ������(������+1)元素的计算公式为
{������������(���������������(������������+���+11) )==������������(���������������(������������)���)−−������������������������������������������������(������������(���������������)���,),
������1 ������2
������1(1) ������2(2)
⋮ ������������ ⋮
=
⋮ ���������(���������)
(3)
(
⋮ ���������(���������������)
…
⋮ ���������(���������������)
)
(������������)
1)一旦遇到某个主元等于 0,消元过程便无法进行下去。 2)在长期使用中还发现,即使消元过程能进行下去,但是当某个主元的绝对值很 小时,求解出的结果与真实结果相差甚远。 为了避免高斯消去法消元过程中出现的上述两个问题,一般采用所谓的选择主元法。 其中又可以分为列选主元和全面选主元两种方法。目前计算机上常用的按列选主元的方 法。因此我在这里做的也是按列选主元高斯消去法。
二、高斯消去法的基本思想
大家知道,如果一个线性方程组的系数矩阵是上三角矩阵时,即这种方程组我们称
-2By Lyvnee
高斯列主元消去法解线性方程组的 MATLAB 实现
之为上三角方程组,它是很容易求解的。我们只要把方程组的最下面的一个方程求解出 来,在把求得的解带入倒数第二个方程,求出第二个解,依次往上回代求解。然而,现 实中大多数线性方程组都不是上面所说的上三角方程组,所以我们有可以把不是上三角 的方程通过一定的算法化成上三角方程组,由此我们可以很方便地求出方程组的解。高 斯消元法的目的就是把一般线性方程组简化成上三角方程组。于是高斯消元法的基本思 想是:通过逐次消元将所给的线性方程组化为上三角形方程组,继而通过回代过程求解 线性方程组。
我们都知道,高斯列主元素消去法是计算机上常用来求解线性方程组的一种直接的 方法。就是在不考虑舍入误差的情况下,经过有限步的四则运算可以得到线性方程组的 准确解的一类方法。实际运算的时候因为只能有限小数去计算,因此只能得到近似值。 在实际运算的时候,我们很多时候也常用高斯消去法。但是高斯消去法在计算机中运算 的时候常会碰到两个问题。
关于解线性方程组的数值解法一般有两类:直接法和迭代法。直接法就是经过有限 的算术运算,可求的线性方程组精确解的方法(若计算过程中没有舍入误差)。但在实 际计算中由于舍入误差的存在和影响,这种方法也只能求的线性方程组的近似解。本论 文将阐述这类方法中的最基本的高斯消去法及其变形而来的列主元消去法。