SVD解线性方程组(非齐次)
2018-03-21 15:36
1041 查看
对于任一给定的矩阵A(m * n),都存在这样的分解:
其中, U是一个m * m的酉矩阵,S是一个m * n的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值, V是一个n * n的酉矩阵。
svd(A) = USV',令X=V'x,B=U'b,则有SX=B,由于S是对角阵,可轻易求出X,又由于V是正交阵,则x=VX,故而方程组得以解出。
Ax= b
[U,S,V]=svd(A)
B = U'b
此时令SX=B,X易求出为X[i]=B[i]/S[i,i]
则x=VX
最终可以验证,x是Ax=b的解
其中k要比n小很多,V是n*k维,其转置为k*n维。
还以上例为例,上例中S以是按大到小排列,故此处直接取U的前两列,即U1(4,2),S取左上角,即S1(2,2),取V的前两列,即V1(3,2),否则要按对应关系取
B1 = U1' * b
此时令S1*X1=B1,由于S1是对角阵,故而X1易求出为X1[i]=B1[i]/S1[i,i]
则x = V1 * X1
最终可以验证,x是Ax=b的近似解
其中, U是一个m * m的酉矩阵,S是一个m * n的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值, V是一个n * n的酉矩阵。
求解解线性方程组
Ax=bsvd(A) = USV',令X=V'x,B=U'b,则有SX=B,由于S是对角阵,可轻易求出X,又由于V是正交阵,则x=VX,故而方程组得以解出。
Ax= b
[U,S,V]=svd(A)
B = U'b
此时令SX=B,X易求出为X[i]=B[i]/S[i,i]
则x=VX
最终可以验证,x是Ax=b的解
SVD的一些性质
对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。也就是说:其中k要比n小很多,V是n*k维,其转置为k*n维。
还以上例为例,上例中S以是按大到小排列,故此处直接取U的前两列,即U1(4,2),S取左上角,即S1(2,2),取V的前两列,即V1(3,2),否则要按对应关系取
B1 = U1' * b
此时令S1*X1=B1,由于S1是对角阵,故而X1易求出为X1[i]=B1[i]/S1[i,i]
则x = V1 * X1
最终可以验证,x是Ax=b的近似解
相关文章推荐
- 求解线性方程组(SVD,QR,Gauss,LU)
- [数学]线性方程组的解、SVD
- SVD解线性方程组——秘密大起底
- Guass消元法和Guass列主元素消元法解线性方程组
- 矩阵转置 [u,s,v]=svd(a)
- 对角阵的SVD分解结果U一定等于V吗?
- svd好文
- Gauss消去法求解线性方程组
- 各种线性方程组求解算法的C++实现
- 雅克比(Jacobi)迭代法解线性方程组(Matlab程序)
- 求解线性方程组----Matlab
- 高斯消元法解非奇异线性方程组的MATLAB程序
- 共轭斜向法求解线性方程组
- 奇异值、奇异矩阵、SVD分解、正交矩阵
- 【转】强大的矩阵奇异值分解(SVD)及其应用
- 奇异值分解SVD--简单理论
- 线性方程组算法(C语言)
- 计算方法之用追赶法求线性方程组
- 求解线性方程组之Gauss-Jordan消去法求矩阵的逆
- 初学--求解模线性方程组(中国余数定理)。