欢迎来到天天文库
浏览记录
ID:58676582
大小:62.00 KB
页数:4页
时间:2020-10-15
《matlab-线性方程组的迭代解法-GaussSeidel.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验1:线性方程组的迭代解法专业班级学号姓名实验日期1、实验环境MATLAB2009A2、实验目的和要求目的:利用Gauss-Seidel编程法求解方程组要求:代码能列出每一次迭代的中间值3、解题思路、代码3.1解题思路Gauss-Seidel迭代公式:xi(k+1)=(bi-aijxj(k+1)-aijxj(k))/aij(i=1,2,…,n)3.2代码functionx=GaussSeidel(A,b,es,maxit)%GaussSeidel:GaussSeidelmethod%x=GaussSeidel(A,b):GaussSeidelwithoutrelaxatio
2、n%input:%A=coefficientmatrix%b=righthandsidevector%es=stopcriterion(default=0.00001%)%maxit=maxiteration(default=50)%output:%x=solutionvectorifnargin<2,error('atleast2inputargumentsrequired'),endifnargin<4
3、isempty(maxit),maxit=50;endifnargin<3
4、isempty(es),es=0.00001;endk=0xk=[0000][m,n]=siz
5、e(A);ifm~=n,error('MatrixAmustbesquare');endC=A;fori=1:nC(i,i)=0;x(i)=0;endx=x';fori=1:nC(i,1:n)=C(i,1:n)/A(i,i);endfori=1:nd(i)=b(i)/A(i,i);enditer=0;while(1)xold=x;fori=1:nx(i)=d(i)-C(i,:)*x;ifx(i)~=0ea(i)=abs((x(i)-xold(i))/x(i))*100;endendk=k+1xk=x'%此行不打分号,并且转置,以便于输出每次迭代的结果iter=iter+1;i
6、f(max(ea)<=es
7、iter==maxit)break;endendend4、实验步骤4.1输入:4.2输出:……………….5、讨论和分析GaussSeidel迭代法是通过利用xi(k+1)=(bi-aijxj(k+1)-aijxj(k))/aij(i=1,2,…,n)这个公式,经过若干次运算,使结果越来越逼近方程的真实解。实验的重点是代码中如何实现迭代公式以及代码中控制好循环。GaussSeidel迭代法,是jacobi迭代法的改进,将刚算出来的xi(k+1)立即用于下一步的运算,因此,在两种方法同时收敛的情况下,GaussSeidel迭代法收敛速度更快。
此文档下载收益归作者所有