欢迎来到天天文库
浏览记录
ID:29446857
大小:470.83 KB
页数:34页
时间:2018-12-19
《数值分析报告第二的题目北航大作业》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《数值分析》计算实习题目二数值分析第二题目录数值分析第二题11引言:21.1矩阵的拟上三角化21.2矩阵的特征值求解31.3矩阵的特征向量求解52算法的程序实现62.1主程序62.2子程序的实现83计算结果93.2矩阵Q、R以及乘积RQ103.3各实特征值及其相对应的特征向量114实验结论12附录源代码1333《数值分析》计算实习题目二1引言1.1矩阵的拟上三角化为了减少计算量,对矩阵利用Householder矩阵进行相似变换,把化为上三角矩阵A(n-1)。对拟上三角化,得到拟上三角矩阵,具体算法如下:记,并记的第r列至第n列的元素为。对于执行1.若全为零,则
2、令,转5;否则转2。2.计算3.令。4.计算33《数值分析》计算实习题目二1.继续。1.2矩阵的特征值求解使用带双步位移的QR方法计算矩阵的全部特征值,也是的全部特征值,具体算法如下:1.给定精度水平和迭代最大次数。2.记,令。3.如果,则得到的一个特征值,置(降阶),转4;否则转5。4.如果,则得到的一个特征值,转11;如果,则转3。5.求2阶子阵的两个特征值和,即计算二次方程的两个根和。6.如果,则得到的两个特征值和,转11;否则转7。7.如果,则得到的两个特征值和,置(降阶),转4;否则转88.如果,则计算终止,未得到的全部特征值;否则转9。33《数值分
3、析》计算实习题目二1.记,计算2.置,转3。3.的全部特征值已计算完毕,停止计算。其中,的分解与的计算用下列算法实现:记。对于执行1.若全为零,则令,转5;否则转2。2.计算3.令。4.计算33《数值分析》计算实习题目二1.继续。此算法执行完后,就得到。1.3矩阵的特征向量求解用列主元素Gauss消去法计算矩阵对应于实特征值的特征向量,具体算法如下:记1.消元过程对于执行(1)选行号,使。(2)交换与所含的数值。(3)对于计算2.回代过程33《数值分析》计算实习题目二最终得到的向量的即为对应于实特征值的特征向量。2算法的程序实现2.1主程序#include
4、ostream>#include"matrix-tool.h"#include"simi-trian.h"#include"QR_decompose.h"#include"Gauss_by_max.h"#definethrehold(1e-12)usingnamespacestd;intn=10;externdouble*a;externdouble*Mk;externdouble*a_lambda;externdouble*b_lambda;double*spec_u;//高斯求解方程组的右端常数列向量double*G_b;intmain(){simi_In
5、itial();cout<<"处理之前的A矩阵为:"<6、)=0;}for(i=0;i7、e*b,double*y,intn);函数实现N*N的矩阵乘以N*1的向量,得到N*1向量YvoidMatrix_Converted_M_Vector(double*A,double*b,double*y,intn);函数实现转置后N*N矩阵乘以N*1向量,得到N*1向量YvoidColumn_M_Row(double*a,double*b,double*A,intn);函数实现列乘以行得到一个矩阵AvoidRow_M_Column(double*a,double*b,double*y,intn);函数实现行乘以列得到一个数值yvoidPrint_Matrix8、(double*a,intn);函数实
6、)=0;}for(i=0;i7、e*b,double*y,intn);函数实现N*N的矩阵乘以N*1的向量,得到N*1向量YvoidMatrix_Converted_M_Vector(double*A,double*b,double*y,intn);函数实现转置后N*N矩阵乘以N*1向量,得到N*1向量YvoidColumn_M_Row(double*a,double*b,double*A,intn);函数实现列乘以行得到一个矩阵AvoidRow_M_Column(double*a,double*b,double*y,intn);函数实现行乘以列得到一个数值yvoidPrint_Matrix8、(double*a,intn);函数实
7、e*b,double*y,intn);函数实现N*N的矩阵乘以N*1的向量,得到N*1向量YvoidMatrix_Converted_M_Vector(double*A,double*b,double*y,intn);函数实现转置后N*N矩阵乘以N*1向量,得到N*1向量YvoidColumn_M_Row(double*a,double*b,double*A,intn);函数实现列乘以行得到一个矩阵AvoidRow_M_Column(double*a,double*b,double*y,intn);函数实现行乘以列得到一个数值yvoidPrint_Matrix
8、(double*a,intn);函数实
此文档下载收益归作者所有