您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > matlab---列主元高斯消元法
3333线性代数方程组数值解法线性代数方程组数值解法线性代数方程组数值解法线性代数方程组数值解法39.39.39.39.(上机题)列主元高斯消去法对于某电路的分析,归结为求线性方程组RI=V,其中⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡−−−−−−−−−−−−−−−−−−−−=2920009000227005000000413000000003047700000507573000090003079100000000103190000011093513000100001331R()15,27,23,0,20,12,7,7,10TTV=−−−−(1)编制解n阶线性方程组Axb=的列主元高斯消去法的通用程序;(2)用所编程序解线性方程组RIV=,并打印出解向量,保留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);ifn~=merror('A不是方阵')return;endifm~=nberror('b的长度不等于A的阶数')return;endflag='OK';det=1;x=zeros(n,1);fork=1:n-1max1=0;fori=k:nifabs(A(i,k))max1max1=abs(A(i,k));r=i;endendifmax11e-10flag='failure';return;endifrkforj=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;endfori=k+1:nm=A(i,k)/A(k,k);forj=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)ifabs(A(n,n))1e-10flag='failure';return;endfork=n:-1:1forj=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---列主元高斯消元法
链接地址:https://www.777doc.com/doc-7145635 .html