GaussSeidel迭代法PPT教案
- 格式:pptx
- 大小:229.40 KB
- 文档页数:19


function [x,k] = Gau_Seid(A,b,ep,it_max)
%%[x,k] = Gau-Seid(A,b,ep,it_max)
if nargin < 4 it_max = 100;end
if nargin < 3 ep = 1e-5;end
if min(abs(diag(A))) < 1e-10
error;
end
n = length (b);x=zeros(n,1);k=1;
B = -tril(A)\tril(A,1);f=tril(A)\b;
while k < it_max
y=B*x+f;
if norm(y - x,inf) < ep break; end
x=y;k=k+1;
end
求解习题二6的代码为:
A=[10,-2,-2;-2,10,-1;-1,-2,3];b=[1;0.5;1];[x,k]=Gau_Seid(A,b)
运行结果为:
A=[10,-2,-2;-2,10,-1;-1,-2,3];b=[1;0.5;1];[x,k]=Gau_Seid(A,b)
x =
27.1132
-6.0425
5.3427
k =
100
实验 二 题目Gauss-Seidel迭代 第17周 星期 五 第 6--9 节
一、 实验目的与要求(实验二的具体内容)
对于线性方程组69228281027321321321xxxxxxxxx
1. 用高斯-赛德尔迭代法求此方程组的近似解(终止迭代过程的最大允许迭代次数N,近似解的误差限eps,均由用户设定);
2. 通过数值实验说明,求此线性方程组的近似解时,高斯-赛德尔迭代法的收敛速度比雅可比迭代法的收敛速度要快一些。(用同样精度要求的条件来比较迭代次数)
二、 实验方案(程序源文件)
运用MATLAB软件编辑M文件如下:
A=[7,1,2;1,8,2;2,2,9];
b=[10;8;6];
if (all(diag(diag(A))==0))
error('A的对角有一个为零,迭代终止')
end
eps=input('误差限eps=');
N=input('最大迭代次数N=');
D=diag(diag(A));
U=-triu(D);
L=-triu(D);
B=inv(D-L)*U; f=inv(D-L)*b;
x0=zeros(size(b));
k=0;
while 1
x1=B*x0+f;
k=k+1;
fprintf('第%1d次迭代值',k);
disp(x1');
if norm(x1-x0,inf)
fprintf('满足精度要求的迭代值为\n');
disp(x1');
break;
end
if k>N
fprintf('迭代次数超限\n');
break;
end
x0=x1;
end
三、 实验结果和数据处理(运行结果,截图)
四、 结论(给出你的结论)
题 目:高斯-赛德尔迭代法的算法及程序设计
摘要
本文通过理论与实例对线性方程组的解法、收敛性及误差分析进行了探讨.在对线性方程组数值解法的讨论下用到了高斯-赛德尔迭代法,进一步研究和总结了高斯-赛德尔迭代法的理论与应用,使我们在分析问题与编辑程序时能更好的把握对高斯-赛德尔迭代法的应用。
关键词 Gauss-Seidel迭代法;收敛性;误差分析;流程图;Mathematica编程
目录
第一章 高斯-赛德尔迭代法 ............................................... 1
§1.1 高斯-赛德尔迭代法的提出 ....................................... 1
§1.1.1 高斯-赛德尔迭代法的思想理论 ............................. 1
§1.1.2 高斯-赛德尔迭代法的定义及表达形式 ....................... 2
§1.2 高斯-赛德尔迭代法的收敛性 ..................................... 1
§1.3 高斯-赛德尔迭代法的误差分析 ................................... 1
第二章 高斯-赛德尔迭代法的程序设计..................................... 1
§2.1 高斯-赛德尔迭代法在上机中的应用 ............................... 1
§2.1.1 高斯-赛德尔迭代法的流程图 ............................... 1
§2.1.2 高斯-赛德尔迭代法的源程序 ............................... 1
参考文献 .............................................. 错误!未定义书签。
精品文档
精品文档 Matlab线性方程组的迭代解法Gauss-Seidel迭代法实验报告
1.熟悉Gauss-Seidel迭代法,并编写Matlab程序
function [y,n]=gauss_seidel(A,b,x0,eps)
%gauss seidel iterative method to solve Ax=b
if nargin==3
eps=1e-6;
elseif nargin<3
error;
return
end
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
G=(D-L)\L;
f=(D-L)\b;
y=G*x0+f;
n=1;
while norm(y-x0)>=eps
x0=y;
y=G*x0+f;
n=n+1;
end
2.
用Gauss-Seidel迭代法求解线性方程组。
输入:
>> A=[4 3 0;3 3 -1;0 -1 4];
>> b=[24;30;-24];
>> x0=[0;0;0];
>> [y,n]=gauss_seidel(A,b,x0)
输出:
y =
6
-2 精品文档
精品文档 -7
n =
4