实验五线性方程组的迭代法实验

《计算方法》

实验报告

学 院: 信息学院

专 业: 计算机科学与技术

指导教师: 郭卫斌

班级学号: 10101438 计102

姓 名: 闻翰

计算机科学与工程系

实验五 线性方程组的迭代法实验

一. 实验目的

(1)深入理解线性方程组的迭代法的设计思想,学会利用系数矩阵的性质以保证迭

代过程的收敛性,以及解决某些实际的线性方程组求解问题。 (2)熟悉Matlab编程环境,利用Matlab解决具体的方程求根问题。

二. 实验要求

建立Jacobi迭代公式、Gauss-Seidel迭代公式和超松弛迭代公式,用Matlab软件实现线性方程组求解的Jacobi迭代法、Gauss-Seidel迭代法和超松弛迭代法,并用实例在计算机上计算。

三. 实验内容

1. 实验题目

(1)分别利用Jacobi迭代和Gauss-Seidel迭代求解下列线性方程组,取

T5

x0,0,0,0,0,0,要求精度10:

410100

141010

014001

100410

010141

0x10

x0521x300x461x5246x6

(2)分别取1、1.05、1.1、1.25和1.8,用超松弛法求解上面的方程组,要求精度

为105。 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)); while r>emg for i=1:n sum=0; for j=1:n if i~=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; if k>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;

while r>emg for i=1:n sum=0; for j=1:n if j>i

sum=sum+A(i,j)*x1(j); elseif j

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; if k>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;

while r>emg for i=1:n sum=0; for j=1:n if j>=i

sum=sum+A(i,j)*x1(j); elseif j

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; if k>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迭代法比Jacobi迭代法收敛要快,但有时反而比Jacobi迭代法要慢,而且Jacobi迭代法更易于优化。因此,两种方法各有优缺点,使用时要根据所需适当选取。

当松弛因子为1时,超松弛迭代方法等同于Gauss-Seidel迭代法,这和理论推导完全相同。另外,超松弛迭代法的收敛速度完全取决于松弛因子的选取,一个适当的因子能大大提高收敛速度。

《计算方法》

实验报告

学 院: 信息学院

专 业: 计算机科学与技术

指导教师: 郭卫斌

班级学号: 10101438 计102

姓 名: 闻翰

计算机科学与工程系

实验五 线性方程组的迭代法实验

一. 实验目的

(1)深入理解线性方程组的迭代法的设计思想,学会利用系数矩阵的性质以保证迭

代过程的收敛性,以及解决某些实际的线性方程组求解问题。 (2)熟悉Matlab编程环境,利用Matlab解决具体的方程求根问题。

二. 实验要求

建立Jacobi迭代公式、Gauss-Seidel迭代公式和超松弛迭代公式,用Matlab软件实现线性方程组求解的Jacobi迭代法、Gauss-Seidel迭代法和超松弛迭代法,并用实例在计算机上计算。

三. 实验内容

1. 实验题目

(1)分别利用Jacobi迭代和Gauss-Seidel迭代求解下列线性方程组,取

T5

x0,0,0,0,0,0,要求精度10:

410100

141010

014001

100410

010141

0x10

x0521x300x461x5246x6

(2)分别取1、1.05、1.1、1.25和1.8,用超松弛法求解上面的方程组,要求精度

为105。 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)); while r>emg for i=1:n sum=0; for j=1:n if i~=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; if k>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;

while r>emg for i=1:n sum=0; for j=1:n if j>i

sum=sum+A(i,j)*x1(j); elseif j

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; if k>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;

while r>emg for i=1:n sum=0; for j=1:n if j>=i

sum=sum+A(i,j)*x1(j); elseif j

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; if k>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迭代法比Jacobi迭代法收敛要快,但有时反而比Jacobi迭代法要慢,而且Jacobi迭代法更易于优化。因此,两种方法各有优缺点,使用时要根据所需适当选取。

当松弛因子为1时,超松弛迭代方法等同于Gauss-Seidel迭代法,这和理论推导完全相同。另外,超松弛迭代法的收敛速度完全取决于松弛因子的选取,一个适当的因子能大大提高收敛速度。


相关内容

  • 迭代法实验
  • 实验五 线性方程组的迭代法实验 一. 实验目的 (1)深入理解线性方程组的迭代法的设计思想,学会利用系数矩阵的性质以保证迭 代过程的收敛性,以及解决某些实际的线性方程组求解问题. (2)熟悉Matlab编程环境,利用Matlab解决具体的方程求根问题. 二. 实验要求 建立Jacobi迭代公式.Ga ...

  • 数学建模的实验报告
  • 数学建模 实验报告 姓名:学院: 专业班级: 学号: 数学建模实验报告(一) --用最小二乘法进行数据拟合 一.实验目的: 1. 学会用最小二乘法进行数据拟合. 2. 熟悉掌握matlab 软件的文件操作和命令环境. 3. 掌握数据可视化的基本操作步骤. 4. 通过matlab 绘制二维图形以及三维 ...

  • 数值计算基础
  • 数值计算基础 实验指导书 2010年 目录 实验一 直接法解线性方程组的 ................................ 1 实验二 插值方法 ........................................... 10 实验三 数值积分 ............. ...

  • 雅可比迭代法和高斯-塞德尔迭代法求解线性方程组
  • 实验报告内容 一 实验目的与要求(实验题目) 1.分别利用雅可比迭代法和高斯-塞德尔迭代法求解以下线性方程组 ⎧8x 1-3x 2+2x 3=20 ⎪⎨4x 1+11x 2-x 3=33 ⎪6x +3x +12x =3623⎩1 使得误差不超过10 -4 2. 用不动点迭代法求方程的实根: x 3+ ...

  • 非线性方程的数值计算方法实验
  • 非线性方程的数值计算方法实验 一.实验描述: 在科学研究和工程实践中,经常需要求解大量的非线性方程.本实验正是通过计算机的程序设计,使用迭代法.波尔查诺二分法.试值法.牛顿-拉夫森法和割线法,来实现非线性方程的求解. 本实验中通过对各种方法的实践运用,可以比较出各种方法的优缺点.并且,通过完成实验, ...

  • 二分法及迭代法求解非线性方程根
  • 二分法及迭代法求解非线性方程根 班级: 姓名: 方 学号: 日期: 一.实验目的 1.熟悉二分法及迭代法求解非线性方程根的数值算法: 2.用matlab软件实现二分法及迭代法,掌握迭代法的收敛性和收敛速度问题及其加速方法: 二.基本理论及背景 1.牛顿迭代法具有平方收敛的速度,所以在迭代过程中只要迭 ...

  • 化学计量学
  • 南京工业大学 化学计量学 试题(A )卷(闭) 2012-2013学年第二学期 使用班级班级 学号 姓名 一.单项选择题(每小题2分,共30分) 1. 相对于迭代法或牛顿切线等算法,二分法解一元方程的最大优点是( ) A. 程序最简单 B. 运算速度一定最快 C. 初值可随意设置 D. 最可靠,一定 ...

  • 挤出胀大数值模拟
  • 挤出胀大数值模拟 申长雨谢英杨广军杨扬田中 (郑州工业大学橡塑模具国家工程研究中心) (中国・河南・郑州450002) 摘要本文在对挤塑成型过程分析和研究的基础上,将计算力学.高分子流变学.计算机技术及模具设计理论相结合,采用CAE技术.对挤出胀大的机理和数值算法进行了系统的撂讨和分析.论文研究了平 ...

  • 数值分析中牛顿迭代法的引入方法探讨
  • 第25卷第5期2010年lO月 天中学刊 JournalofTianzhong .,01.25No.5 oct.20lO 数值分析中牛顿迭代法的引入方法探讨 王霞,张启虎 (郑州轻工业学院数学与信息科学系,河南郑州450002) 摘要:数值分析中牛顿迭代法是求解非线性方程的基本方法.与一般教材上牛顿 ...