SVD求解線性方程組

2021-10-08 15:15:28 字數 2902 閱讀 1226

對於任一給定的矩陣am×

n\boldsymbol_

am×n

​,都存在這樣的分解:

a =u

dv

t\boldsymbol=\boldsymbol\boldsymbol\boldsymbol^t

a=udvt

這裡:u

\boldsymbol

u是乙個(m×

m)

(m\times m)

(m×m

)的正交矩陣

d

\boldsymbol

d是乙個(m×

n)

(m\times n)

(m×n

)的對角矩陣

v

\boldsymbol

v是乙個(n×

n)

(n\times n)

(n×n

)的正交矩陣

d

\boldsymbol

d中的對角元叫做a

\boldsymbol

a的奇異值

u

\boldsymbol

u中的列向量叫做a

\boldsymbol

a的左奇異向量

v

\boldsymbol

v中的列向量叫做a

\boldsymbol

a的右奇異向量

問題等價於min⁡∥

ax−b

∥2

\min\parallel \boldsymbol-\boldsymbol\parallel^2

min∥ax

−b∥2

,是乙個非線性優化問題。

對a進行svd分解

min ⁡∥

ax−b

∥2

=min⁡∥

udvt

x−b∥

2=

min⁡∥d

vtx−

utb∥

2\min\parallel \boldsymbol-\boldsymbol\parallel^2 \\ = \min \parallel \boldsymbol\boldsymbol\boldsymbol^t \boldsymbol-\boldsymbol\parallel^2 \\ = \min \parallel \boldsymbol\boldsymbol^t \boldsymbol- \boldsymbol^t\boldsymbol\parallel^2

min∥ax

−b∥2

=min∥u

dvtx

−b∥2

=min∥d

vtx−

utb∥

2設y=vt

x\boldsymbol=\boldsymbol^t\boldsymbol

y=vt

x, c=u

tb

\boldsymbol = \boldsymbol^t \boldsymbol

c=ut

b,則min⁡∥

dvtx

−utb

∥2

\min \parallel \boldsymbol\boldsymbol^t \boldsymbol- \boldsymbol^t\boldsymbol\parallel^2

min∥dv

tx−u

tb∥2

可以表述為dy=

c\boldsymbol\boldsymbol= \boldsymbol

dy=c

,方程組的解為yi=

ci/d

i\boldsymbol_i=\boldsymbol_i/\boldsymbol_i

yi​=ci

​/di

​問題等價於min⁡∥

ax∥2

\min\parallel \boldsymbol\parallel^2

min∥ax

∥2上式轉化為:

min ⁡∥

ax∥2

=min⁡∥

udvt

x∥

2\min\parallel \boldsymbol\parallel^2 \\=\min \parallel \boldsymbol\boldsymbol\boldsymbol^t \boldsymbol\parallel^2

min∥ax

∥2=min∥u

dvtx

∥2令y =v

tx

\boldsymbol = \boldsymbol^t\boldsymbol

y=vt

x,則上式變為

min ⁡∥

dy∥2

\min \parallel \boldsymbol\parallel^2

min∥dy

∥2d是乙個對角矩陣,且對角元素按照遞減的順序排列,所以最小值即最優解在y=(

0,0,

...,

1)

t\boldsymbol=(0,0,...,1)^t

y=(0,0

,...

,1)t

時取得,此時x=v

y\boldsymbol=\boldsymbol\boldsymbol

x=vy

,所以最優解就是v

\boldsymbol

v的最小奇異值對應的列向量。比如,最小奇異值在第10行10列,那麼解向量x

\boldsymbol

x就等於v

\boldsymbol

v的第10個列向量.

MATLAB 線性方程組求解

clc,clear all close all 高斯消去法 a 2 3 4 3 5 2 4 3 30 線性方程組的係數矩陣 b 6 5 32 線性方程組的右端列向量 m,n size a 測量係數矩陣的維數 if m n fprint 線性方程組的係數矩陣非方陣 break end fprintf ...

MATLAB線性方程組求解

對於一般的,有唯一解的線性方程組,我們可以轉換成矩陣的形式 a x bax b ax b 則可以用矩陣運算求解x,即x a b 求解齊次線性方程組基礎解系的函式是null z null a 表示返回矩陣a的基礎解系組成的矩陣。z還滿足ztz i z null a,r 得出的z不滿足ztz i,但得出...

matlab線性方程組求解

線性方程組的求解主要有兩種方法,分別是直接法和迭代法,本節也將圍繞這兩種方法去講解一些matlab在求解線性方程組的相關知識。一 線性方程組的直接解法 主要可以分為以下三種方法 高斯 gauss 消去法 列主元消去法 矩陣的三角分解法 高斯 gauss 消去法是乙個經典的直接法,由它改進得到的列主元...