SVD分解的数学原理:

A = U*S*V^{T} => A^{+} = V*S^{-1}*U^{T}

1. dgesvd函数对A进行SVD分解,可以得到U,S,VT(V的转置)

2.对S进行求导,得到S^{-1}

3.dgemm函数利用前两个参数的设置(‘N’/’T’)计算矩阵乘法,从而得到A的广义逆的结果

备注:

dgesvd的函数说明参考链接:

http://www.netlib.org/lapack/explore-html/d1/d7e/group__double_g_esing_ga84fdf22a62b12ff364621e4713ce02f2.html

dgesvd函数处理完毕后会改写输入矩阵,所以如果输入矩阵还要继续使用的话,需要先拷贝一份。

dgemm的函数说明参考链接:

http://www.netlib.org/lapack/explore-html/d1/d54/group__double__blas__level3_gaeda3cbd99c8fb834a60a6412878226e1.html

 

 

 


版权声明:本文为weixin_44528747原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_44528747/article/details/107755580