matlab---列主元高斯消元法

合集下载

用列主元高斯消元法求线性代数方程组的解

用列主元高斯消元法求线性代数方程组的解

课程设计任务书前 言回顾普通解方程组的方法,一般都是先逐个削去未知变量,最终得到只有一个未知变量的方程,解之,把得到的值回代到消去变量过程中得到的方程组,逐个求出未知变量。

这种解线性方程组的基本方法就是这里要介绍的高斯消去法。

数学上,高斯消元法(或译:高斯消去法),是线性代数中的一个算法,可用来为线性方程组求解,求出矩阵的秩,以及求出可逆方阵的逆矩阵。

当用于一个矩阵时,高斯消元法会产生出一个“行梯阵式”。

高斯消元法可以用在电脑中来解决数千条等式及未知数。

高斯消元法可以用来找出一个可逆矩阵的逆矩阵。

用关联矩阵表述网络拓扑结构,并根据厂站拓扑结构和网络拓扑结构等概念简化了电力系统的拓扑结构。

根据广义乘法和广义加法的运算规则,将改进的高斯消元算法应用于电力系统拓扑结构分析中,并引入稀疏、分块处理等技术提高了上述拓扑分析的效率。

采用上述高斯消元算法对山东电网220kV 以上的变电站进行拓扑结构分析,结果表明了运用该高斯消元法进行网络拓扑分析的正确性和有效性。

用列主元素法,选取每列的绝对值最大的元素作为消去对象并作为主元素。

然后换行使之变到主元位子上,在进行消元计算。

设)()(k k b X A ,确定第k 列主元所在位置k i ,在交换k i 行和k 行后,在进行消元,并用MATLAB 软件进行求解。

目录摘要......................................................................................... 错误!未定义书签。

第1章绪论 ........................................................................... 错误!未定义书签。

第2章高斯消元法的算法描述 (2)2.1高斯消元法的原理概述 (2)2.1.1高斯消元法的消元过程 (2)2.1.2高斯消元法的回带过程 (3)2.1.3高斯消元法的复杂度分析 (4)2.2列主高斯消元法原理简介 (5)2.2.1列主高斯消元法的消元过程 (6)2.2.2列主高斯消元法的回带过程 (6)2.2.3列主高斯消元法的算法描述 (6)第3章高斯消元法的物理应用 (9)3.1电网模型的描述 (9)3.2电网模型的问题分析 (9)3.3求解计算 (11)参考文献 (13)摘 要用列主元素高斯消去法法,选取每列的绝对值最大的元素作为消去对象并作为主元素。

实验三 高斯消去法和三角分解法1

实验三 高斯消去法和三角分解法1

实验报告实验三 高斯消去法与矩阵的三角分解一、实验目的1、掌握列主元素消去法,并且能够用MATLAB 编写相关程序,实现高斯消去法的求解。

2、能够用矩阵理论理解与研究高斯消去法,通过对矩阵的初等变换实现高斯消去法。

3、学会矩阵的三角分解,并且能够用MATLAB 编写相关程序,实现矩阵的三角分解,解方程组。

二、上机内容⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡2822171310871234567112345611123451111234111112311111121111111764321x x x x x x1、用列主元素高斯消去法求解方程组。

2、用列主元消去法求解方程组(实现PA=LU) 要求输出: (1)计算解X;(2)L,U;(3)正整型数组IP(i),(i=1,···,n) (记录主行信息)。

三、实验原理1、列主元素消去法用高斯消去法求解方程组时,为了减小误差,在消去的过程中要避免用绝对值较小的主元素。

因此在高斯消去法的每一步应该在系数矩阵货消去后的低阶矩阵中选取绝对值较大的元素作为主元素,保持|m ik |<=1,以减小计算过程中的舍入误差对计算解的影响。

此方法为完全主元素消去法。

完全主元素消去法在选主元素时花费一定的计算机时间,因此实际计算中常用列主元消去法。

列主元消去法在每次选主元时,仅依次按列选取绝对值最大的元素作为主元素,且仅交换两行,再进行消元计算。

装订 线第k步计算如下:对于k=1,2,…,n-1(1)按列选主元:即确定t使(2)如果t≠k,则交换[A,b]第t行与第k行元素。

(3)消元计算(4)回代求解计算流程图回代求解 b=b/a (当a nn ≠0)b ←(b -∑a x )/adet=a nn *det输出计算解及行列式及detk=1,2,…,n-1输入n ,A,b,εdet=1按列主元|a i(k),k |=max|a ik |C 0=a i(k),k换行 a ik a i(k)j(j=k,…n ) b k b j(k), 消元计算 (i=k+1,…,n ) a ik=a ik -a kk *m ik a ij=a ij -a kj *m ik (j=k+1,…,n )|C 0|<εi k =kdet=a kk det否否是是k<=n-1输出det(A)=0停机停机2. 矩阵的三角分解法 (1)定理设 n n R A ⨯∈ 。

高斯消元法 主元消去法

高斯消元法 主元消去法

实验内容1.编写用高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证.(1)1231231230.101 2.304 3.555 1.1831.347 3.712 4.6232.1372.835 1.072 5.6433.035x x xx x xx x x++=⎧⎪-++=⎨⎪-++=⎩(2)12312312352828321361x x xx x xx x x++=⎧⎪+-=⎨⎪--=⎩MATLAB计算源程序1. 用高斯消元法解线性方程组bAX=的MATLAB程序输入的量:系数矩阵A和常系数向量b;输出的量:系数矩阵A和增广矩阵B的秩RA,RB, 方程组中未知量的个数n 和有关方程组解X及其解的信息.function [RA,RB,n,X]=gaus(A,b)B=[A b]; n=length(b); RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendif RA==RBif RA==ndisp('请注意:因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1); C=zeros(1,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);endendb=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);endelsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')EndEnd2.列主元消元法及其MATLAB程序用列主元消元法解线性方程组bAX=的MA TLAB程序输入的量:系数矩阵A和常系数向量b;输出的量:系数矩阵A和增广矩阵B的秩RA,RB, 方程组中未知量的个数n和有关方程组解X及其解的信息.function [RA,RB,n,X]=liezhu(A,b)B=[A b]; n=length(b); RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendif RA==RBif RA==ndisp('请注意:因为RA=RB=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);endendb=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);endelsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.') endend三.实验过程:1(1)编写高斯消元法的MATLAB文件如下:clear;A=[0.101 2.304 3.555;-1.347 3.712 4.623;-2.835 1.072 5.643];b=[1.183;2.137;3.035];[RA,RB,n,X] =gaus (A,b)运行结果为:请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =-0.39820.01380.3351(2)编写高斯消元法MATLAB文件如下:clear;A=[5 2 1;2 8 -3;1 -3 -6];b=[8;21;1;];[RA,RB,n,X] =gaus (A,b)运行结果为:请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =12-1在MATLAB中利用逆矩阵法检验结果:(1) 在command windows中直接运行命令:A=[0.101 2.304 3.555;-1.347 3.712 4.623;-2.835 1.072 5.643];b=[1.183;2.137;3.035];X=A\b运行结果为:X =-0.39820.01380.3351(2) 在command windows中直接运行命令:A=[5 2 1;2 8 -3;1 -3 -6];b=[8;21;1;];X=A\b运行结果为:X =12-1两小题所得结果相同,检验通过2(1)编写列组高斯消元法MATLAB文件如下:clear;A=[0.101 2.304 3.555;-1.347 3.712 4.623;-2.835 1.072 5.643];b=[1.183;2.137;3.035];[RA,RB,n,X] =liezhu(A,b)运行结果:请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =-0.39820.01380.3351(2)编写列组高斯消元法的MATLAB文件如下:clear;A=[5 2 1;2 8 -3;1 -3 -6];b=[8;21;1;][RA,RB,n,X] =liezhu(A,b)运行结果为:请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =12-1与题 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列主元素消去法matlab

gauss列主元素消去法matlab

高斯列主元素消去法是一种解线性方程组的常用方法,特别在数值分析和线性代数中应用广泛。

在Matlab中,我们可以使用该方法来解决大规模的线性方程组,包括矩阵的求解和矩阵的反转。

一、高斯列主元素消去法的基本原理高斯列主元素消去法是一种基于矩阵消元的方法,它通过一系列的矩阵变换将原始的线性方程组转化为上三角形式,然后再进行回代求解。

这个方法的核心就是通过矩阵的变换来简化原始的线性方程组,使得求解过程更加简单高效。

在Matlab中,我们可以利用矩阵运算和函数来实现高斯列主元素消去法,如`lu`分解函数和`\"`运算符等。

通过这些工具,我们能够快速地求解各种规模的线性方程组并得到准确的结果。

二、高斯列主元素消去法在Matlab中的实现在Matlab中,我们可以通过调用`lu`函数来实现高斯列主元素消去法。

该函数返回一个上三角矩阵U和一个置换矩阵P,使得PA=LU。

通过对U进行回代求解,我们可以得到线性方程组的解。

除了`lu`函数之外,Matlab还提供了一些其他的函数和工具来帮助我们实现高斯列主元素消去法,比如`\"`运算符和`inv`函数等。

通过这些工具的组合使用,我们能够更加灵活地进行线性方程组的求解,并且可以方便地处理特殊情况和边界条件。

三、高斯列主元素消去法的应用与局限性高斯列主元素消去法在实际应用中具有广泛的适用性,特别是对于大规模的线性方程组或者稀疏矩阵的求解。

通过Matlab中的工具和函数,我们可以快速地求解各种规模的线性方程组,并得到高精度的数值解。

然而,高斯列主元素消去法也存在一些局限性,比如对于奇异矩阵或者接近奇异矩阵的情况时,该方法的求解精度可能会下降。

在实际应用中,我们需要结合具体的问题和矩阵特性来选择合适的求解方法,以确保得到准确的结果。

四、个人观点和总结作为一种经典的线性方程组求解方法,高斯列主元素消去法在Matlab 中具有较好的实现和应用效果。

通过对其原理和实现细节的深入理解,我们能够更加灵活地应用该方法,并且能够更好地理解其适用性和局限性。

matlab求解代数方程组解析

matlab求解代数方程组解析

第三讲 Matlab 求解代数方程组理论介绍:直接法+迭代法,简单介绍相关知识和应用条件及注意事项 软件求解:各种求解程序讨论如下表示含有n 个未知数、由n 个方程构成的线性方程组:11112211211222221122n n n n n n nn n na x a x a xb a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪+++=⎩ (1)一、直接法 1.高斯消元法:高斯消元法的基本原理: 在(1)中设110,a ≠将第一行乘以111,k a a -加到第(2,3,,),k k n = 得: (1)(1)(1)(1)11112211(2)(1)(2)22112(2)(2)(2)22n n n n n nn n n a x a x a x b a x a x b a x a x b ⎧+++=⎪++=⎪⎨⎪⎪++=⎩(2)其中(1)(1)1111,.k k aa b b ==再设(2)220,a ≠将(2)式的第二行乘以(2)2(2)22,(3,,)k a k n a -= 加到第k 行,如此进行下去最终得到:(1)(1)(1)(1)11112211(2)(1)(2)22112(1)(1)(1)1,111,1()()n n n n n n n n n n n n n n n n nn n n a x a x a x b a x a x b a x a x b a x b --------⎧+++=⎪++=⎪⎪⎨⎪+=⎪⎪=⎩(3) 从(3)式最后一个方程解出n x ,代入它上面的一个方程解出1n x -,并如此进行下去,即可依次将121,,,,n n x x x x - 全部解出,这样在()0(1,2,,)k kk a k n ≠= 的假设下,由上而下的消元由下而上的回代,构成了方程组的高斯消元法. 高斯消元法的矩阵表示:若记11(),(,,),(,,)T T ij n n n n A a x x x b b b ⨯=== ,则(1)式可表为.Ax b =于是高斯消元法的过程可用矩阵表示为:121121.n n M M M Ax M M M b --=其中:(1)21(1)111(1)1(1)11111n a a M a a ⎛⎫ ⎪ ⎪- ⎪=⎪ ⎪ ⎪ ⎪- ⎪⎝⎭ (2)32(2)222(2)2(2)221111n a a M a a ⎛⎫⎪⎪ ⎪-⎪=⎪ ⎪ ⎪⎪- ⎪⎝⎭高斯消元法的Matlab 程序: %顺序gauss 消去法,gauss 函数 function[A,u]=gauss(a,n) for k=1:n-1%消去过程 for i=k+1:n for j=k+1:n+1%如果a(k,k)=0,则不能削去 if abs(a(k,k))>1e-6 %计算第k 步的增广矩阵 a(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j); else%a(k,k)=0,顺序gauss 消去失败 disp (‘顺序gauss 消去失败‘); pause; exit; end end end end%回代过程 x(n)=a(n,n+1)/a(n,n); for i=n-1:-1:1 s=0; for j=i+1:n s=s+a(i,j)*x(j); endx(i)=(a(i,n+1)-s)/a(i,i); end%返回gauss 消去后的增广矩阵 A=triu(a); %返回方程组的解 u=x ;练习和分析与思考: 用高斯消元法解方程组:12345124512345124512452471523814476192536x x x x x x x x x x x x x x x x x x x x x x ++++=⎧⎪+++=⎪⎪++++=⎨⎪+++=⎪+++=⎪⎩2.列主元素消元法在高斯消元法中进行到第k 步时,不论()k ik a 是否为0,都按列选择()||(,,)k ik a i k n = 中最大的一个,称为列主元,将列主元所在行与第k 行交换再按高斯消元法进行下去称为列主元素消元法。

高斯消元法化简行列式matlab

高斯消元法化简行列式matlab

高斯消元法化简行列式matlab
高斯消元法是一种求解线性方程组和计算行列式的常用方法之一。

在MATLAB中,可以通过编写程序来实现高斯消元法化简行列式。

下面
是使用MATLAB编写的高斯消元法化简行列式的程序。

```matlab
% 计算行列式的函数
function detA = Gauss_det(A)
n = length(A); % 矩阵的阶数
detA = 1; % 存储行列式的值
% 消元过程
for k = 1:n-1
for i = k+1:n
factor = A(i,k)/A(k,k);
for j = k+1:n
A(i,j) = A(i,j) - factor*A(k,j);
end
A(i,k) = 0;
end
detA = detA * A(k,k);
end
detA = detA * A(n,n); % 最后一个元素即为行列式的值
end
```
该程序可以接受一个矩阵作为输入,输出该矩阵的行列式的值。

在程序中,通过嵌套三层循环实现了高斯消元法的算法过程,具体地,外层循环枚举每一行,中层循环枚举当前行以下的行,内层循环枚举
每一列,更新矩阵元素的值。

通过不断消元,矩阵最终变为上三角矩阵,对角线上的元素即为矩阵的行列式的值。

LU分解法、列主元高斯法、Jacobi迭代法、Gauss-Seidel法的原理及Matlab程序

LU分解法、列主元高斯法、Jacobi迭代法、Gauss-Seidel法的原理及Matlab程序

一、实验目的及题目1.1 实验目的:(1)学会用高斯列主元消去法,LU 分解法,Jacobi 迭代法和Gauss-Seidel 迭代法解线性方程组。

(2)学会用Matlab 编写各种方法求解线性方程组的程序。

1.2 实验题目:1. 用列主元消去法解方程组:1241234123412343421233234x x x x x x x x x x x x x x x ++=⎧⎪+-+=⎪⎨--+=-⎪⎪-++-=⎩2. 用LU 分解法解方程组,Ax b =其中4824012242412120620266216A --⎛⎫ ⎪- ⎪= ⎪ ⎪-⎝⎭,4422b ⎛⎫ ⎪ ⎪= ⎪- ⎪-⎝⎭3. 分别用Jacobi 迭代法和Gauss-Seidel 迭代法求解方程组:1232341231234102118311210631125x x x x x x x x x x x x x -+=-⎧⎪-+=-⎪⎨-+=⎪⎪-+-+=⎩二、实验原理、程序框图、程序代码等2.1实验原理2.1.1高斯列主元消去法的原理Gauss 消去法的基本思想是一次用前面的方程消去后面的未知数,从而将方程组化为等价形式:1111221122222n n n n nn n nb x b x b x g b x b x g b x g +++=⎧⎪++=⎪⎨⎪⎪=⎩这个过程就是消元,然后再回代就好了。

具体过程如下: 对于1,2,,1k n =-,若()0,k kk a ≠依次计算()()(1)()()(1)()()/,,1,,k k ik ik kk k k k ij ij ik kjk k k i i ik k m a a a a m a b b m b i j k n++==-=-=+然后将其回代得到:()()()()()1/()/,1,2,,1n n n n nn n k k k k k kj j kk j k x b a x b a x a k n n =+⎧=⎪⎨=-=--⎪⎩∑以上是高斯消去。

matlab---列主元高斯消元法

matlab---列主元高斯消元法

3线性代数方程组数值解法39.(上机题)列主元高斯消去法对于某电路的分析,归结为求线性方程组RI=V ,其中⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡−−−−−−−−−−−−−−−−−−−−=2920009000227005000000413000000003047700000507573000090003079100000000103190000011093513000100001331R ()15,27,23,0,20,12,7,7,10TT V =−−−−(1)编制解n 阶线性方程组Ax b =的列主元高斯消去法的通用程序;(2)用所编程序解线性方程组RI V =,并打印出解向量,保留5位有效数;(3)本题编程中,你提高了那些编程能力?本程序用matlab 编写(1)通用程序如下function [x,det,flag ]=Gauss(A,b)%A 为方程组的系数矩阵%b 为方程组的右端项%x 为方程组的解%det 为系数矩阵A 的行列式的值%flag 为指标向量,flag=‘failure ’表示失败,flag=‘OK ’表示成功[n,m]=size(A);nb=length(b);if n~=merror('A 不是方阵')return;endif m~=nberror('b 的长度不等于A 的阶数')return;endflag='OK';det=1;x=zeros(n,1);for k=1:n-1max1=0;for i=k:nif abs(A(i,k))>max1max1=abs(A(i,k));r=i;endendif max1<1e-10flag='failure';return;endif r>kfor j=k:nz=A(k,j);A(k,j)=A(r,j);A(r,j)=z;endz=b(k);b(k)=b(r);b(r)=z;det=-det;endfor i=k+1:nm=A(i,k)/A(k,k);for j=k+1:nA(i,j)=A(i,j)-m*A(k,j);endb(i)=b(i)-m*b(k);enddet=det*A(k,k);enddet=det*A(n,n)if abs(A(n,n))<1e-10flag='failure';return;endfor k=n:-1:1for j=k+1:nb(k)=b(k)-A(k,j)*x(j);endx(k)=b(k)/A(k,k);endx(k)=b(k)/A(k,k);endvpa(x)digits(5)(2)在命令栏输入矩阵,并执行guass命令如下>>A=[31-13000-10000-1335-90-1100000-931-100000000-1079-30000-9000-3057-70-500000-747-300000000-3041000000-50027-2000-9000-229];>>b=[-15;27;-23;0;-20;12;-7;7;10];>>x=Gauss(A,b);fprintf('%.5g\n',x)运行结果如下:det=6.1817e+013X=-0.289230.34544-0.71281-0.22061-0.43040.15431-0.0578230.201050.29023(3)通过此次编程,让我更加熟悉了matlab程序的编辑,对选择语句,循环语句,循环嵌套等的运用更加熟练,也对列主元Guass消去法解方程组的思想理解更加深刻。

高斯法和列主元高斯消去法解线性方程组(MATLAB版)

高斯法和列主元高斯消去法解线性方程组(MATLAB版)

clear;clc;
%列主元 Gauss 校区法解线性方程组 A=[3 -5 6 4 -2 -3 8; 1 1 -9 15 1 -9 2; 2 -1 7 5 -1 6 11; -1 1 3 2 7 -1 -2; 4 3 1 -7 2 1 1; 2 9 -8 11 -1 -4 -1; 7 2 -1 2 7 -1 9];%系数矩阵 b=[11 2 29 9 5 8 25]';%n 维向量 y=inv(A)*b %matlab 的计算结果 n=length(b);%方程个数 n x=zeros(n,1);%未知向量 %-------------消去----------for k=1:n-1 Auk=A(k:n,k); [m,u]=max(abs(Auk)); u=u+k-1 %u 为最大元所在的列 %------交换最大的行和当前行的值------for j=k:n temp=A(u,j);A(u,j)=A(k,j);A(k,j)=temp; end temp=b(k);b(k)=b(u);b(u)=temp; % % % if A(k,k)==0; error('Error'); end for i=k+1:n Aபைடு நூலகம்i,k)=A(i,k)/A(k,k); Aik=A(i,k)/A(k,k) for j=k:n A(i,j)=A(i,j)-Aik*A(k,j); end A b(i)=b(i)-Aik*b(k) end
%
end %-------------回代----------x(n)=b(n)/A(n,n) for k=n-1:-1:1 S=b(k); for j=k+1:n S=S-A(k,j)*x(j);
end x(k)=S/A(k,k) end x %程序的计算结果 error=abs(x-ones(n,1))%误差 %误差小于直接进行高斯消去的计算误差

matlab高斯列主元消元法

matlab高斯列主元消元法

matlab高斯列主元消元法高斯列主元消元法是一种用于解线性方程组的算法,其基本思想是将增广矩阵转化为上三角矩阵,从而可以通过回带求解未知数。

在MATLAB中,可以使用以下步骤实现高斯列主元消元法:1.读入线性方程组的系数矩阵和常数列向量。

2.对增广矩阵进行初等行变换,将主元变为1。

3.对增广矩阵进行初等列变换,将每一列的非主元变为0。

4.回带求解未知数。

下面是一个示例代码,演示如何使用MATLAB实现高斯列主元消元法:matlab复制代码% 读入线性方程组的系数矩阵和常数列向量A = [123; 456; 7810];b = [6; 15; 25];% 高斯列主元消元法n = length(b); % 方程组阶数for i = 1:n-1% 将第i列的非主元变为0for j = i+1:nfactor = A(j,i) / A(i,i);A(j,i:n) = A(j,i:n) - factor * A(i,i:n);b(j) = b(j) - factor * b(i);endend% 回带求解未知数x = zeros(n,1);x(n) = b(n) / A(n,n);for i = n-1:-1:1x(i) = (b(i) - A(i,i+1:n) * x(i+1:n)) / A(i,i);end% 输出结果disp('线性方程组的解为:');disp(x);在这个示例代码中,我们使用MATLAB的矩阵运算实现高斯列主元消元法。

在循环过程中,我们首先将当前列的主元变为1,然后将该列的非主元通过初等列变换变为0。

最后,我们通过回带求解未知数。

需要注意的是,在MATLAB中,矩阵的下标从1开始,因此在代码中需要注意下标的范围。

高斯消元法(含MATLAB编程)

高斯消元法(含MATLAB编程)

第2次选列主元后的增广矩阵
1 6 5 6 6 0 11/ 3 4 13/ 3 11 0 5/ 3 5 11/ 3 4 2 0 1 0 0
第2次消元后的增广矩阵
1 6 5 6 6 0 11/ 3 4 13 / 3 11 0 0 75 /11 62 /11 9 0 0 24 /11 37 /11 6
(1)输入增广矩阵A=[-3 2 6 4;10 -7 0 7;5 -1 5 6] 第1次选列主元后的增广矩阵 10 -3 -7 2 6 0 4 6 7 61/10 5/2 7
第1次消元后的增广矩阵 5 -1 5 10 -7 0 0 0 -1/10 5/2 6 5
第2次选列主元后的增广ห้องสมุดไป่ตู้阵 10 -7 0 0 0 5/2 -1/10 5 6
3 2 1 1 4 3 2 1 1 4 3/4 4 3 2 1 3/4 7/4 3/2 5/4 1/4 ( 2) A : b 1/2 3 4 3 1 1/2 6/7 4 3 1 4 1 1/4 2 3 4 1 1/4 5/7 3 3 2 1 1 4 3 2 1 1 4 3/4 7/4 3/2 5/4 1/4 3/4 7/4 3/2 5/4 1/4 , 1/2 6/7 12/7 10/7 -12/7 1/2 6/7 12/7 10/7 -12/7 1 1/4 5/7 5/6 5/3 0 1/4 5/7 5/6 4 2 1 1 4 3 3/ 4 1 7 / 4 3/ 2 5/ 4 ,U L 1/ 2 6 / 7 1 12 / 7 10 / 7 1 5/ 3 1/ 4 5 / 7

matlab 列Gauss消去法

matlab 列Gauss消去法

列Gauss 消去法进行列主元Gauss 消去法的矩阵表示形式 U A Q L Q L Q L n n =⋅⋅⋅--112211对于某电路的分析,归结为求解线性方程组RI=V 。

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=10; 29 2- 0 0 0 9- 0 0 0 7 2- 27 0 0 5- 0 0 0 0 7- 0 0 41 30- 0 0 0 0 0 120 0 30- 47 7- 0 0 0 0 20- 0 5- 0 7- 57 30- 0 0 0 0 9- 0 0 0 30- 79 10- 0 0 23- 0 0 0 0 0 10- 31 9- 0 27 0 0 0 0 11- 0 9- 35 13- 15- 0 0 0 10- 0 0 0 13- 31R T T V ]10,7,7,12,20,0,23,27,15[----=(1)编制解n 阶线性方程组Ax=b 的列主元三角分解法的通用程序;(2)用所编制的程序解线性方程组RI=V ,并打印出解向量,保留五位有效数;(3)本编程之中,你提高了哪些编程能力?编程思路列主元Gauss 消去法的基本步骤如下:1.从第一行到第n 行找出增广矩阵R(i,1)中最大的数R(k,1),然后将第一行和第k 行的所有元素互相交换,对第2行到第n 行消去每行第一个数值。

2.从第2行到第n 行找出增广矩阵R(i,2)中最大的数R(k,2),然后将第二行和第k 行的所有元素互相交换,对第2行到第n 行消去每行第二个数值。

3.重复这个过程,直到第n 行,完成全部消元。

4.从第n 行开始计算出I(n),然后回代求解出所有解。

M 文件源代码:function R=fGauss();R=[31 -13 0 0 0 -10 0 0 0 -15;-13 35 -9 0 -11 0 0 0 0 27;⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=----)1()1(1)1(3)1(2)1(1)1(3)1(13)1(33)1(32)1(31)1(2)1(12)1(23)1(22)1(21)1(1)1(11)1(13)1(12)1(11nn nn n n n n n n n n n a a a a a a a a a a a a a a a a a a a a A0 -9 31 -10 0 0 0 0 0 -23;0 0 -10 79 -30 0 0 0 -9 0;0 0 0 -30 57 -7 0 -5 0 -20;0 0 0 0 -7 47 -30 0 0 12;0 0 0 0 0 -30 41 0 0 -7;0 0 0 0 -5 0 0 27 -2 7;0 0 0 -9 0 0 0 -2 29 10; ];m=9; %行数n=m+1; %扩展矩阵的列数%列主元法将矩阵转化成上三角矩阵for i=1:m;k=i; %当前计算到第k行% for count=k:n; %对k行下面的矩阵进行处理%a=abs(R(k,k));j=k+1;kk=k;while j<nb=abs(R(j,k));if b>aa=b;kk=j; %kk是最大的数所在的行else j=j+1;endendif kk~=kfor ii=k:n; %交换两行aa=R(k,ii);R(k,ii)=R(kk,ii);R(kk,ii)=aa;endend% end%l=0;pp=k+1;for p=pp:m;q=k;l=R(p,k)/R(k,k);while q<n+1R(p,q)=R(p,q)-l*R(k,q);q=q+1;end% fprintf('l=%f\n',l);endend% fprintf('%f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\n',R);% fprintf('\n \n \n');%回代过程,将结果存放在I矩阵中I=[0 0 0 0 0 0 0 0 0]; %存放结果的矩阵s=0;t=0;I(1,m)=R(m,n)/R(m,m);for s=(m-1):-1:1t=s+1;sum=0;while t<nsum=sum+R(s,t)*I(1,t);t=t+1;%fprintf('sum=%f\n',sum);endI(1,s)=(R(s,n)-sum)/R(s,s);%fprintf('sum=%f\t R(ss)=%f\n',sum,R(s,s));endfprintf('%f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\n',I);(1)方程的解向量为[]T-0.3454360.7128120.289234=-0.220609--I0.2902290.0578230.2010540.4304000.154309-(2)编写此题的感想:在本题的编程中,使我对for、while等循环结构的分析使用更为熟练,对于循环里面套循环的分析思路更为清晰。

高斯消元法,列主元素消元法及LU分解法的matlab程序

高斯消元法,列主元素消元法及LU分解法的matlab程序

§2.2.1高斯消元法的MATLAB程序f unction [RA,RB,n,X]=gaus(A,b)B=[A b]; n=length(b); RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendif RA==RBif RA==ndisp('请注意:因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1); C=zeros(1,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);endendb=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);endelsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.') endend运行命令及结果a=[2.51 1.48 4.53;1.48 0.93 -1.30 ;2.68 3.04 -1.48];b=[0.05;1.03;-0.53];[RA,RB,n,X] =gaus (A,b)请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =1.4531-1.5892-0.2749§2.2.2 列主元素消元法的MATLAB程序function [RA,RB,n,X]=liezhu(A,b)B=[A b]; n=length(b); RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendif RA==RBif RA==ndisp('请注意:因为RA=RB=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);endendb=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);endelsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.') endend运行命令及结果a=[2.51 1.48 4.53;1.48 0.93 -1.30 ;2.68 3.04 -1.48];b=[0.05;1.03;-0.53];[RA,RB,n,X]=liezhu(A,b)请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =1.4531-1.5892-0.2749§2.2.3 LU分解法的MATLAB程序function hl=zhjLU(A)[n n] =size(A); RA=rank(A);if RA~=ndisp('请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的秩RA如下:'), RA,hl=det(A);returnendif RA==nfor p=1:nh(p)=det(A(1:p, 1:p));endhl=h(1:n);for i=1:nif h(1,i)==0disp('请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:'), hl;RAreturnendendif h(1,i)~=0disp('请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:')for j=1:nU(1,j)=A(1,j);endfor k=2:nfor i=2:nfor j=2:nL(1,1)=1;L(i,i)=1;if i>jL(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);elseU(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);endendendendhl;RA,U,Lendend运行命令及结果a=[2.51 1.48 4.53;1.48 0.93 -1.30 ;2.68 3.04 -1.48];hl=zhjLU(A)请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:RA =3U =2.5100 1.4800 4.53000 0.9300 -3.97110 0 -0.0837L =1.0000 0 00.5896 1.0000 01.0677 1.5696 1.0000hl =2.5100 0.1439 13.6410>> U=[2.5100 1.4800 4.53000 0.9300 -3.97110 0 -0.0837];>>L= [1.0000 0 00.5896 1.0000 01.0677 1.5696 1.0000];>> b=[0.05;1.03;-0.53];U1=inv(U); L1=inv(L); X=U1*L1*b,x=A\bX =-111.8440110.953125.7324x =1.4531-1.5892-0.2749例2.1: 用高斯消元法求解下面的非齐次线性方程组。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3线性代数方程组数值解法
39.(上机题)列主元高斯消去法
对于某电路的分析,归结为求线性方程组RI=V ,其中
⎥⎥⎥⎥⎥⎥⎥⎥
⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡−−−−−−−−−−−−−−−−−−−−=292000900022700500000041300000000304770000
0507573000090003079100000000103190000011093513000100001331R ()15,27,23,0,20,12,7,7,10T
T V =−−−−(1)编制解n 阶线性方程组Ax b =的列主元高斯消去法的通用程序;
(2)用所编程序解线性方程组RI V =,并打印出解向量,保留5位有效数;
(3)本题编程中,你提高了那些编程能力?
本程序用matlab 编写
(1)通用程序如下
function [x,det,flag ]=Gauss(A,b)
%
A 为方程组的系数矩阵%
b 为方程组的右端项%
x 为方程组的解%
det 为系数矩阵A 的行列式的值%flag 为指标向量,flag=‘failure ’表示失败,flag=‘OK ’表示成功
[n,m]=size(A);nb=length(b);
if n~=m
error('A 不是方阵')
return;
end
if m~=nb
error('b 的长度不等于A 的阶数')
return;
end
flag='OK';det=1;x=zeros(n,1);
for k=1:n-1
max1=0;
for i=k:n
if abs(A(i,k))>max1
max1=abs(A(i,k));r=i;
end
end
if max1<1e-10
flag='failure';return;
end
if r>k
for j=k:n
z=A(k,j);A(k,j)=A(r,j);A(r,j)=z;
end
z=b(k);b(k)=b(r);b(r)=z;det=-det;
end
for i=k+1:n
m=A(i,k)/A(k,k);
for j=k+1:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i)=b(i)-m*b(k);
end
det=det*A(k,k);
end
det=det*A(n,n)
if abs(A(n,n))<1e-10
flag='failure';return;
end
for k=n:-1:1
for j=k+1:n
b(k)=b(k)-A(k,j)*x(j);
end
x(k)=b(k)/A(k,k);
end
x(k)=b(k)/A(k,k);
end
vpa(x)
digits(5)
(2)在命令栏输入矩阵,并执行guass命令如下>>A=[31-13000-10000
-1335-90-110000
0-931-1000000
00-1079-30000-9
000-3057-70-50
0000-747-3000
00000-304100
0000-50027-2
000-9000-229];
>>b=[-15;27;-23;0;-20;12;-7;7;10];
>>x=Gauss(A,b);fprintf('%.5g\n',x)
运行结果如下:
det=
6.1817e+013
X=
-0.28923
0.34544
-0.71281
-0.22061
-0.4304
0.15431
-0.057823
0.20105
0.29023
(3)通过此次编程,让我更加熟悉了matlab程序的编辑,对选择语句,循环语句,循环嵌套等的运用更加熟练,也对列主元Guass消去法解方程组的思想理解更加深刻。

相关文档
最新文档