i j a R
⨯⎡⎤=∈⎣⎦A 且,,1
(1,2,
,)n
k k k j j j k
a a k n =≠≥=∑,则A 是弱严格对角占优的。
三、计算题(每小题10分,共40分)
1648432
4108426
,.8812103844101230A b ⎡⎤⎡⎤⎢⎥⎢⎥⎢
⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦
用Gauss 消元法求解.Ax b =
12. 确定一个Householder 阵H 和正数α,使(1,0,1,1,1,1)T H =(1,,0,0,0,0)T α. [解]
一、填空题(每空3分,共15分)
二、判断对错(每小题3分,共15分) 姓名:________ 学号:__________ 年级:______________ 专业:_____________
…….……………………….密…………………封…………………线…………………………
13. 已知线性方程组
1231231
238233461332714
x x x x x x x x x +-=⎧⎪
+-=⎨⎪+-=-⎩ (1)试给出Jacobi 迭代法和Gauss-Seidel 迭代法求解该方程组的分量形式。
(2)两种迭代法是否收敛?为什么? [解]
14. 给出求解对称正定线性方程组Ax b =的共轭梯度法的前两步迭代过程。
四、综合题(每小题10分,共30分)
15. 下列程序是最速下降法求解正定方程组Ax b =(,n n
n A R
b R ⨯∈∈)的C 程
序,请补充算法中涉及到的两个C 函数。
#include
double Product(double*x,double*y,int n);
double AProduct(double**A,double*x,double*y,int n);
int Grad(double**A,double*b,double*x,int n,double eps=1.0e-6,int CND=100000); int Grad(double**A,double*b,double*x,int n,double eps,int CND){ double *r=new double[n]; double alph,norm; int i,k;
for(i=0;ifor(i=0;iwhile(norm>eps&&kalph=Product(r,r,n)/AProduct(A,r,r,n); for(i=0;ifor(i=0;inorm=sqrt(Product(r,r,n)); }
if(k>=CND)
printf("迭代次数超限!结果可能失真!"); return(k); }
16.用Gauss-Seidel迭代法求解Ax b
=的C程序如下。请你将它改造成SOR迭代法的C程序。
int G_Seidel(double**B,double*g,double*x,int n,double eps,int CND){ double y,norm;
int i,j,k;
for(i=0;ifor(j=0;j
for(j=i+1;jg[i]/=B[i][i]; B[i][i]=0.0;
}
k=0;
do{
for(norm=0.0,i=0;iy=x[i];
for(x[i]=g[i],j=0;jx[i]+=B[i][j]*x[j];
if(norm}
k++;
}while(norm>eps&&kif(k>=CND)printf("迭代次数已达到最大值,结果可能失真!\n")
return(k);
}
(注:把需要增、删、或改动的内容,在下边空白处说明。)
[解] 17.众所周知Gauss变换(2)
n n
k
L R k n
⨯
∈≤<做为行(列)变换仅改变后n k
-行
(列)。请你根据运用Gaus变换设计一个能把
,
n n
i j
A a R⨯
⎡⎤
=∈
⎣⎦约化为上Hessenberg型矩阵的算法。
[解]