北航数值分析大作业第一次
时间:2025-05-16
时间:2025-05-16
算法方案设计:
(1)将矩阵A的数据存放至m×n的矩阵C中,其中m=5,n=501,因为C语言中数组是从0行开始算起,因此aij=ci-j+s,j;
(2)确定迭代收敛精度ε;
(3)对矩阵A运用幂法,若收敛则得到按模最大特征值λM,转(5);否则转(4);
(4)对(A-pI)运用幂法,求出一个按模最大特征值(最大特征值或最小特征值中的一个)λM,转(5);
(5)对(A-pI)运用幂法,求出另一个按模最大特征值λ'M,转(6);
(6)若λM>λ'M则λ1=λ'M、λ501=λM,否则λ501=λ'M、λ1=λM,转(7);
(7)(从k=0开始计算)对(A-μ(k)I)运用反幂法,得到离μ(k)最近的特征值λik,转(8);
(8)k=k+1,如果k<=39转(7);否则转(9);
(9)求条件数cond(A)2,由于A为对称矩阵,因此A的条件数就是按模最大特征值与按模最小特征值绝对值的商,转(10);
(10)求行列式det(A),先将A进行Doolittle分解,然后求U矩阵的行列式,也就是U矩阵对角线元素的乘积,转(11);
(11)数据输出到结果文件“record.txt”。
迭代初始向量对结果的影响:
选取不同的迭代向量u,迭代结果如下所示:
从计算过程看迭代过程都收敛,但是收敛的结果差别很大,从各方面分析可知,当迭代向量全取1时的结果是比较可靠的。因为矩阵A是“5对角”矩阵,当迭代向量u取的0较多时,经过多次迭代得到的向量u(k)同样有很多的0元素,尽管最终收敛,但是结果并不是整个501×501的矩阵A的特征值,而是其他的
一些情况。通过这个问题,可以知道迭代向量的选取对结果的影响是很大的,选取的迭代向量应该尽量使得每次迭代都能让迭代向量的所有元素都更新一次,这样求出的特征值才是可靠的。