C++ 实现 MATLAB poly 函数:基于根求系数与特征多项式思路
环境配置
要开始使用,首先需要配置好环境。将生成的动态链接库 dll 文件放到 exe 同目录下,再把头文件和 lib 文件加入项目路径。
在 cpp 文件中引入必要的依赖:
#include "Matlab2c.h"
#pragma comment(lib,"Matlab2c.lib")
using namespace Matlab2c;
poly 函数原理
MATLAB 中的 poly 函数主要有两个用途:根据根求多项式系数,或者求矩阵的特征多项式。
当输入是一个 NN 矩阵时,命令求出 A 的特征多项式 det(lambdaeye(size(A))-A)。当 V 是向量时,命令生成以 V 为根的多项式。
核心源码实现
下面展示的是基于 Matlab2c 库的 C++ 实现逻辑。这里重点处理了输入为向量的情况,即根据根向量反推系数矩阵。对于方阵特征多项式的计算,当前版本尚未完成,代码中保留了注释说明。
Matrix Matlab2c::poly(Matrix& a) {
int i;
Matrix p(1,1), b(1,2);
p.data[0] = 1;
b.data[0] = 1;
if (a.isVector()) {
// 遍历根向量,通过卷积逐步构建多项式系数
for (i = 0; i < a.row * a.column; i++) {
b.data[1] = -(a.data[i]);
p = conv(p, b);
}
} else if (a.row == a.column) {
// 求方阵的特征多项式
// p = det(lambda*eye(a.row)) - a;,暂未实现
} else {
();
}
p;
}

