NumPy 矩阵分解实战 — Cholesky 分解
一、前言在数值线性代数中矩阵分解是解决大规模计算问题的核心工具。前面我们已经学习了 QR 分解——它将任意矩阵拆分为正规正交矩阵QQQ和上三角矩阵RRR的乘积。今天我们来学习矩阵分解家族中另一个重要成员Cholesky 分解。与 QR 分解不同Cholesky 分解只针对一类特殊矩阵但它分解出的结果更加优雅计算效率也更高。二、什么是 Cholesky 分解Cholesky 分解将一个矩阵A分解为一个下三角矩阵 L及其共轭转置 LH的乘积AL⋅LH\boxed{A L \cdot L^H}AL⋅LH​其中L是下三角矩阵对角线上方元素全为 0LH是 L 的共轭转置Hermitian Transpose⚠️ 适用条件A 必须是埃尔米特矩阵或实对称矩阵否则 Cholesky 分解不适用。矩阵类型条件举例实对称矩阵AATA A^TAAT[1225]\begin{bmatrix}1 2\\2 5\end{bmatrix}[12​25​]埃尔米特矩阵AAHA A^HAAH[1−2j2j5]\begin{bmatrix}1 -2j\\2j 5\end{bmatrix}[12j​−2j5​]简单来说矩阵必须关于对角线对称——实数矩阵看转置相等复数矩阵看共轭转置相等。三、NumPy 中的 Cholesky 分解NumPy 提供了np.linalg.cholesky()函数来执行 Cholesky 分解项目说明函数np.linalg.cholesky(A)参数 A实对称矩阵或埃尔米特矩阵二维数组返回值下三角矩阵 L满足AL⋅LHA L \cdot L^HAL⋅LH验证方法np.dot(L, L.T.conj())应等于原矩阵 A执行步骤Step 1 → 定义矩阵 A埃尔米特/实对称 Step 2 → 调用 np.linalg.cholesky(A) Step 3 → 查看下三角矩阵 L 的值 Step 4 → 验证 L × L^H A四、实战两个完整示例示例一复埃尔米特矩阵矩阵A[1−2j2j5]A \begin{bmatrix}1 -2j\\2j 5\end{bmatrix}A[12j​−2j5​]满足AAHA A^HAAH是一个典型的埃尔米特矩阵。importnumpyasnp# A 必须是埃尔米特矩阵或实对称矩阵Anp.array([[1,-2j],[2j,5]])# 执行 Cholesky 分解Lnp.linalg.cholesky(A)分解结果请自行查看原始矩阵 A 和下三角矩阵 L 的值L array([[1.0.j, 0.0.j], [0.2.j, 1.0.j]])可以看到 L 是一个下三角矩阵——对角线上方全为 0完全符合预期。接下来进行验证# 验证L * L.H 应该等于 Anp.dot(L,L.T.conj())输出array([[1.0.j, 0.-2.j], [0.2.j, 5.0.j]])结果与原矩阵 A 完全一致Cholesky 分解验证通过示例二实对称矩阵矩阵A[1225]A \begin{bmatrix}1 2\\2 5\end{bmatrix}A[12​25​]满足AATA A^TAAT是一个实对称矩阵或二维数组。# 实对称矩阵或二维数组Anp.array([[1,2],[2,5]])# 执行 Cholesky 分解Lnp.linalg.cholesky(A)分解结果L array([[1., 0.], [2., 1.]])继续验证# 验证L * L.H 应该等于 Anp.dot(L,L.T.conj())输出array([[1., 2.], [2., 5.]])结果再次与原矩阵 A 完全一致验证通过五、与 QR 分解的对比对比项QR 分解Cholesky 分解公式xQ⋅Rx Q \cdot RxQ⋅RAL⋅LHA L \cdot L^HAL⋅LH适用范围任意矩阵埃尔米特/实对称矩阵Q正规正交矩阵—R上三角矩阵—L—下三角矩阵LH—共轭转置NumPy 函数np.linalg.qr(x)np.linalg.cholesky(A)验证q * r xL * L.H A两者各有优势QR 分解适用范围广任何矩阵都能分解Cholesky 分解仅适用于对称矩阵但计算更高效、结果更紧凑六、小结通过以上两个示例我们分别用复埃尔米特矩阵和实对称矩阵完成了 Cholesky 分解并通过L×LHL \times L^HL×LH的乘积验证了分解的正确性。核心要点速记✅ 公式A L · Lᴴ ✅ 条件A 必须是埃尔米特矩阵或实对称矩阵 ✅ 函数np.linalg.cholesky(A) ✅ 返回下三角矩阵 L ✅ 验证np.dot(L, L.T.conj()) A七、课后思考思考题如果矩阵不满足对称条件强行调用np.linalg.cholesky()会怎样请自行验证。提示NumPy 会抛出LinAlgError异常提示矩阵不是正定矩阵。参考内容本文代码、注释与输出结果均引自 NumPy 线性代数教程 1.2.17 节Cholesky 分解。如果这篇文章对你有帮助欢迎点赞 收藏 ⭐ 关注 后续会持续更新 NumPy 线性代数系列

相关新闻

OC5262 5.5V~60V宽输入降压恒流驱动:覆盖12V汽车至48V工业照明全场景

OC5262 5.5V~60V宽输入降压恒流驱动:覆盖12V汽车至48V工业照明全场景

OC5262是一款连续电感电流导通模式的降压型LED恒流驱动器,工作电压从5.5V到60V,最大输出电流2.5A。芯片采用高端电流检测电路,调光脚ADJ兼容PWM和模拟调光,内置5.5V LDO(最大5mA输出),效率高达9…

2026/10/14 9:48:27 阅读更多 →
Claude 看板与动画工具实战:对话式办公套件搭建指南

Claude 看板与动画工具实战:对话式办公套件搭建指南

1. 从单点对话到办公套件:这次更新到底改了什么Claude 最早给人的印象就是一个“会聊天的模型”,你问它答,顶多帮你改改文案、写写代码。但最近这一波更新,方向明显变了——它开始往“办公套件”的路子上走。所谓看板工具和动画工…

2026/10/14 9:47:26 阅读更多 →
小白程序员转行AI必看:Agent开发与大模型开发的区别与学习路径

小白程序员转行AI必看:Agent开发与大模型开发的区别与学习路径

本文对比了大模型算法工程师和Agent开发工程师的薪资、工作内容、学习门槛及发展前景。指出大模型算法岗薪资高但门槛极高,适合深入研究AI模型;而Agent开发岗入门门槛低,适合将AI应用于实际业务场景,是当前及未来的热门方向。建议…

2026/10/14 9:47:26 阅读更多 →

最新新闻

CMS技术演进:从静态生成到云原生架构

CMS技术演进:从静态生成到云原生架构

1. 内容管理系统的前世今生1993年,伊利诺伊大学的学生们为了管理NCSA官网的新闻更新,编写了一个简单的网页发布脚本。这个看似不起眼的工具,后来被公认为世界上第一个内容管理系统(CMS)的雏形。当时没人能预料到&#…

2026/10/14 10:45:54 阅读更多 →
agent-skills 实战:从零构建可靠的 AI Agent 能力体系

agent-skills 实战:从零构建可靠的 AI Agent 能力体系

1. 从零理解 agent-skills:它到底是什么,为什么值得关注 第一次看到 “agent-skills” 这个词,很多人会下意识把它当成某个具体框架或者某个开源库的名字。但如果你最近在关注 AI 应用开发这个圈子,会发现它其实更像是一个正在快速…

2026/10/14 10:45:54 阅读更多 →
收藏 | 超详细解析LLM与Agent,小白也能轻松入门AI开发

收藏 | 超详细解析LLM与Agent,小白也能轻松入门AI开发

本文系统介绍了LLM(大型语言模型)和AI Agent的核心概念、特点及区别。LLM是经过海量文本训练的神经网络,擅长预测文本序列,但知识静态、被动响应。AI Agent则以LLM为核心,能自主规划、调用工具、自我优化,完…

2026/10/14 10:45:54 阅读更多 →
从AI设计到CAD绘制与Bug检测:开源工具实操指南

从AI设计到CAD绘制与Bug检测:开源工具实操指南

过去两年我一直在留意一个趋势:AI 已经不是只会在聊天框里写东西了,而是真的开始进入那些需要“职业手活”的岗位。最有代表性的三个方向,就是标题里说的这三个——AI 当设计师、AI 画 CAD、AI 测 Bug。对应到开源社区里,我也确实…

2026/10/14 10:45:54 阅读更多 →
神经网络前向传播详解:从手算到Python代码实现

神经网络前向传播详解:从手算到Python代码实现

开头这200来字我得说明白一件事:很多人学神经网络,一上来就被反向传播劝退,看了一堆偏导数、链式法则就开始怀疑人生。其实大可不必。我见过太多初学者最后能啃下深度学习,靠的不是一开始就把梯度背下来,而是老老实实把…

2026/10/14 10:45:54 阅读更多 →
Shell脚本多行注释技巧与工程实践

Shell脚本多行注释技巧与工程实践

1. Shell脚本多行注释的必要性与挑战 在Bash和KornShell(KSH)脚本开发中,我们经常遇到需要临时禁用大段代码或添加详细说明文档的情况。与大多数编程语言不同,Shell脚本原生并不支持类似C语言的/* */或Python的 这样的多行注释语法…

2026/10/14 10:44:53 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →