线性代数 · 矩阵 · Matlab | Cholesky 分解代码实现
(搬运外网的代码,非原创;原网址 )
(其实是专业课作业,但感觉国内博客没有合适的代码实现,所以就搬运到自己博客了)
背景 - Cholesky 分解:
- 若 A 为 n 阶实对称正定矩阵,则存在非奇异下三角矩阵 L,使得 A = LL^T。
- 是特殊的 LU 分解(下三角 上三角分解)。
- 若限定 L 的对角元素为正,则这种分解是唯一的。
- 计算 L 的方法:待定系数,硬算(貌似是这样的)。
Cholesky 分解法的 matlab 函数代码:
% Cholesky 分解法 function [retval] = cholesky_decompose(A) n = length(A); L = zeros(n,n); for i=1:n L(i,i) = sqrt(A(i,i)-L(i,:)*L(i,:)'); for j=(i+1):n L(j,i) = (A(j,i)-L(i,:)*L(j,:)')/L(i,i); end end retval = L'; end
matlab 脚本代码:
X = rand(3,3) A = X*X' L1 = cholesky_decompose(A) L2 = chol(A)
运行结果:
octave:5> source("my_script.m") X = 0.010982 0.924195 0.472230 0.749800 0.704545 0.495176 0.480342 0.828100 0.611450 A = 1.0773 0.8932 1.0593 0.8932 1.3038 1.2464 1.0593 1.2464 1.2903 L1 = 1.0379 0.8606 1.0207 0 0.7505 0.4904 0 0 0.0902 L2 = 1.0379 0.8606 1.0207 0 0.7505 0.4904 0 0 0.0902
与 matlab 的 chol 函数结果一致。
本文作者:MoonOut
本文链接:https://www.cnblogs.com/moonout/p/17803030.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
🥝 数学频道
, 🍇 THUDA · PhD 笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步