Cholesky分解及一个例子

本文详细介绍了Cholesky分解的概念,这是一种将对称正定矩阵分解为下三角矩阵的方法,适用于解决线性问题。文章提供了计算步骤和示例,展示了如何通过Cholesky分解降低求解线性方程组的时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文字来源:

  1. C.E. Rasmussen & K.I. Williams, Gaissian Processes for Machine Learning,MIT
  2. 计算机科学计算,高等教育出版社,张宏伟 等

定义: cholesky分解是一种将任意n阶对称正定矩阵A分解成下三角矩阵L的一种方法:
LLT=A\pmb L\pmb L^T=\pmb ALLLLLLT=AAA其中,L称为Cholesky因子。如果L的对角元均为正数,则L是唯一确定的。

Cholesky分解对于解决带有对称正定系数矩阵A的线性问题非常有效。在计算机中,直接求解Ax=bA\mathbf x=\mathbf bAx=b时间复杂度是很高的(Gauss消元法求解是O(n3)O(n^3)O(n3)),用cholesky法对A提前变换之后再计算会有效降低复杂度。计算方法如下:Ax=b⇒LLTx=b\pmb A\pmb x=\pmb b\Rightarrow\pmb L\pmb L^T\pmb x=\pmb bAAAxxx=bbbLLLLLLTxxx=bbb其等价于{Ly=bLTx=y\begin{cases} \pmb L\pmb y=\pmb b \\ \pmb L^T\pmb x=\pmb y \end{cases}{LLLyyy=bbbLLLTxxx=yyy
(a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮an1an2…ann)=(l11l21l22⋮⋮⋱ln1ln2…lnn)(l11l12⋯l1nl22⋯l2n⋱⋮lnn)\begin{pmatrix} a_{11} & a_{12} & \cdots &a_{1n} \\ a_{21} & a_{22} & \cdots& a_{2n}\\ \vdots &\vdots&\ddots &\vdots\\ a_{n1} & a_{n2} & \dots & a_{nn} \end{pmatrix}= \begin{pmatrix} l_{11} & & & \\ l_{21} & l_{22} & & \\ \vdots &\vdots&\ddots & \\ l_{n1} & l_{n2} & \dots & l_{nn} \end{pmatrix} \begin{pmatrix} l_{11} & l_{12} & \cdots &l_{1n} \\ & l_{22} & \cdots& l_{2n}\\ & &\ddots &\vdots\\ & & & l_{nn} \end{pmatrix} a11a21an1a12a22an2a1na2nann=l11l21ln1l22ln2lnnl11l12l22l1nl2nlnn
aij=∑k=1j−1likljk+lijljj,i=j,j+1,⋯ ,n,a_{ij}=\sum_{k=1}^{j-1} l_{ik}l_{jk}+l_{ij}l_{jj}, \quad i=j,j+1,\cdots,n, aij=k=1j1likljk+lijljj,i=j,j+1,,n,则有
ljj=(ajj−∑k=1j−1ljk2)12,l_{jj}=\Bigl(a_{jj}-\sum_{k=1}^{j-1}l_{jk}^2\Bigr)^{\frac{1}{2}},ljj=(ajjk=1j1ljk2)21,
lij=(aij−∑k=1j−1likljk)/ljj,i=j+1,j+2,⋯ ,nl_{ij}=\Bigl( a_{ij}-\sum_{k=1}^{j-1}l_{ik}l_{jk} \Bigr)/l_{jj}, \quad i=j+1,j+2,\cdots,nlij=(aijk=1j1likljk)/ljj,i=j+1,j+2,,n计算次序为l11,l21,...,ln1,l22,l32,...,ln2,...,lnn.l_{11},l_{21},...,l_{n1},l_{22},l_{32},...,l_{n2},...,l_{nn}.l11,l21,...,ln1,l22,l32,...,ln2,...,lnn.

注意,正定对称矩阵的行列式可以由下式得出:
∣A∣=∏ni=1Lii2,|A|=\underset{i=1}{\overset{n}{\prod}}L^2_{ii},A=i=1nLii2,或者log⁡∣A∣=2∑ni=1log⁡Lii,\log|A|=2\underset{i=1}{\overset{n}{\sum}}\log L_{ii},logA=2i=1nlogLii其中,L是由A得出的Cholesky因子。

例题
用cholesky方法求解线性方程组Ax=b\pmb A\pmb x=\pmb bAAAxxx=bbb,其中
A=(4−11−14.252.7512.753.5),b=(467.25).\pmb A= \begin{pmatrix} 4 & -1 & 1 \\ -1 & 4.25 & 2.75\\ 1 & 2.75 & 3.5 \end{pmatrix}, \pmb b= \begin{pmatrix} 4\\ 6\\ 7.25 \end{pmatrix}.AAA=41114.252.7512.753.5,bbb=467.25.
显然AT=A\pmb A^T=\pmb AAAAT=AAA,且D1=4>0,D2=16>0,D3=16>0D_1=4>0,D_2=16>0,D_3=16>0D1=4>0,D2=16>0,D3=16>0.因此,A为对称正定矩阵,故存在A=LLT\pmb A=\pmb L\pmb L^TAAA=LLLLLLT.则有:
l11=a11=2, l21=a21l11=−0.5, l31=a31l11=0.5,l22=a22−l212=2,l32=a32−l31l21l22=1.5,l33=a33−l312−l322=1, \begin{aligned} & l_{11}=\sqrt{a_{11}}=2 , \ l_{21}=\frac{a_{21}}{l_{11}}=-0.5, \ l_{31}=\frac{a_{31}}{l_{11}}=0.5, \\ &l_{22}=\sqrt{a_{22}-l_{21}^2}=2, \\ &l_{32}=\frac{a_{32}-l_{31}l_{21}}{l_{22}}=1.5,\\ &l_{33}=\sqrt{a_{33}-l_{31}^2-l_{32}^2}=1, \end{aligned}l11=a11=2, l21=l11a21=0.5, l31=l11a31=0.5,l22=a22l212=2,l32=l22a32l31l21=1.5,l33=a33l312l322=1,
L=(2−0.520.51.51).\pmb L= \begin{pmatrix} 2&&\\ -0.5&2&\\ 0.5&1.5&1 \end{pmatrix}.LLL=20.50.521.51.再求
{Ly=bLTx=y\begin{cases} \pmb L\pmb y=\pmb b \\ \pmb L^T\pmb x=\pmb y \end{cases}{LLLyyy=bbbLLLTxxx=yyy解得x=(1,1,1)T.\pmb x=(1,1,1)^T.xxx=(1,1,1)T.

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值