大连理工大学矩阵大作业

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

2013级工科硕士研究生

《矩阵与数值分析》课程数值实验报告

大连理工大学

Dalian University of Technology

一、设

6

2

2

10

1

N

N

j

S

j

=

=

-

∑,分别编制从小到大和从大到小的顺序程序分别计算

100001000000

,

S S

并指出两种方法计算结果的有效位数。

程序代码:

从小到大:

function f=s(N); %定义函数s

f=0; %初始值为0

for j=N:-1:3 %j从3到n循环(从小到大) ft=1000000/(j^2-1); %Sj

f=f+ft; %SN

end

从大到小:

function f=s(N); %定义函数s

f=0; %初始值为0

for j=N:-1:3 %j从3到n循环(从小到大) ft=1000000/(j^2-1); %Sj

f=f+ft; %SN

end

执行结果:

从小到大:

s(10000)

ans =

4.16566671666167e+05

s(1000000)

ans =

4.166656666671731e+05 有效数字:16,16 从大到小: s(10000) ans =

4.165666716661668e+05

s(1000000) ans =

4.166656666671667e+05 有效数字:16,16 分析:

小数和大数相加时,按照从大到小的顺序和按照从小到大的顺序得出的结果不同,前者由

于舍入误差的影响而使结果不准确,所以应避免大数吃小数的现象。

二、解线性方程组

1.分别利用Jacobi 迭代法和Gauss-Seidel 迭代法求解线性方程组Ax b =,其中常向量为()21n -维随机生成的列向量,系数矩阵A 具有如下形式

1111111122n n n n n n n n T I I I A I I T I --------+-⎛⎫ ⎪

- ⎪= ⎪- ⎪

-+⎝

⎭, 其中1

211112n T --⎛⎫

- ⎪= ⎪- ⎪

-⎝⎭

为1n -阶矩阵,1n I -为1n -阶单位矩阵,迭代法计算停止的条件为:10

12

10k k x x -+-<,给出10,100,1000n =时的不同迭代步数. 程序代码:

Jacobi迭代法

function [u,l,b,x,kk,delta,A]=Ja(n)

t=2.*eye(n-1);

s=-eye(n-2);

z=zeros(n-2,1); %生成n-1行1列零向量

z1=zeros(1,n-1);

s1=[z s];

s1=[s1;z1];

s2=[s z];

s2=[z1;s2];

T=t+s1+s2; %生成T

i=-eye((n-1)*(n-2));

a1=[zeros(((n-1)*(n-2)),n-1) i];

a2=[a1;zeros(n-1,((n-1)*(n-1)))];

b1=[i zeros(((n-1)*(n-2)),n-1)];

b2=[zeros(n-1,((n-1)*(n-1)));b1];

d=4.*eye((n-1)*(n-1)); %生成D

b=round(randn((n-1)*(n-1),1)); %生成b

A0=[];

for k=1:1:n-1

x=T+2.*eye(n-1);

A0=blkdiag(A0,x); %生成A

end

A=A0+a2+b2; %生成A

u=-(triu(A)-d); %生成U

l=-(tril(A)-d); %生成L

x=randn((n-1)*(n-1),1); %生成初始x

%%以下为计算迭代部分

B=inv(d)*(l+u);

ff=inv(d)*b;

kk=1;

derta=10;

delta=[];

x0=x;

while derta>10^-10&(kk<800);

x0=x;

x=B*x+ff;

derta=norm(x-x0);

kk=kk+1;

delta=[delta derta];

end

plot(delta);

End

执行结果:

运行结果:[u,l,b,x,kk,delta,A]=Ja(10)情况

图1 迭代曲线收敛步数465 收敛值9.899081611039407e-11

[u,l,b,x,kk,delta,A]=Ja(100)情况下

图2 迭代步数48988 收敛终值9.997187164447103e-11 当n=1000时,矩阵规模超出内存。

程序代码:

Gauss-Seidel迭代法

function kk=Gs(n)

t=2.*eye(n-1);

s=-eye(n-2);

z=zeros(n-2,1); %生成n-1行1列零向量

z1=zeros(1,n-1);

s1=[z s];

s1=[s1;z1];

s2=[s z];

s2=[z1;s2];

T=t+s1+s2; %生成T

i=-eye((n-1)*(n-2));

a1=[zeros(((n-1)*(n-2)),n-1) i];

a2=[a1;zeros(n-1,((n-1)*(n-1)))];

b1=[i zeros(((n-1)*(n-2)),n-1)];

相关文档
最新文档