在數值線性代數中，共軛梯度法是一種求解對稱正定線性方程組 boldsymbol Axboldsymbol b 的迭代方法。共軛梯度法可以從不同的角度推導而得，包括作為求解最最佳化問題的共軛方向法的特例，以及作為求解特徵值問題的 ArnoldiLanczos 迭代的變種。 本條目記述這些推導方法中的重要步驟。 從共軛方向法推導 共軛梯度法可以看作是應用於二次函式最小化的共軛方向法的特例 f boldsymbol xboldsymbol xmathrm Tboldsymbol Aboldsymbol x2boldsymbol bmathrm Tboldsymbol xtext 共軛方向法 在共軛方向上求最小化： f boldsymbol xboldsymbol xmathrm Tboldsymbol Aboldsymbol x2boldsymbol bmathrm Tboldsymbol xtext 從最初的猜測 boldsymbol x_0 開始，以及相應的殘差 boldsymbol r_0boldsymbol bboldsymbol Ax_0 並透過公式計算迭代和殘差 begin align alpha_ifrac boldsymbol p_imathrm Tboldsymbol r_iboldsymbol p_imathrm Tboldsymbol Ap_itext boldsymbol x_i1boldsymbol x_ialpha_iboldsymbol p_itext boldsymbol r_i1boldsymbol r_ialpha_iboldsymbol Ap_i end align 其中，boldsymbol p_0boldsymbol p_1boldsymbol p_2ldots 為一系列相互共軛的方向，例如： boldsymbol p_imathrm Tboldsymbol Ap_j0，對於任何 ineq j 由於共軛方向法沒有給出用於選擇方向的公式，因此該方法具有誤差 boldsymbol p_0boldsymbol p_1boldsymbol p_2ldots 而共軛方向法也有多種方法分支，包括共軛梯度法和高斯消元法。 從 ArnoldiLanczos 迭代推導 共軛梯度法可以看作 ArnoldiLanczos 迭代應用於求解線性方程組時的一個變種。 一般 Arnoldi 方法 Arnoldi 迭代從一個向量 boldsymbol r_0 開始，透過定義 boldsymbol v_iboldsymbol w_ilVertboldsymbol w_irVert_2，其中 boldsymbol w_ibegin cases boldsymbol r_0 text if i1text boldsymbol Av_i1sum_j1i1boldsymbol v_jmathrm Tboldsymbol Av_i1boldsymbol v_j text if i1text end cases 逐步建立 Krylov 子空間 mathcal Kboldsymbol Aboldsymbol r_0boldsymbol r_0boldsymbol Ar_0boldsymbol A2boldsymbol r_0ldots 的一組標準正交基 boldsymbol v_1boldsymbol v_2boldsymbol v_3ldots。 換言之，對於 i1，boldsymbol v_i 由將 boldsymbol Av_i1 相對於 boldsymbol v_1boldsymbol v_2ldotsboldsymbol v_i1 進行 GramSchmidt 正交化然後歸一化得到。 寫成矩陣形式，迭代過程可以表示為 boldsymbol AV_iboldsymbol V_i1boldsymbol tilde H_itext 其中 begin align boldsymbol V_ibegin bmatrix boldsymbol v_1 boldsymbol v_2 cdots boldsymbol v_i end bmatrixtext boldsymbol tilde H_ibegin bmatrix h_11 h_12 h_13 cdots h_1i h_21 h_22 h_23 cdots h_2i h_32 h_33 cdots h_3i ddots ddots vdots h_ii1 h_ii h_i1i end bmatrixbegin bmatrix boldsymbol H_i h_i1iboldsymbol e_imathrm T end bmatrixtext h_jibegin cases boldsymbol v_jmathrm Tboldsymbol Av_i text if jleq itext lVertboldsymbol w_i1rVert_2 text if ji1text 0 text if ji1text end cases end align 當應用於求解線性方程組時，Arnoldi 迭代對應於初始解 boldsymbol x_0 的殘量 boldsymbol r_0boldsymbol bboldsymbol Ax_0 開始迭代，在每一步迭代之後計算 boldsymbol y_iboldsymbol H_i1lVertboldsymbol r_0rVert_2boldsymbol e_1 和新的近似解 boldsymbol x_iboldsymbol x_0boldsymbol V_iboldsymbol y_i 直接 Lanzcos 方法 在餘下的討論中，我們假定 boldsymbol A 是對稱正定矩陣。由於 boldsymbol A 的對稱性，上 Hessenberg 矩陣 boldsymbol H_iboldsymbol V_imathrm Tboldsymbol AV_i 變成對陣三對角矩陣。於是它可以被更明確地表示為 boldsymbol H_ibegin bmatrix a_1 b_2 b_2 a_2 b_3 ddots ddots ddots b_i1 a_i1 b_i b_i a_i end bmatrixtext 這使得迭代中的 boldsymbol v_i 有一個簡短的三項遞推式。Arnoldi 迭代從而簡化為 Lanczos 迭代。 由於 boldsymbol A 對稱正定，boldsymbol H_i 同樣也對稱正定。因此，boldsymbol H_i 可以透過不選主元的 LU 分解分解為 boldsymbol H_iboldsymbol L_iboldsymbol U_ibegin bmatrix 1 c_2 1 ddots ddots c_i1 1 c_i 1 end bmatrixbegin bmatrix d_1 b_2 d_2 b_3 ddots ddots d_i1 b_i d_i end bmatrixtext 其中 c_i 和 d_i 有簡單的遞推式： begin align c_ib_id_i1text d_ibegin cases a_1 text if i1text a_ic_ib_i text if i1text end cases end align 改寫 boldsymbol x_iboldsymbol x_0boldsymbol V_iboldsymbol y_i 為 begin align boldsymbol x_iboldsymbol x_0boldsymbol V_iboldsymbol H_i1lVertboldsymbol r_0rVert_2boldsymbol e_1 boldsymbol x_0boldsymbol V_iboldsymbol U_i1boldsymbol L_i1lVertboldsymbol r_0rVert_2boldsymbol e_1 boldsymbol x_0boldsymbol P_iboldsymbol z_itext end align 其中 begin align boldsymbol P_iboldsymbol V_iboldsymbol U_i1text boldsymbol z_iboldsymbol L_i1lVertboldsymbol r_0rVert_2boldsymbol e_1text end align 此時需要觀察到 begin align boldsymbol P_ibegin bmatrix boldsymbol P_i1 boldsymbol p_i end bmatrixtext boldsymbol z_ibegin bmatrix boldsymbol z_i1 zeta_i end bmatrixtext end align 實際上，boldsymbol p_i 和 zeta_i 同樣有簡短的遞推式： begin align boldsymbol p_ifrac 1d_iboldsymbol v_ib_iboldsymbol p_i1text alpha_ic_izeta_i1text end align 透過這個形式，我們得到 boldsymbol x_i 的一個簡單的遞推式： begin align boldsymbol x_iboldsymbol x_0boldsymbol P_iboldsymbol z_i boldsymbol x_0boldsymbol P_i1boldsymbol z_i1zeta_iboldsymbol p_i boldsymbol x_i1zeta_iboldsymbol p_itext end align 以上的遞推關係立即匯出比共軛梯度法稍微更復雜的直接 Lanczos 方法。 從正交性和共軛性匯出共軛梯度法 如果我們允許縮放 boldsymbol p_i 並透過常數因子補償縮放的係數，我們可能可以得到以下形式的更簡單的遞推式： begin align boldsymbol x_iboldsymbol x_i1alpha_i1boldsymbol p_i1text boldsymbol r_iboldsymbol r_i1alpha_i1boldsymbol Ap_i1text boldsymbol p_iboldsymbol r_ibeta_i1boldsymbol p_i1text end align 作為簡化的前提，我們現在推導 boldsymbol r_i 的正交性和 boldsymbol p_i 的共軛性，即對於 ineq j begin align boldsymbol r_imathrm Tboldsymbol r_j0text boldsymbol p_imathrm Tboldsymbol Ap_j0text end align 各個殘量之間滿足正交性的原因是 boldsymbol r_i 實際上可由 boldsymbol v_i1 乘上一個係數而得。這是因為對於 i0，boldsymbol r_0lVertboldsymbol r_0rVert_2boldsymbol v_1，對於 i0， begin align boldsymbol r_iboldsymbol bboldsymbol Ax_i boldsymbol bboldsymbol Aboldsymbol x_0boldsymbol V_iboldsymbol y_i boldsymbol r_0boldsymbol AV_iboldsymbol y_i boldsymbol r_0boldsymbol V_i1boldsymbol tilde H_iboldsymbol y_i boldsymbol r_0boldsymbol V_iboldsymbol H_iboldsymbol y_ih_i1iboldsymbol e_imathrm Tboldsymbol y_iboldsymbol v_i1 lVertboldsymbol r_0rVert_2boldsymbol v_1boldsymbol V_i lVertboldsymbol r_0rVert_2boldsymbol e_1h_i1iboldsymbol e_imathrm Tboldsymbol y_iboldsymbol v_i1 h_i1iboldsymbol e_imathrm Tboldsymbol y_iboldsymbol v_i1text end align 要得到 boldsymbol p_i 的共軛性，只需證明 boldsymbol P_imathrm Tboldsymbol AP_i 是對角矩陣： begin align boldsymbol P_imathrm Tboldsymbol AP_iboldsymbol U_imathrm Tboldsymbol V_imathrm Tboldsymbol AV_iboldsymbol U_i1 boldsymbol U_imathrm Tboldsymbol H_iboldsymbol U_i1 boldsymbol U_imathrm Tboldsymbol L_iboldsymbol U_iboldsymbol U_i1 boldsymbol U_imathrm Tboldsymbol L_i end align 是對稱的下三角矩陣，因而必然是對角矩陣。 現在我們可以單純由 boldsymbol r_i 的正交性和 boldsymbol p_i 的共軛性推導相對於縮放後的 boldsymbol p_i 的常數因子 alpha_i 和 beta_i。 由於 boldsymbol r_i 的正交性，必然有 boldsymbol r_i1mathrm Tboldsymbol r_iboldsymbol r_ialpha_iboldsymbol Ap_imathrm Tboldsymbol r_i0。於是 begin align alpha_ifrac boldsymbol r_imathrm Tboldsymbol r_iboldsymbol r_imathrm Tboldsymbol Ap_i frac boldsymbol r_imathrm Tboldsymbol r_iboldsymbol p_ibeta_i1boldsymbol p_i1mathrm Tboldsymbol Ap_i frac boldsymbol r_imathrm Tboldsymbol r_iboldsymbol p_imathrm Tboldsymbol Ap_itext end align 類似地，由於 boldsymbol p_i 的共軛性，必然有 boldsymbol p_i1mathrm Tboldsymbol Ap_iboldsymbol r_i1beta_iboldsymbol p_imathrm Tboldsymbol Ap_i0。於是 begin align beta_ifrac boldsymbol r_i1mathrm Tboldsymbol Ap_iboldsymbol p_imathrm Tboldsymbol Ap_i frac boldsymbol r_i1mathrm Tboldsymbol r_iboldsymbol r_i1alpha_iboldsymbol p_imathrm Tboldsymbol Ap_i frac boldsymbol r_i1mathrm Tboldsymbol r_i1boldsymbol r_imathrm Tboldsymbol r_itext end align 推導至此完成。 參考文獻 Category 數值線性代數 Category 最最佳化演算法