#pragma once #include "Defines.h" #include "iAlgMath_global.h" // 矩阵伪逆求解方法之一:稳定性有待进一步测试验证 // 作者:地大学生 wangjr //无法计算奇异矩阵 //6*7规模计算误差平均约1.0 //100*90规模计算误差平均约0.3 //200*90规模计算误差平均约为0.015 class I_ALGMATH_EXPORT zxAlgMatrixPsInvNew { public: zxAlgMatrixPsInvNew(); ~zxAlgMatrixPsInvNew(); #ifdef QT_DEBUG void test(); #endif public: // 计算伪逆矩阵 VVecDouble pseudoInverse(VVecDouble& A); private: // 计算矩阵的转置 void transpose(const VVecDouble& src, VVecDouble& dst); // 计算矩阵乘法 result = A * B void matrixMultiply(const VVecDouble& A, const VVecDouble& B, \ VVecDouble& result); // 计算矩阵的逆(仅限方阵,且假定可逆) bool matrixInverse(const VVecDouble& src, VVecDouble& dst); // 打印矩阵 void printMatrix(const VVecDouble& matrix); };