当前位置: 首页 > article >正文

通俗易懂讲透共轭梯度法(CG)

通俗易懂讲透共轭梯度法CG本科生/研究生都能看懂本文用大白话图形比喻公式拆解可运行代码把共轭梯度法从原理、流程、优缺点到适用场景讲得明明白白适合数值优化、机器学习、科学计算复习。一、先搞懂我们为什么需要共轭梯度法普通梯度下降有个致命问题遇到“扁长碗”形状的函数会走成“之字形”来回震荡、收敛极慢。比如最速下降每一步只看当前最陡方向结果左右横跳几百步都走不到谷底于是就有了共轭梯度法CG每一步走的方向都和之前的方向“互不干扰、不打架”走一步就清干净一维误差。一句话总结共轭梯度法 不回头、不震荡、最快走出扁长山谷的优化算法。二、共轭梯度法是什么超形象比喻把优化看作在一个狭长山谷里找最低点最速下降像醉汉左右撞墙反复横跳共轭梯度法像沿着“互不干扰的通道”走每一步都把一个方向走到最优绝不走回头路核心逻辑方向之间满足 A-共轭A-正交→ 新方向不会破坏之前的优化结果。三、什么是“共轭”最简单解释两个方向 p 和 q如果满足pTAq0p^T A q 0pTAq0就说它们是A-共轭。直观理解普通正交方向垂直互不影响A-共轭在当前曲面A下垂直优化互不干扰四、共轭梯度法核心思想3句话每次选一个与之前所有方向共轭的新方向在这个方向上一步走到最优理论上n 维问题最多 n 步一定收敛五、CG 算法完整流程6步背会初始化x0x_0x0​残差r0b−Ax0r_0 b - A x_0r0​b−Ax0​方向p0r0p_0 r_0p0​r0​计算步长αkrkTrkpkTApk\alpha_k \frac{r_k^T r_k}{p_k^T A p_k}αk​pkT​Apk​rkT​rk​​更新位置xk1xkαkpkx_{k1} x_k \alpha_k p_kxk1​xk​αk​pk​更新残差rk1rk−αkApkr_{k1} r_k - \alpha_k A p_krk1​rk​−αk​Apk​计算共轭系数βkrk1Trk1rkTrk\beta_k \frac{r_{k1}^T r_{k1}}{r_k^T r_k}βk​rkT​rk​rk1T​rk1​​更新方向pk1rk1βkpkp_{k1} r_{k1} \beta_k p_kpk1​rk1​βk​pk​六、为什么 CG 比最速下降快得多无折返方向共轭互不干扰有限步收敛n 维最多 n 步精确解只存 3~4 个向量内存极低只需要矩阵乘向量适合稀疏大规模问题七、代码实战共轭梯度法求解稀疏线性系统直接复制可运行包含标准 CG预条件 CGJacobi收敛曲线对比importnumpyasnpimportscipy.sparseasspimportmatplotlib.pyplotasplt# 1. 生成二维泊松稀疏矩阵 A defgenerate_poisson_2d(n):Nn*n diag4*np.ones(N)off1-np.ones(N-1)offn-np.ones(N-n)Asp.diags([diag,off1,off1,offn,offn],[0,-1,1,-n,n],shape(N,N),formatcsr)foriinrange(1,n):A[i*n,i*n-1]0returnA# 2. 共轭梯度法 CG defconjugate_gradient(A,b,tol1e-6,maxiter1000,M_invNone):nlen(b)xnp.zeros(n)rb-A.dot(x)zrifM_invisNoneelseM_inv(r)pz.copy()res[np.linalg.norm(r)]forkinrange(maxiter):ApA.dot(p)alpha(r z)/(p Ap)xalpha*p r_nextr-alpha*Ap res.append(np.linalg.norm(r_next))ifres[-1]tol:breakz_nextr_nextifM_invisNoneelseM_inv(r_next)beta(r_next z_next)/(r z)pz_nextbeta*p r,zr_next,z_nextreturnx,res# 3. 测试问题 n50Agenerate_poisson_2d(n)Nn*n bnp.ones(N)# Jacobi 预条件diag_AA.diagonal()M_invlambdar:r/diag_A# 4. 运行 CG PCG x_cg,res_cgconjugate_gradient(A,b,maxiter500)x_pcg,res_pcgconjugate_gradient(A,b,maxiter500,M_invM_inv)# 5. 收敛曲线 plt.figure(figsize(10,5))plt.semilogy(res_cg,r-,linewidth2,labelCG)plt.semilogy(res_pcg,b-,linewidth2,labelPCG (Jacobi))plt.title(CG vs PCG 收敛对比)plt.xlabel(迭代次数)plt.ylabel(残差对数)plt.grid(True,linestyle--)plt.legend()plt.show()八、共轭梯度法优点收敛极快远离“之字形”震荡内存极小只存几个向量稀疏矩阵友好只需要矩阵-向量乘法理论完美n 维最多 n 步精确收敛可预条件加速PCG 是大规模科学计算标配九、CG 缺点必须知道只适用于对称正定矩阵 A对条件数敏感病态问题收敛变慢需要合适预条件复杂问题需要设计预条件器数值误差累积长时间迭代可能需要重启十、适用场景直接照抄✅必须用 CG/PCG有限元 / 有限差分 PDE 求解大规模稀疏对称正定线性方程组内存有限、无法做矩阵分解需要快速迭代求解❌不适合非对称、不定矩阵小规模稠密矩阵无法提供 A×v 操作的问题十一、一句话总结共轭梯度法是求解大规模稀疏对称正定线性系统的最强迭代算法它用共轭方向彻底解决震荡问题是科学计算、数值优化的核心工具。

相关文章:

通俗易懂讲透共轭梯度法(CG)

通俗易懂讲透共轭梯度法(CG)|本科生/研究生都能看懂 本文用大白话图形比喻公式拆解可运行代码,把共轭梯度法从原理、流程、优缺点到适用场景讲得明明白白,适合数值优化、机器学习、科学计算复习。一、先搞懂&#xff1…...

【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量

文章目录一、先看效果:比JS模板字符串更爽的写法二、核心功能:不止是拼接,还有响应式1. 任意类型|链式拼接2. Cast响应式变量绑定三、核心实现:几十行代码,看懂原理四、使用方法:零门槛,直接上手…...

2023年iMac 21.5寸内存与SSD升级实战指南

1. 为什么你的iMac需要升级内存和SSD? 2019款iMac 21.5寸标配的8GB内存和机械硬盘(或小容量Fusion Drive)放在2023年确实有点力不从心了。我去年接手朋友这台机器时,开个Photoshop都要等半分钟,更别说同时运行几个设计…...

【轨迹预测】MTR:基于全局意图定位与局部运动精化的Transformer架构解析

1. MTR框架的核心设计思想 想象一下你正在开车,前方十字路口突然出现一辆犹豫不决的自行车。人类司机能瞬间判断出多种可能性:它可能直行、左转或突然刹车。这正是MTR(Motion Transformer)要解决的挑战——让AI像人类一样预测复杂…...

5步掌握SD-PPP:Photoshop与AI绘图的无缝协作终极指南

5步掌握SD-PPP:Photoshop与AI绘图的无缝协作终极指南 【免费下载链接】sd-ppp A Photoshop AI plugin 项目地址: https://gitcode.com/gh_mirrors/sd/sd-ppp SD-PPP是一款革命性的Photoshop AI插件,它彻底改变了设计师与人工智能绘图工具之间的工…...

为什么awesome-ml是数据科学家的必备工具库?

为什么awesome-ml是数据科学家的必备工具库? 【免费下载链接】awesome-ml Curated list of useful LLM / Analytics / Datascience resources 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-ml awesome-ml是一个精心策划的LLM/分析/数据科学资源列表…...

如何实战卫星轨道计算:SGP4算法库深度优化指南

如何实战卫星轨道计算:SGP4算法库深度优化指南 【免费下载链接】sgp4 Simplified perturbations models 项目地址: https://gitcode.com/gh_mirrors/sg/sgp4 卫星轨道计算是航天工程、卫星通信和天文观测的核心技术,而SGP4算法库作为实现简化轨道…...

支付集成的优雅革命:Yansongda Pay 如何让多平台接入变得如此简单

支付集成的优雅革命:Yansongda Pay 如何让多平台接入变得如此简单 【免费下载链接】pay 可能是我用过的最优雅的 Alipay/WeChat/Douyin/Unipay/江苏银行 的支付 SDK 扩展包了 项目地址: https://gitcode.com/gh_mirrors/pa/pay 还在为支付宝、微信、抖音、银…...

最强 AI Coding Agent 架构深度解构

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...

大模型工程化成熟度测评指南(SITS2026官方适配版):12项指标自评表+3个高危信号预警+1次免费基准评估入口

第一章:SITS2026发布:大模型工程化成熟度模型 2026奇点智能技术大会(https://ml-summit.org) SITS2026(Software Intelligence & Trustworthiness Scale 2026)是首个面向大模型全生命周期的工程化成熟度评估框架&#xff0c…...

超图(iDesktop iServer10)实战:从OSGB倾斜摄影到TIF三维地形的全流程发布与加载

1. 超图平台三维数据处理全流程概览 第一次接触超图iDesktop和iServer10这套组合时,我被它处理三维数据的能力惊艳到了。这套工具不仅能搞定倾斜摄影OSGB数据,还能把普通的TIF地形图变成可交互的三维场景。很多刚入门的同行经常问我:"为…...

长芯微LDC5621完全替代AD5621,12位、缓冲电压输出DAC

描述 LDC5621是单通道、12位、缓冲电压输出DAC,使用2.7 V至5.5 V单电源供电,5 V时典型功耗为75 μA,采用小型LFCSP和SC70封装。这些器件内置片内精密输出放大器,能够实现轨到轨输出摆幅。LDC5621采用多功能三线式串行接口&#x…...

如何通过Flight Review飞行数据分析工具提升无人机飞行安全与性能

如何通过Flight Review飞行数据分析工具提升无人机飞行安全与性能 【免费下载链接】flight_review web application for flight log analysis & review 项目地址: https://gitcode.com/gh_mirrors/fl/flight_review 想象一下,你刚刚完成了一次重要的无人…...

技术选型:为什么Calibre插件方案比补丁方案更值得选择

技术选型:为什么Calibre插件方案比补丁方案更值得选择 【免费下载链接】calibre-do-not-translate-my-path Switch my calibre library from ascii path to plain Unicode path. 将我的书库从拼音目录切换至非纯英文(中文)命名 项目地址: h…...

从ChatGLM到Qwen,不同架构大模型的监控差异图谱:8大维度对比分析(含GPU/TPU/NPU全栈指标映射表)

第一章:大模型工程化运维监控体系建设的范式演进 2026奇点智能技术大会(https://ml-summit.org) 大模型工程化运维监控已从传统AI服务的“可观测性补丁”阶段,演进为覆盖训练、推理、评估、反馈全生命周期的“闭环治理范式”。这一转变由模型规模跃升、…...

零成本玩转谷歌Gemini模型:从入门到实战的完整指南

1. 为什么选择谷歌Gemini模型? 最近大模型领域真是热闹非凡,各家厂商都在不断推陈出新。作为一名长期关注AI发展的技术爱好者,我实测过多款主流大模型,包括GPT-4o、Claude 3.5 Sonnet等。但不得不说,谷歌最新推出的Gem…...

如何快速设置Plaid开发环境:连接银行账户获取交易数据的终极教程

如何快速设置Plaid开发环境:连接银行账户获取交易数据的终极教程 【免费下载链接】build-your-own-mint Build your own personal finance analytics using Plaid, Google Sheets and CircleCI. 项目地址: https://gitcode.com/gh_mirrors/bu/build-your-own-mint…...

重新思考背景移除:BackgroundRemover如何改变游戏规则

重新思考背景移除:BackgroundRemover如何改变游戏规则 【免费下载链接】backgroundremover Background Remover lets you Remove Background from images and video using AI with a simple command line interface that is free and open source. 项目地址: http…...

Diff Checker:3个你没想到的文本对比高效技巧

Diff Checker:3个你没想到的文本对比高效技巧 【免费下载链接】diff-checker Desktop application to compare text differences between two files (Windows, Mac, Linux) 项目地址: https://gitcode.com/gh_mirrors/di/diff-checker 你是否曾经为了找出两份…...

告别重复造轮子:用PyTorch训练MobileNetV2,在Simulink 2022b里一键导入并推理

跨越框架鸿沟:PyTorch到Simulink的模型迁移实战指南 当深度学习遇上系统仿真,工程师们常常陷入两难境地——PyTorch提供了前沿的模型架构和灵活的训练环境,而Simulink则是系统级仿真的黄金标准。传统做法需要经历繁琐的格式转换和接口调试&am…...

终极冒险岛游戏编辑器:Harepacker-resurrected全面使用指南

终极冒险岛游戏编辑器:Harepacker-resurrected全面使用指南 【免费下载链接】Harepacker-resurrected All in one .wz file/map editor for MapleStory game files 项目地址: https://gitcode.com/gh_mirrors/ha/Harepacker-resurrected Harepacker-resurrec…...

重庆大学LaTeX论文模板终极指南:如何轻松搞定毕业设计格式排版

重庆大学LaTeX论文模板终极指南:如何轻松搞定毕业设计格式排版 【免费下载链接】CQUThesis :pencil: 重庆大学毕业论文LaTeX模板---LaTeX Thesis Template for Chongqing University 项目地址: https://gitcode.com/gh_mirrors/cq/CQUThesis 还在为毕业论文格…...

算法竞赛经典代码集锦

1、排列论文#include<bits/stdc.h> using namespace std; const int N105; vector<int>g[N]; int a[N]; int n,m; int flag; int topSort(){queue<int>q;for(int i1;i<n;i){if(a[i]0){q.push(i);}}int cnt0;flag1;while(!q.empty()){int tq.front();q.pop…...

告别有线!用ESP32和Arduino IDE打造你的专属蓝牙音箱(保姆级教程)

用ESP32打造高性价比蓝牙音箱&#xff1a;从硬件组装到音频调优全指南 你是否厌倦了市面上千篇一律的蓝牙音箱&#xff1f;想要一个既能展现个性又具备专业音质的无线音频设备&#xff1f;ESP32开发板加上一些基础电子元件&#xff0c;就能让你以不到200元的成本打造出媲美千元…...

RGThree-Comfy:重新定义ComfyUI工作流效率的艺术创作引擎

RGThree-Comfy&#xff1a;重新定义ComfyUI工作流效率的艺术创作引擎 【免费下载链接】rgthree-comfy Making ComfyUI more comfortable! 项目地址: https://gitcode.com/gh_mirrors/rg/rgthree-comfy RGThree-Comfy是一个革命性的ComfyUI扩展套件&#xff0c;专为AI艺术…...

龙芯PMON USB驱动实现解析

这个目录看起来是龙芯 PMON (Processor Monitor) 固件中 USB 栈的实现。PMON 通常是一个轻量级的引导加载程序或固件环境,其 USB 驱动的实现方式可能与完整的 Linux 内核驱动有所不同,更倾向于直接硬件操作和简化的设备发现机制。 我将按照以下步骤详细解释这些文件的作用、…...

为什么TitanHide是逆向工程师的必备工具?

为什么TitanHide是逆向工程师的必备工具&#xff1f; 【免费下载链接】TitanHide Hiding kernel-driver for x86/x64. 项目地址: https://gitcode.com/gh_mirrors/ti/TitanHide TitanHide是一款专为逆向工程师设计的内核级隐藏驱动&#xff0c;通过修改系统内核函数的返…...

避坑指南:时间序列PCA分析最常见的5个错误(附正确操作)

避坑指南&#xff1a;时间序列PCA分析最常见的5个错误&#xff08;附正确操作&#xff09; 在金融预测、工业传感器监测或用户行为分析中&#xff0c;时间序列数据正以每秒TB级的速度增长。当数据科学家试图用PCA这把"瑞士军刀"处理这类数据时&#xff0c;约67%的案例…...

awesome-ml Power BI资源:数据可视化的终极指南

awesome-ml Power BI资源&#xff1a;数据可视化的终极指南 【免费下载链接】awesome-ml Curated list of useful LLM / Analytics / Datascience resources 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-ml awesome-ml项目中的Power BI资源为数据可视化提供了…...

LTspice FFT 仿真实战:从基础操作到高级参数调优

1. LTspice FFT功能入门指南 第一次接触LTspice的FFT功能时&#xff0c;我完全被那些频谱图搞懵了。后来才发现&#xff0c;这其实是电路仿真中最实用的分析工具之一。简单来说&#xff0c;FFT&#xff08;快速傅里叶变换&#xff09;就像给电路信号做"体检"&#xf…...