数值分析实验一

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

数值分析 实验一

一、实验目的

熟悉MATLAB 编程。

学习线性方程组数值解法的程序设计算法。

二、实验题目

1.给定线性方程组

(a )用LU 分解和列主元消去法求解。输出A=LU 的分解的L 和U ,detA 以及解向量x 。

(b )将2.099999改为2.1,5.900001改为5.9.用列主元消去法求解。输出detA 及解向量 x ,并与(a )的结果比较。

2。线性方程组Ax=b 的A 及b 为

10 7 8 9 32

7 5 6 5 23

A= 8 6 10 9 b= 33

7 5 9 10 31

则解x=(1,1,1,1)T 用MATLAB 内部函数求detA 及A 的所有特征值和cond (A )2。若令

⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----15900001.582012151526099999.2310

7104321x x x x

10 7 8.1 7.2

A+δA= 7.08 5.04 6 5

8 5.98 9.89 9

6.99 5 9 9.98

求解(A+δA )(x+δx )=b,输出向量δx 和2 从理论结果和实际计算两方面分析线性方程组Ax=b 解的相对误差2 及A 的相对误差2 的关系。

三、实验原理与理论基础

1.本题用LU 分解法及列主元高斯消去法

LU 分解法原理:

解Ax=b 相当于解两个三角方程,即 Ly=b,Ux=y 分解求出x 和y 。 列主元消去法原理:

利用逐次消去未知数的方法,把线性方程组 Ax=b 化为与其等价的三角形线性方程组,求解线性方程组的方法可用回代的方法求。

2.本题通过 计算式:

)

()()(min max 2122T T AA A A A

A A cond λλ==- 来计算A 的谱子条件数。

四、实验内容

1.解:

(a )LU 分解法:

程序如下:

function [ x ] = zhijiejiefangcheng( A,b )

n=length(A);

%求出LU分解矩阵

for i=1:n

U(1,i)=A(1,i);

end

L(1,1)=A(1,1);

for i=2:n

L(i,1)=A(i,1)/U(1,1);

end

for r=2:n

for i=r:n

p=0;q=0;

for k=1:(r-1)

p=p+L(r,k)*U(k,i);

q=q+L(i,k)*U(k,r);

end

U(r,i)=A(r,i)-p;

if r

end

end

end

for i=1:n

for j=1:n

if i==j

L(i,j)=1;

end

end

end

L

U

%计算X的值

y(1)=b(1);

for i=2:n

e=0;

for k=1:(i-1)

e=e+L(i,k)*y(k);

end

y(i)=b(i)-e;

end

X(n)=y(n)/U(n,n);

for i=(n-1):-1:1

f=0;

for k=(i+1):n

f=f+U(i,k)*X(k);

end

X(i)=(y(i)-f)/U(i,i);

end

X

%计算detA的值

detA=det(L*U)

列主元消去法:

程序如下:

function [ x ] = gauss( A,b )

A=[10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 1 0 2];

b=[8;5.900001;5;1];

[n,n]=size(A);

x=zeros(n,1);

Aug=[A,b]; %增广矩阵

for k=1:n-1

[piv,r]=max(abs(Aug(k:n,k))); %找列主元所在子矩阵的行r r=r+k-1; %列主元所在矩阵的行

if r>k

temp=Aug(k,:);

Aug(k,:)=Aug(r,:);

Aug(r,:)=temp;

end

if Aug(k,k)==0,

'error';

end

for p=k+1:n

Aug(p,:)=Aug(p,:)-Aug(k,:)*Aug(p,k)/Aug(k,k);

end

end

A=Aug(:,1:n);b=Aug(:,n+1);

x(n)=b(n)/A(n,n);

for k=n-1:-1:1

x(k)=b(k);

for p=n:-1:k+1

x(k)=x(k)-A(k,p)*x(p);

end

x(k)=x(k)/A(k,k);

end

detA=det(A)

End

(b)改动数字后列主元消去法

相关文档
最新文档