北航研究生数值分析作业第二题:
一、算法设计方案1按照题目给出的矩阵定义对矩阵A赋初值:对应的函数为a_i
it;2对矩阵A进行householder变换,使其拟上三角化:对应的函数为householder;3输出拟上三角化后的A:对应的函数为aouti
t;4对拟上三角化后的矩阵A使用带双步位移的QR分解法逐次迭代(最大迭代次数L500),逐个求出其特征值,对应的函数为eige
_a;中间包含两个子程序:calc_mk和qr_a
alyze,分别用来计算矩阵Mk和对Mk进行QR分解并得到Ak15输出QR分解过程完毕后的A及求得的特征向量:对应的函数为aout和eige
valout;6对于在第三步中求得的每个实特征值,使用带原点平移的反幂法求出其对应的特征向量,对应的函数为eige
vec;其中包含一个解方程AμIyk1的程序段。这部分也用迭代完成,仍然将最大迭代次数L设置为500;7输出矩阵A的特征向量,结束计算:对应的函数为eige
vecout。算法编译环境:vlsualc60二、源程序如下:
i
cludestdiohi
cludemathhdefi
edefi
edefi
edefi
eN10EPSL10e12L500OUTPUTMODE1矩阵阶数;迭代的精度水平;迭代最大次数;输出格式:0输出至屏幕,1输出至文件声明矩阵A;声明矩阵的特征值数组;定义反幂法中使用的初始向
doubleaNNa2NNeige
NNdoublesa_reN0sa_imN0doubleu_i
itN2121212121量u;主程序开始;i
tmai
fFILEpvoida_i
itvoidhouseholdervoidequal_zerodoublematrixNNi
tvoideige
veci
teige
_avoidaouti
tvoideige
valouti
tvoideige
vecouti
tifOUTPUTMODEpfope