共轭梯度法(Conjugate Gradient Method)简介

共轭梯度法是一种用于求解对称正定线性方程组
A x = b
的迭代算法,其中:

  • A ∈ ℝⁿˣⁿ 是对称正定矩阵(即 A = Aᵀ 且 ∀ 非零向量 z,有 zᵀ A z > 0),
  • x 是未知向量,
  • b 是已知右端向量。

该方法等价于最小化二次函数:
f(x) = ½ xᵀ A x − bᵀ x

算法步骤(使用 Unicode 公式)

输入:对称正定矩阵 A,向量 b,初始猜测 x₀(通常取 0),容差 ε,最大迭代次数 kₘₐₓ
输出:近似解 xₖ

  1. 初始化
    r₀ ← b − A x₀
    p₀ ← r₀
    k ← 0

  2. 迭代直到收敛(‖rₖ‖ < ε 或 k ≥ kₘₐₓ):

 a. 计算步长 αₖ:
αₖ = (rₖᵀ rₖ) / (pₖᵀ A pₖ)

 b. 更新解:
xₖ₊₁ = xₖ + αₖ pₖ

 c. 更新残差:
rₖ₊₁ = rₖ − αₖ A pₖ

 d. 检查收敛:若 ‖rₖ₊₁‖ < ε,则停止。

 e. 计算共轭方向系数 βₖ:
βₖ = (rₖ₊₁ᵀ rₖ₊₁) / (rₖᵀ rₖ)

 f. 更新搜索方向:
pₖ₊₁ = rₖ₊₁ + βₖ pₖ

 g. k ← k + 1

  1. 返回 xₖ

关键性质

  • 每一步的搜索方向 {p₀, p₁, ..., pₖ} 满足 A-共轭性:
    pᵢᵀ A pⱼ = 0, 当 i ≠ j
  • 对于 n 维问题,在精确算术下最多 n 步收敛到精确解。
  • 仅需矩阵-向量乘法,无需存储或分解 A,适合大规模稀疏系统。

示例

x = x0
r = b - A @ x
p = r
for k in range(max_iter):
    rTr = r.T @ r
    if sqrt(rTr) < tol: break
    Ap = A @ p
    alpha = rTr / (p.T @ Ap)
    x = x + alpha * p
    r = r - alpha * Ap
    beta = (r.T @ r) / rTr
    p = r + beta * p

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haing2019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值