资源描述:
《matlab求解代数方程组》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第三讲Matlab求解代数方程组理论介绍:直接法+迭代法,简单介绍相关知识和应用条件及注意事项软件求解:各种求解程序讨论如下表示含有个未知数、由个方程构成的线性方程组:(1)一、直接法1.高斯消元法:高斯消元法的基本原理:在(1)中设将第一行乘以加到第得:(2)其中再设将(2)式的第二行乘以加到第行,如此进行下去最终得到:(3)从(3)式最后一个方程解出,代入它上面的一个方程解出,并如此进行下去,即可依次将全部解出,这样在的假设下,由上而下的消元由下而上的回代,构成了方程组的高斯消元法.高斯消元法的矩阵表示:若记,则(1)式可表为15于是高斯消元法的过程可
2、用矩阵表示为:其中:高斯消元法的Matlab程序:%顺序gauss消去法,gauss函数function[A,u]=gauss(a,n)fork=1:n-1%消去过程fori=k+1:nforj=k+1:n+1%如果a(k,k)=0,则不能削去ifabs(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;endendendend15%回代过程x(n)=a(n,n+1)/a(n,n)
3、;fori=n-1:-1:1s=0;forj=i+1:ns=s+a(i,j)*x(j);endx(i)=(a(i,n+1)-s)/a(i,i);end%返回gauss消去后的增广矩阵A=triu(a);%返回方程组的解u=x;练习和分析与思考:用高斯消元法解方程组:2.列主元素消元法在高斯消元法中进行到第步时,不论是否为0,都按列选择中最大的一个,称为列主元,将列主元所在行与第行交换再按高斯消元法进行下去称为列主元素消元法。列主元素消元法的matlab程序%列主元guass消去函数function[A,u]=gauss(a,n)%消去过程fork=1:n-
4、1%选主元15c=0;forq=k:nifabs(a(q,k))>cc=a(q,k);l=q;endend%如果主元为0,则矩阵A不可逆ifabs(c)<1e-10disp(‘error’);pause;exitend%如果l不等于k,则交换第l行和第k行ifl~=kforq=k:n+1temp=a(k,q);a(k,q)=a(l,q);a(l,q)=temp;endend%计算第k步的元素值fori=k+1:nforj=k+1:na(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j);endendend%回代过程x(n)=a(n,n+1)/
5、a(n,n);15fori=n-1:-1:1s=0;forj=i+1:ns=a+a(i,j)*x(j);endx(i)=(a(i,n+1)-s)/a(i,i);end%返回列主元gauss消去后的增广矩阵A=triu(a);%返回方程组的解u=x;练习和分析与思考:用列主元消去法重新求解gauss消元法求解的上述问题。二、迭代法1.迭代法的总体思想(1)迭代公式的构造:对线性方程组,可以构造迭代公式给出由迭代公式的如果收敛于则就是原方程组的解。(2)矩阵的分解:设线性方程组,其中非奇异,则可以把矩阵分解:,,于是化为与之对应的迭代公式为:2.雅可比(Jac
6、obian)迭代法公式:15用矩阵的元素表示为:Jacobian迭代法的Matlab程序function[y,n]=jacobi(A,b,x0,eps)%误差ifnargin==3eps=1.0e-6;elseifnargin<3errorreturnend%求A的对角矩阵,下三角阵,上三角阵D=diag(A);diag(diag(A))?L=-tril(A,-1);U=-triu(A,1);B=D(L+U);f=Db;y=B*x0+f;%迭代的次数n=1;%当误差没有满足要求时继续迭代whilenorm(y-x0)>=epsx0=y;y=B*x0+f
7、;n=n+1;end15练习和分析与思考:利用Jacobian迭代法求解方程组:3.高斯-塞德尔(Gauss-Seidel)迭代法公式:将Jacobi迭代公式改进为,于是得到.用矩阵的元素表示为:Gauss-Seidel迭代法的Matlab程序function[y,n]=gauseidel(A,b,x0,eps)%误差ifnargin==3eps=1.0e-6;elseifnargin<3errorreturnend%求A的对角矩阵,下三角阵,上三角阵D=diag(A);diag(diag(A))?L=-tril(A,-1);U=-triu(A,1);G=
8、(D-L)U;f=(D-L)b;y=G*x0+f;15%迭代的