Cholesky分解對任意多維高斯分布進行取樣

2021-07-26 00:00:23 字數 860 閱讀 6572

如果

a 是正定hermite矩陣,則

a可以分解為a=

llh 。證明可見任意矩陣教材。

引理由高斯分布的線性變換性質可知,如果x∼

n(μ,

σ),並且有滿秩線性變換y=

kx+b

,則y∼

n(kμ

+b,k

σk⊤)

證明:令x=

k−1(

y−b)

,則lnp

(x)=

c+(x

−μ)⊤

σ−1(

x−μ)

=c+[k−1

(y−b

)−μ]

⊤σ−1

[k−1

(y−b

)−μ]

] =c

+[y−

b−kμ

]⊤(k

−1)⊤

σ−1k

−1(y

−b−k

μ)因此,此時y∼

n(kμ

+b,k

σk⊤)

。證畢。

對任意高斯分布進行取樣如果x

∼n(0

,i) ,欲對y∼

n(μ,

σ)進行取樣,則首先對精度矩陣進行cholesky分解,即λ=

ll⊤ .進而,令y=

(l⊤)

−1x+

μ ,即可將標準正態分佈進行線性變換,得到任意高斯分布的樣本。

繪製橢圓

原理同對任意高斯分布進行取樣,標準正態分佈可當做標準圓,橢圓可當做任意高斯分布。通過將標準圓上的點進行變換:y=

(l⊤)

−1x+

b ,即可。

矩陣分解 Cholesky分解

矩陣分解是將矩陣拆解為數個矩陣的乘積,可分為三角分解 滿秩分解 qr分解 jordan分解和svd 奇異值 分解等。cholesky分解法是求解對稱正定線性方程組最常用的方法之一。可採用如下命令 r chol a 產生乙個上三角陣r,使r r a。若a為非對稱正定,則輸出乙個出錯資訊。r,p cho...

矩陣的Cholesky分解的Matlab實現

cholesky分解在matlab裡面有專門的函式chol 其呼叫格式為 r chol x 這一函式功能就不介紹了,但有些場合只能用最基礎的函式,所以,下面給出cholesky分解的最基礎形式。cholesky分解法 function x m chol a,b n,n size a x zeros ...

求解線性方程組 Cholesky分解法

求解線性方程組 cholesky分解法。源 用c 實現 這裡採用的是數值分析裡的演算法。在vc6.0下編譯通過,經測試沒大問題。求解線性方程組 cholesky分解法 本分解法僅適用於當 係數矩陣為對稱正定陣的情況 include include using namespace std 二維陣列動態...