一、问题分析及算法描述 1. 问题的提出: (1)用幂法、反幂法求矩阵A = [aij]20×20的按摸最大和最小特征值,并求出相应的特征向量。其中 aij = {sin(0.5i+ 0.2j) ᵅ ≠ ᵅ1.5 cos(i + 1.2j) ᵅ = ᵅ 要求:迭代精度达到10−12。 (2)用带双步位移的 QR 法求上述的全部特征值,并求出每一个实特征值相应的特征向量。 2. 算法的描述: (1) 幂法 幂法主要用于计算矩阵的按摸为最大的特征值和相应的特征向量。其迭代格式为: { 任取非零向量u0 = (h1(0),⋯ ,hn(0))T|hr(k−1)| = max1≤j≤n|hr(k−1)| y⃑ k−1=u⃑ k−1|hr(k−1)| u⃑ k = Ay⃑ k−1= (h1(k),⋯ ,hn(k))T βk = sgn (hr(k−1)) hr(k) (k = 1,2, ⋯ ) 终止迭代的控制选用≤ε。 幂法的使用条件为n × n实矩阵 A 具有 n 个线性无关的特征向量x1,x2,⋯ ,xn,其相应的特征值λ1,λ2, ⋯ ,λn满足不等式 |λ1| > |λ2| ≥ |λ3| ≥ ⋯ ≥ |λn| 或 λ1 = λ2 = ⋯ = λm |λ1| > |λm+1| ≥ |λm+2| ≥ ⋯ ≥ |λn| 幂法收敛速度与比值|λ2λ1|或|λm+1λ1|有关,比值越小,收敛速度越快。 (2) 反幂法 反幂法用于计算n× n实矩阵 A 按摸最小的特征值,其迭代格式为: { 任取非零向量u0 ∈ Rn ηk−1 = √u⃑ k−1Tu⃑ k−1 y⃑ k−1 = u⃑ k−1 ηk−1⁄ Au⃑ k = y⃑ k−1 βk = y⃑ k−1u⃑ k (k = 1,2,⋯ ) 每迭代一次都要求解一次线性方程组Au⃑ k = y⃑ k−1。当 k 足够大时,λn ≈1βk,y⃑ k−1可近似的作为矩阵 A 的属于λn的特征向量。比值| λnλn−1|越小,收敛的越快。反幂法要求矩阵 A 非奇异。 (3) 带双步位移的 QR分解法 QR 方法适用于计算一般实矩阵的全部特征值,尤其适用于计算中小型实矩阵的全部特征值。本算例中采用带双步位移的 QR 方法,可加速收敛,其迭代格式为: { A1 = A(n−1) Ak − s1(k)I = QkRk (对Ak − s1(k)I 作 QR 分解) Ak+1 = RkQk + s1(k)I Ak+1 − s2(k)I = Qk+1Rk+1 (对Ak+1 − s2(k)I 作 QR 分解)Ak+2 = Rk+1Qk+1 + s2(k)I (k = 1,3,5,⋯ ) 二、计算结果及分析 1. 计算结果: (1) 幂法: 初始条件:最大迭代次数 L=1000;向量u0 = (1,0, ⋯ ,0) 计算结果: 第 1 次迭代结果: 最大特征值:0.00000e+000...