https://blog.csdn.net/A994850014/article/details/96142368
Frobenius矩阵
C++ Eigen矩阵库用矩阵求解特征值求解一元n次方程的全部根
auto roots( VectorXd p)
{
p = p/p(0); //转换为最高次系数为1的标准形式
MatrixXd matrixXd(p.size()-1,p.size()-1);
for (int i = 0; i < p.size()-1; ++i) {
matrixXd(i,0) = -p(i+1);
for (int j = 1; j < p.size()-1; ++j) {
if(i+1 == j )
matrixXd(i,j) = 1;
else
matrixXd (i,j) = 0;
}
}
cout << matrixXd << endl;
auto evalue = matrixXd.eigenvalues();
// cout << evalue << endl;
return evalue; //返回求解的特征值,这里是复数形式
}
int main() {
// Eig();
// EigSolver();
VectorXd p(4);
p << 1, 5, 8, 4; //输入系数向量
auto x = roots(p); //返回的是复数形式的特征值
cout << x;
}