7 4 3 矩陣極分解和平方根分解

2021-10-07 09:50:59 字數 3092 閱讀 7164

當矩陣 a

aa 是方陣時

a =u

σvt=

uvtv

σvt=

(uvt

)(vσ

vt)=

qsq=

uvt是

正交矩陣

,s=v

σvt是

對稱半正

定矩陣,

即對任意

向量x,

有xts

x≥0成

立,因為

對角陣σ

對角元素

非負.又

a=uσ

vt=u

σutu

vt=(

uσut

)(uv

t)=k

qa = u\sigma v^t = uv^tv\sigma v^t = (uv^t)(v\sigma v^t)=qs \\ q = uv^t 是正交矩陣,s=v\sigma v^t是對稱半正定矩陣,\\即對任意向量 \mathbf,有 \mathbf^ts\mathbf \ge 0 成立,因為對角陣 \sigma 對角元素非負. \\又 a = u\sigma v^t = u\sigma u^tuv^t = (u\sigma u^t)(uv^t)=kq

a=uσvt

=uvt

vσvt

=(uv

t)(v

σvt)

=qsq

=uvt

是正交矩

陣,s=

vσvt

是對稱半

正定矩陣

,即對任

意向量x

,有xt

sx≥0

成立,因

為對角陣

σ對角元

素非負.

又a=u

σvt=

uσut

uvt=

(uσu

t)(u

vt)=

kq矩陣極分解任意方陣可分解為 a=q

sa = qs

a=qs

和 a=kq

a = kq

a=kq

正交陣和對稱半正定矩陣乘積。

其中 q

qq 是最接近矩陣 a

aa 的正交矩陣,即 ∥q−

a∥

\|q-a\|

∥q−a

∥ 最小。

對稱半正定矩陣 s2=

(vσv

t)(v

σvt)

=vσ2

vt=a

ta

s^2 = (v\sigma v^t)(v\sigma v^t) = v\sigma^2 v^t = a^ta

s2=(vς

vt)(

vσvt

)=vς

2vt=

ata ,故 s=a

ta

s = \sqrt

s=ata​

稱矩陣 s

ss 為對稱半正定矩陣 ata

a^ta

ata 的平方根。

同理 k=a

at

k = \sqrt

k=aat​

稱矩陣 k

kk 為對稱半正定矩陣 aat

aa^t

aat 的平方根。

對稱半正定矩陣平方根分解任意對稱半正定矩陣可分解為 s=f

fs = ff

s=ff

,其中 f

ff 為半正定矩陣。

證:根據對稱矩陣譜分解定理 s=q

λq

ts=q\lambda q^t

s=qλqt

,當 s

ss 是對稱半正定矩陣時,對角陣 λ

\lambda

λ 對角元素非負。

s =q

λqt=

qσσq

t=qσ

qtqσ

qt=f

ff=q

σqt,

σ=λ=

diag

(λ1,

⋯,λn

)s=q\lambda q^t = q\sigma \sigma q^t = q\sigma q^t q \sigma q^t = ff \\ f = q\sigma q^t, \sigma = \sqrt = diag(\sqrt,\cdots,\sqrt)

s=qλqt

=qσς

qt=q

σqtq

σqt=

fff=

qσqt

,σ=λ

​=di

ag(λ

1​​,

⋯,λn

​​)所以對稱半正定矩陣可以看作是實數中的非負數,有平方根。

對稱半正定矩陣平方根分解還有一種三角分解法,根據高斯消元法得到。

對稱半正定矩陣平方根分解任意對稱半正定矩陣可分解為 s=l

lt

s = ll^t

s=ll

t ,其中 l

ll 為下三角矩陣,對角元素為負。

證:根據任意方陣的 ldu 分解,有 s=l

du

s = ldu

s=ld

u ,其中 l

ll 是下三角單位矩陣,d

dd 是上三角單位矩陣,d

dd 是對角陣。當 s

ss 是對稱半正定矩陣時,有 u=l

tu=l^t

u=lt

,對角陣 d

dd 對角元素非負。

s =l

′dl′

t=l′

ddl′

t=ll

tl=l

′d

s = l' d l'^t = l' \sqrt \sqrt l'^t = ll^t \\ l = l' \sqrt

s=l′dl

′t=l

′d​d

​l′t

=llt

l=l′

d​s =l

lt

s = ll^t

s=ll

t 稱為 cholesky 分解。

改進平方根法解矩陣

float data 3 3 矩陣a 的原始資料 float datat 3 3 分解過程的矩陣 float datal 3 3 分解過後的l矩陣 float datad 3 3 分解過後的d 矩陣 float y 3 定義了乙個y的單行的矩陣 float b 3 所給定的初始值的資料 float ...

x 的平方根 二分查詢

實現int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2說明 8 的平方根是 2.82842 由於返回型別是整數,小數部分將被捨去。二分查詢法應用於搜...

二分法做平方根

注意這裡的浮點數 不然的話程式會報錯 coding utf 8 二分法計算20的平方根 import math a 0.0 多次二分後會變成二分法,所以要設定成浮點數,python裡就是直接賦值成浮點數 b c float raw input enter a number n 100 while t...