数值分析第一次作业matlab实验报告

  • 格式:doc
  • 大小:50.00 KB
  • 文档页数:5

下载文档原格式

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

几种线性方程组迭代算法的MATLAB 实现和性能比较

用有限差分方法(五点差分格式)求解正方形域上的Poisson 方程边值问题

用MA TLAB 语言编写算法程序求解线性方程组f Au =的算法程序,采用下列方法,比较计算结果和算法性能,对计算结果给出讨论。

一、算法实现

解:由差分格式可得:

2,1,1,,1,10,1,,0,14 (1,)0(0,)

i j i j i j i j i j ij j N j i i N u u u u u h f i j N u u u u i j N -+-+++----=≤≤====≤≤,

写成矩阵形式:Au=f

11112222......,,.

......

....NN N N A I

v b I A v b A v b I I

A v b -⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥===⎢

⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥

⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥⎣

⎦⎣⎦⎣⎦

其中:

4114....,....

.114N N ii ii A A R ⨯-⎡⎤⎢⎥-⎢⎥⎢⎥=∈⎢

⎥⎢

⎥⎢⎥

-⎢⎥-⎣⎦

其中:

11,12,1,121,22,2,21,2,,2211,12,1,121,22,2,221,2,,(,,...,),(,,...,),......,(,,...,)(,,...,),(,,...,),......,(,,...,)T T N N T

N N N N N T T N N T

N N N N N v u u u v u u u v u u u b h f f f b h f f f b h f f f ======

(1)用Jacobi 迭代法求解线性方程组f Au = function[u,k,er,t]=xsgs(n) % Jacobi 迭代法

⎪⎩

⎪⎨⎧====<<==⎪⎪⎭

⎝⎛∂∂+∂∂-0

)1,()0,(),1(),0(1,0,2),(2222x u x u y u y u y x y x f y u x u

% U 表示方程组的解;h 表示步长;A 表示迭代矩阵;k 表示迭代次数;n 表示非边界点数

% f 表示线性方程组A*U=f的右端矩阵f ;e 表示允许误差界;er 表示迭代误差

% t 表示计算时间

tic;

b(2:n+1,2:n+1)=(n+1)^(-2)*2;

u=zeros(n+2,n+2);

e=10^(-9);

for k=1:1000 %迭代求解

er=0;

ub=u;

for j=2:n+1

for i=2:n+1

u(i,j)=(ub(i-1,j)+ub(i+1,j)+ub(i,j-1)+ub(i,j+1)+b(i,j))/4;

er=er+abs(u(i,j)-ub(i,j)); %估计当前误差

end

end

er=er/n^2;

if er

end %判断是否达到计算精度,如果达到则退出循环

end

toc;

t=toc;

end

计算结果:

u =

0 0 0 0 0 0 0 0 0 0 0

0 0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256 0

0 0.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.0413 0

0 0.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.0508 0

0 0.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.0560 0

0 0.0577 0.0986 0.1258 0.1412 0.1462 0.1412 0.1258 0.0986 0.0577 0

0 0.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.0560 0

0 0.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.0508 0

0 0.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.0413 0

0 0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256 0

0 0 0 0 0 0 0 0 0 0 0

k = 304

er = 9.7771e-10

t = 0.0140

Au

(2)用块Jacobi迭代法求解线性方程组f

function [ u,k ,er,t] = xsbgs( n )

%块Jacobi迭代法

% u 表示方程组的解h 表示步长;k 表示迭代次数;n 表示非边界点数;

% f 表示线性方程组A*u=f的右端矩阵f;q 表示n+2维向量;a 表示方程组系数矩阵的下对角线元素

% b 表示方程组系数矩阵的主对角线元素;c 表示方程组系数矩阵的上对角线元素;d 表示追赶法所求方程的右端向量

% e 表示允许误差界;er 表示迭代误差;l 表示系数矩阵A所分解成的下三角阵L中的下对角线元素l(i);z 表示系数矩阵A所分解成的上三角阵U中的主对角线元素z(i)

tic;

f=2*1/(n+1)^2*ones(n+2,n+2);

a=-1*ones(1,n);b=4*ones(1,n);

c=-1*ones(1,n);u=zeros(n+2,n+2);

e=10^(-9);

for k=1:1000 %迭代求解

er=0;

ub=u;

for j=2:n+1

d(1:n)=f(2:n+1,j)+ub(2:n+1,j-1)+ub(2:n+1,j+1);

x=zg(a,b,c,d); %用追赶法求解

u(2:n+1,j)=x';

er=er+norm(ub(:,j)-u(:,j),1);

end

er=er/n^2;

if er

end

toc;

t=toc;

end

计算结果:

u =

0 0 0 0 0 0 0 0 0 0 0

0 0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256 0

0 0.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.0413 0

0 0.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.0508 0

0 0.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.0560 0

0 0.0577 0.0986 0.1258 0.1412 0.1462 0.1412 0.1258 0.0986 0.0577 0

0 0.0560 0.0955 0.1216 0.1364 0.1412 0.1364 0.1216 0.0955 0.0560 0

0 0.0508 0.0859 0.1088 0.1216 0.1258 0.1216 0.1088 0.0859 0.0508 0

0 0.0413 0.0686 0.0859 0.0955 0.0986 0.0955 0.0859 0.0686 0.0413 0

0 0.0256 0.0413 0.0508 0.0560 0.0577 0.0560 0.0508 0.0413 0.0256 0

0 0 0 0 0 0 0 0 0 0 0

k = 163