实验报告
专业:数学与应用数学(师范)
年级:09级 班级:as09101 学号:as0910135 姓名:曾晓冰
一、 实验目的
1.掌握用迭代法求解线性方程组的基本思想和计算步骤;
2.能熟练地写出Jacobi迭代法的迭代格式的分量形式,并能比较它们各自的特点及误差估计;
3.理解迭代法的基本原理及特点,并掌握Jacobi迭代Gauss-Seidel迭代和SOR迭代格式的分量形式、矩阵形式及其各自的特点;
4.掌握Jacobi迭代Gauss-Seidel迭代和SOR迭代算法的MATLAB程序实现方法,及了解松弛因子对SOR迭代的影响;
5.用SOR迭代法求解线性方程组时,超松弛因子的取值大小会对方程组的解造成影响,目的就是能够探索超松弛因子怎样对解造成影响,通过这个实验我们可以了解的大致取值范围。
二、实验题目
题目1、解线性方程组的迭代法
书本P33 (Ⅱ)上机实验2.1(1)
利用算法2.1(Jacobi迭代法),编制Mathlab程序,求线性方程组
(1)
题目2、解线性方程组的直接法
书本P59 (Ⅱ)上机实验3.1(2)
3.1利用算法3.1(顺序Gauss消去法),编制Mathlab程序,求线性方程组
(2)
三、实验原理
题目1:运用了Jacobi迭代算法思想:
Jacobi的迭代格式:
1. 取初始点x(0),精度要求ε,最大迭代次数N,置k:=0;
2. 由,计算出x(k+1);
3. 若,则停算,输出x(k+1)作为方程组的近似解;
4. 若k=N,则停算,输出迭代失败信息;否则置k:=k+1,转步2。
题目2:运用了Gauss-Seidel迭代算法思想:
Gauss-Seidel迭代的计算格式:
1.输入矩阵A,右端向量b,初始点x(0),精度要求ε,最大迭代次数N,置k:=0;
2.计算
3.若,则停算,输出x作为方程组的近似解;
4. 若k=N,则停算,输出迭代失败信息;否则置x(0):=x,k:=k+1,转步骤2。
四、实验内容
1、实验步骤
题目1、(1)打开matlab软件,在matlab命令窗口执行程序,并在命令窗口编写程序,运行程序(见附录一),记录结果(见实验结果1.1)。
题目2、(1)打开matlab软件,在matlab命令窗口执行程序,并在命令窗口编写程序,运行程序(见附录二),记录结果(见实验结果1.2)。
五、实验结果
1.1
1.2
六、实验结果分析
1、由实验结果1.1可以知道书本上机实验题2.1(1)解得的结果为x=(-2 0 2 4)’,由k=96知道方程组的迭代次数为96次,没有超出设定的迭代次数的上限。
2、由实验结果1.2可以知道书本上机实验题3.1(2)解得的结果为x=(1.1877 -2.1199 -2.4319 3.2011)’。
附录一:
% 第1题程序
%建立M文件,并编写以下程序
function x=majacobi(A,b,x0,ep,N)
n=length(b);
if nargin<5,N=500;end
if nargin<4,ep=1e-6;end
if nargin<3,x0=zeros(n,1);end
x=zeros(n,1); k=0;
while k> A=[14 4 4 4;4 14 4 4;4 4 14 4;4 4 4 14];
>> b=[-4 16 36 56];
>> x=majacobi(A,b)
k= 94
附录二:
%建立M文件,并编写以下程序
%magauss.m
function x=magauss(A,b,flag)
if nargin<3,flag=0;end
n=length(b);
for k=1:(n-1)
m=A(k+1:n,k)/A(k,k);
A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-m*A(k,k+1:n);
b(k+1:n)=b(k+1:n)-m*b(k);
A(k+1:n,k)=zeros(n-k,1);
if flag~=0, Ab=[A,b], end
end
x=zeros(n,1);
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);
end
%在命令窗口编写以下程序
>> A=[10.4 1.2 2.2 1.9;1.5 11.2 3.5 2.5;2.1 1.5 9.6 1.8;1.6 4.5 1.4 12.8];
>> b=[10.54 -22.47 -18.27 29.93];
>> x=magauss(A1,b1);x1
(此报告版权归本人所有,任何单位或个人不得以任何形式传播、盗版此报告,否则将追究其法律责任)
展开阅读全文