當矩陣 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
′dd
l′t
=llt
l=l′
ds =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...