旅游电子商务与网站建设,商标注册网上,买表去哪个app是正品,中铁建设集团公司门户线性最小二乘问题 m个方程求解n个未知数#xff0c;有三种情况#xff1a;
mn且A为非奇异#xff0c;则有唯一解#xff0c;xA.inverse()*bmn#xff0c;约束的个数大于未知数的个数#xff0c;称为超定问题#xff08;overdetermined#xff09;mn#xff0…线性最小二乘问题 m个方程求解n个未知数有三种情况
mn且A为非奇异则有唯一解xA.inverse()*bmn约束的个数大于未知数的个数称为超定问题overdeterminedmn负定/欠定问题underdetermined 通常我们遇到的都是超定问题此时Axb的解是不存在的从而转向解最小二乘问题 J(x)为凸函数一阶导数为0得到 ,称之为正规方程
一般解 奇异值分解与线性最小二乘问题
设 列满秩A的奇异值分解:公式1 其中U和V为半酉阵分别满足 其中这里的几个符号的大小U:mm :nn V:nn
注意为什么这里是nn是因为我上面写的公式1中UGVGG的尺寸是mn
为 U 的 前 n 列矩阵即 则 等号当且仅
时成立所以 这就是我们千辛万苦要求的线性最小二乘问题的解 用eigen库计算的例子 //AxbMatrixXd A MatrixXd::Zero(15,8);Eigen::JacobiSVDMatrixXd svd(A, Eigen::ComputeFullU | Eigen::ComputeFullV);Eigen::Matrixdouble, 15, 15 U svd.matrixU();Eigen::Matrixdouble, 8, 8 V svd.matrixV();Eigen::Matrixdouble, 8, 8 Gama svd.singularValues().asDiagonal();Eigen::Matrixdouble, 15, 1 b;Eigen::Matrixdouble, 8, 1 x V * Gama.inverse()*(U.block15,8(0,0).transpose())*b;