预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《计算方法》 实验报告 学院:信息学院 专业:计算机科学与技术 指导教师:郭卫斌 班级学号:10101438计102 姓名:闻翰 计算机科学与工程系 实验五线性方程组的迭代法实验 一.实验目的 (1)深入理解线性方程组的迭代法的设计思想,学会利用系数矩阵的性质以保证迭代过程的收敛性,以及解决某些实际的线性方程组求解问题。 (2)熟悉Matlab编程环境,利用Matlab解决具体的方程求根问题。 二.实验要求 建立Jacobi迭代公式、Gauss-Seidel迭代公式和超松弛迭代公式,用Matlab软件实现线性方程组求解的Jacobi迭代法、Gauss-Seidel迭代法和超松弛迭代法,并用实例在计算机上计算。 实验内容 1.实验题目 (1)分别利用Jacobi迭代和Gauss-Seidel迭代求解下列线性方程组,取,要求精度: (2)分别取、1.05、1.1、1.25和1.8,用超松弛法求解上面的方程组,要求精度为。 2.设计思想 1.Jacobi迭代: Jacobi迭代的设计思想是将所给线性方程组逐步对角化,将一般形式的线性方程组的求解归结为对角方程组求解过程的重复。 2.Gauss-Seidel迭代: Gauss-Seidel迭代的设计思想是将一般形式的线性方程组的求解过程归结为下三角方程组求解过程的重复。 3.超松弛迭代: 基于Gauss-Seidel迭代,对i=1,2,…反复执行计算迭代公式,即为超松弛迭代。 3.对应程序 1.Jacobi迭代: function[x,k]=Jacobimethod(A,b,x0,N,emg) %A是线性方程组的左端矩阵,b是右端向量,x0是迭代初始值 %N表示迭代次数上限,emg表示控制精度,k表示迭代次数,x是解 n=length(A); x1=zeros(n,1);x2=zeros(n,1); x1=x0;k=0; r=max(abs(b-A*x1)); whiler>emg fori=1:n sum=0; forj=1:n ifi~=j sum=sum+A(i,j)*x1(j); end end x2(i)=(b(i)-sum)/A(i,i); end r=max(abs(x2-x1)); x1=x2; k=k+1; ifk>N disp('迭代失败,返回'); return; end end x=x1; 2.Gauss-Seidel迭代: function[x,k]=Gaussmethod(A,b,x0,N,emg) %A是线性方程组的左端矩阵,b是右端向量,x0是迭代初始值 %N表示迭代次数上限,emg表示控制精度,k表示迭代次数,x是解 n=length(A); x1=zeros(n,1);x2=zeros(n,1); x1=x0; r=max(abs(b-A*x1)); k=0; whiler>emg fori=1:n sum=0; forj=1:n ifj>i sum=sum+A(i,j)*x1(j); elseifj<i sum=sum+A(i,j)*x2(j); end end x2(i)=(b(i)-sum)/A(i,i); end r=max(abs(x2-x1)); x1=x2; k=k+1; ifk>N disp('迭代失败,返回'); return; end end x=x1; 3.超松弛(SOR)迭代: function[x,k]=SORmethod(A,b,x0,N,emg,w) %A是线性方程组的左端矩阵,b是右端向量,x0是迭代初始值 %N表示迭代次数上限,emg表示控制精度,k表示迭代次数,x是解 %w表示松弛因子 n=length(A); x1=zeros(n,1);x2=zeros(n,1); x1=x0; r=max(abs(b-A*x1)); k=0; whiler>emg fori=1:n sum=0; forj=1:n ifj>=i sum=sum+A(i,j)*x1(j); elseifj<i sum=sum+A(i,j)*x2(j); end end x2(i)=x1(i)+w*(b(i)-sum)/A(i,i); end r=max(abs(x2-x1)); x1=x2; k=k+1; ifk>N disp('迭代失败,返回'); return; end end x=x1; 4.实验结果 1.Jacobi迭代: 2.Gauss-Seidel迭代: 3.超松弛(SOR)迭代: w=1: w=1.05: w=1.1: w=1.25: w=1.8: 实验体会 在同等精度下,Gauss-Seidel迭代法比Jacobi迭代法收敛速度快。一般来说,Gauss-Seidel迭代