数值分析第二题 北航 大作业汇编

  • 格式:doc
  • 大小:470.83 KB
  • 文档页数:34

数值分析第二题 目 录 数值分析第二题 ..................................................................................... 1 1 引言: ......................................................................................... 1 1.1 矩阵的拟上三角化 ........................................................... 1 1.2 矩阵的特征值求解 ........................................................... 2 1.3 矩阵的特征向量求解 ....................................................... 4 2 算法的程序实现 .......................................................................... 5 2.1 主程序 .............................................................................. 5 2.2 子程序的实现 ................................................................... 7 3计算结果 ...................................................................................... 8 3.2矩阵Q、R 以及乘积RQ................................................... 9 3.3 各实特征值及其相对应的特征向量 .............................. 10 4 实验结论 ................................................................................... 12 附录 源代码 ................................................................................. 12 《数值分析》计算实习题目二

1 1 引言

1.1 矩阵的拟上三角化 为了减少计算量,对矩阵A利用Householder矩阵进行相似变换,把A化为上三角矩阵𝐴(n−1)。 对A拟上三角化,得到拟上三角矩阵)1(nA,具体算法如下: 记AA)1(,并记)(rA的第r列至第n列的元素为nrrjniarij,,1,;,,2,1)(

对于2,,2,1nr执行 1. 若nrriarir,,3,2)(全为零,则令)()1(rrAA,转5;否则转2。 2. 计算 

nririrrad12

)(

rrrrrrrrrrdcadac则取,0sgn)(,1)(,1若

)(,12rrrrrracch

3. 令nTrnrrrrrrrrrRaacau)()(,2)(,1,,,,0,,0。 4. 计算 rrTrrhuAp/)(

rrrrhuAq/)(

rrTrrhupt/

rrrrutq TrrTrrrrpuuAA)()1( 《数值分析》计算实习题目二 2 5. 继续。

1.2 矩阵的特征值求解 使用带双步位移的QR方法计算矩阵)1(nA的全部特征值,也是A

的全部特征值,具体算法如下: 1. 给定精度水平0和迭代最大次数L。 2. 记nnijnaAA][)1()1()1(,令nmk,1。 3. 如果)(1,kmma,则得到A的一个特征值)(kmma,置1:mm(降阶),转4;否则转5。 4. 如果1m,则得到的一个特征值)(11ka,转11;如果1m,则转3。 5. 求2阶子阵



)()(1,(k),1)(1,1 kmmkmmmmkmmkaaaaD

的两个特征值1s和2s,即计算二次方程 0det)()()(1.12kkmmkmmDaa 的两个根1s和2s。 6. 如果2m,则得到A的两个特征值1s和2s,转11;否则转7。 7. 如果)(2,1kmma,则得到A的两个特征值1s和2s,置2:mm(降阶),转4;否则转8 8. 如果Lk,则计算终止,未得到A的全部特征值;否则转9。 9. 记),1(][)()(mjiaAmmkijk,计算 《数值分析》计算实习题目二 3 kkTkkkkkkkkkkmmkmmkmmkmmkmmkmmQAQAQRMRQMItIsAAMaaaataas12)(,1)(1,)()(1,1

)()(1,1

)( )m( 分解作对阶单位矩阵是

10. 置1:kk,转3。 11. A的全部特征值已计算完毕,停止计算。 其中,kM的QR分解与1kA的计算用下列算法实现: 记kmmrijrmmijkACbBbMB1)()1(1,][,][。 对于1,,2,1mr执行 1. 若mrribrir,,2,1)(全为零,则令rrrrCCBB11,,转5;否则转2。 2. 计算 

mririrrbd2)(

rrrrrrrrrrdcadbc则取,0sgn)(,1)(若

)(2rrrrrrbcch

3. 令mTrmrrrrrrrrrRbbcbu)()(,1)(,,,,0,,0。 4. 计算 rrTrrhuBv/ TrrrrvuBB1

rrTrrhuCp/

rrrrhuCq/

rrTrrhupt/ 《数值分析》计算实习题目二 4 rrrrutq TrrTrrrrpuuCC1

5. 继续。

此算法执行完后,就得到mkCA1。

1.3 矩阵的特征向量求解 用列主元素Gauss消去法计算矩阵A对应于实特征值的特征向量,具体算法如下: 记)( )1(的实特征值为AIAA 1. 消元过程 对于1,,2,1nk执行 (1) 选行号ki,使)()(maxkiknikkkiaak。

(2) 交换)(kkja与),,1,()(nkkjak

jik

所含的数值。

(3) 对于nkki,,2,1计算

),,2,1( /)()()1()()(nkkjamaaaamkkiikkijkijkkkkikik

2. 回代过程

1,,2,1 1)(1)(nnkaxax

xkkknkjjkkjk

n

最终得到的向量Tnxxx)1,,,(21的即为A对应于实特征值的特征向量。 《数值分析》计算实习题目二 5 2 算法的程序实现

2.1 主程序 #include #include"matrix-tool.h" #include"simi-trian.h" #include"QR_decompose.h" #include"Gauss_by_max.h" #define threhold (1e-12) using namespace std; int n = 10; extern double *a; extern double *Mk; extern double *a_lambda; extern double *b_lambda; double *spec_u; //高斯求解方程组的右端常数列向量 double *G_b; int main() { simi_Initial(); cout<<"处理之前的A矩阵为:"

cout<<"拟上三角化后的A矩阵为:"

/******************特征向量求取代码段*****************/ //初始化spec_u[10] spec_u = new double [n]; G_b = new double [n]; char i; simi_Initial();

//为G_b 赋值 for(i=0; i{ (*(G_b+i)) = 0; }

for(i=0; i{ if( (*(b_lambda+i)) == 0 ) { Gauss_root( a, G_b, n, (*(a_lambda+i)),spec_u); cout<<"属于"<<(*(a_lambda+i))<<" i "<<(*(b_lambda+i))<<"的特征向量为: "