matlab求解代数方程组

matlab求解代数方程组

ID:10766524

大小:800.00 KB

页数:15页

时间:2018-07-08

matlab求解代数方程组_第1页
matlab求解代数方程组_第2页
matlab求解代数方程组_第3页
matlab求解代数方程组_第4页
matlab求解代数方程组_第5页
资源描述:

《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%迭代的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。