数值分析作业

  • 格式:doc
  • 大小:146.50 KB
  • 文档页数:6

1
为满足此题要求,对gauss程序做了两点改进:
1、将r改为r(k),并将r定为输出变量,以便观察行变换的情况;
2、将for j=k:n
z=A(k,j); A(k,j)=A(r,j); A(r,j)=z;
end
改为:z=A(k,k:n); A(k,k:n)=A(r(k),k:n); A(r(k),k:n)=z;
这样将循环改为矩阵运算,可以提高运算速度。

新程序命名为gauss2.m。

A=[10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 1 0 2];
b=[8;5.900001;5;1];
[L,U]=lu(A);
y=L\b;
x1=U\y;
det1=det(A);
[x2,det2,index,r]=gauss2(A,b);
r1=b-sym(A*x1)
r2=b-sym(A*x2)
输出结果为:
x1=[1.77635683940025e-16,-1.00000000000000,1.00000000000000,1.00000000000000]T
x2=[ 2.66453525910038e-16,-1.00000000000000,1.00000000000000,1]T
det1= -762.000090000000
det2= -762.000090000000
r=[1,3,3]从此结果中可以看出在列主元高斯消去法中,做了一次行变换,即第3行与第2行对调r1=[ 0,1/1125899906842624,0,0]T
r2=[ 0,0,0,0]T
可以看出,LU分解所得的结果比较精确。

2
A1=[3.01 6.03 1.99;1.27 4.16 -1.23;0.987 -4.81 9.34];
b=[1;1;1];
A2=[3.00 6.03 1.99;1.27 4.16 -1.23;0.990 -4.81 9.34];
[x1,det1,index1,r1]=gauss2(A1,b);
[x2,det2,index2,r2]=gauss2(A2,b);
r=b-A1*x1
cond=norm(A1).*norm(A1^-1)
结果为:
x1=[1592.59962484138,-631.911376202549,-493.617724759390]
x2=[119.527338125959,-47.1426044312964,-36.8402561091259]
det1=-0.0305471000000050
det2=-0.407014000000007
cond=30696.852*******
从结果中可以看出,x1与x2相差比较大,同时也发现条件数cond也是非常大的,故此方程是“病态”的。

A=[10 7 8 7;7 5 6 5;8 6 10 9;7 5 9 10];
b=[32;23;33;31];
det=det(A);
COND=cond(A,2);
[x0,y]=eig(A);
dA=[0 0 0.1 0.2; 0.08 0.04 0 0;0 -0.02 -0.11 0;0.01 0 0 -0.02];
x=A\b;
x1=(A+dA)\b;
dx=x1-x;
normdx=norm(dx,2);
normx=norm(x,2);
normdA=norm(dA,2);
normA=norm(A,2);
xdwc1=normdx/normx;
xdwc2=normdA/normA;
结果为:
det=0.999999999999989,
y=[0.0101500483978923,0,0,0;0,0.843107149855028 ,0,0;0,0, 3.85805745594495 ,0;0 ,0,0, 30.2886853458021],
COND=2984.09270167576,
dx=[224.366120218091,-372.907103824326,97.0218579232868,-58.2622950818407],
normdx=449.674993664820
xdwc1=449.674993664820,xdwc2=0.00762021079314036
4
k=13
for n=2:6
a=hilb(n);
co(n)=cond(a,inf);
end
x=1:6;
plot(x,co);
b=zeros(k);
x11=b;
x0=b;
r=b;
for i=2:k
x=(linspace(1,1,i))';
x0(1:i,(i-1))=x;
H=hilb(i);
b0=H*x;
b(1:i,(i-1))=b0;
x1=gauss2(H,b0);
r(1:i,(i-1))=b0-H*x1;
x11(1:i,(i-1))=x1;
end
dx=x11-x0;
结果如下:
co=[0,27, 748, 28375,943656, 29070279]可见,条件数随着n的增大,急剧增加,如图1所示。

将(2)求得的结果(dx,x11)整理得
0的情况。