matlab Jacobi迭代法Gauss-seidel和SOR迭代

  • 格式:doc
  • 大小:19.00 KB
  • 文档页数:7

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.Jacobi迭代法

例1 用jacobi迭代法求解代数线性代数方程组,保留四位有效数字(err=1e-4)

其中A=[8 -1 1;2 10 -1;1 1 -5];b=[1 ;4; 3]。

解:编写jacobi迭代法的函数文件,保存为jacobi.m

function [x,k]=jacobi(A,b,x0,eps,N)

% 求解Ax=b;x0为初始列向量;eps为误差容限;N为最大迭代次数

% 输出x为近似解;k为迭代次数

n=length(A);

x=zeros(n,1);

for k=1:N

for i=1:n

―――――――

end

if norm(x-x0,inf)

% if (max(abs(x-x0)))

break;

end

x0=x;

end

编写主程序如下

format long

clear

A=[8 -1 1;2 10 -1;1 1 -5];

b=[1 ;4; 3];

x0=[0.125; 0.4 ;-0.6 ]; % x0为初始列向量N为最大迭代次数err=1e-4; % err为误差容限

N=25; % N为最大迭代次数

[x,k]=jacobi(A,b,x0,err,N)

得到结果如下

x =

0.22492315625000

0.30561995000000

-0.49388680000000

k =

6

2.Gauss-seidel迭代法

例2 用Gauss-seidel迭代法求解代数线性代数方程组,保留四位有效数字(err=1e-4) 其中A=[8 -1 1;2 10 -1;1 1 -5];b=[1 ;4; 3]。

解:编写Gauss-seidel迭代法的函数文件,保存为gaus.m

function [x,k]=gaus(A,b,x0,eps,N)

% 求解Ax=b;x0为初始列向量;eps为误差容限;N为最大迭代次数% 输出x为近似解;k为迭代次数

n=length(A);

x=zeros(n,1);

for k=1:N

for i=1:n

――――――

end

if norm(x-x0,inf)

% if (max(abs(x-x0)))

break;

end

x0=x;

end

编写主程序如下

format long

clear

A=[8 -1 1;2 10 -1;1 1 -5];

b=[1 ;4; 3];

x0=[0.125; 0.4 ;-0.6 ]; % x0为初始列向量N为最大迭代次数err=1e-4; % err为误差容限

N=25; % N为最大迭代次数

[x,k]=gaus(A,b,x0,err,N)

输出结果为

x =

0.22493937890625

0.30562326171875

-0.49388747187500

k =

5

3.SOR迭代法

例3 用SOR迭代法求解代数线性代数方程组,松驰因子w=1.005,

其中A=[8 -1 1;2 10 -1;1 1 -5];b=[1 ;4; 3]。保留四位有效数字(err=1e-4) 解:编写SOR迭代法的函数文件,保存为sor.m

function [x,k]=sor(A,b,x0,eps,N,w)

% 求解Ax=b;x0为初始列向量;eps为误差容限;

% N为最大迭代次数;w为松弛因子

% 输出x为近似解;k为迭代次数

n=length(A);

x=zeros(n,1);

for k=1:N

for i=1:n

―――――――――――

end

if norm(x-x0,inf)

% if (max(abs(x-x0)))

break;

end

x0=x;

end

编写主程序如下

format long

clear

A=[8 -1 1;2 10 -1;1 1 -5];

b=[1 ;4; 3];

x0=[0.125; 0.4 ;-0.6 ]; % x0为初始列向量N为最大迭代次数err=1e-4; % err为误差容限

N=25; % N为最大迭代次数

w=1.005;

[x,k]=sor(A,b,x0,err,N,w)

输出结果为

x =

0.22493973151744

0.30562311707823

-0.49388742187146

k =

5

四.实验题目:

1.分别用Jacobi, Gauss-Seidel和SOR迭代法(松驰因子w=1.08,1.12,1.3)求解方程组要求精度,初始,最大迭代次数N=25,试比较这几种迭代法的迭代次数和收敛速度。

A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0; 0 -1 4 0 0 -1; -1 0 0 4 -1 0;

0 -1 0 -1 4 -1; 0 0 -1 0 -1 4];

b=[0 5 0 6 -2 6]';

n=length(A); x0=zeros(n,1); eps=1e-5;N=25;