MATLAB中无需将多项式转为矩阵形式求根的方法咨询
MATLAB中直接对非系数矩阵形式多项式求根的方法
如果你的多项式已经是符号函数形式(比如通过syms x; p(x) = x^2 - 4;定义),无需转换为系数矩阵,可直接使用以下方法求根:
使用
solve函数获取精确符号解syms x p(x) = x^2 - 4; roots = solve(p(x) == 0, x);执行后
roots会返回精确的符号解[-2; 2]。使用
vpasolve函数获取高精度数值解syms x p(x) = x^2 - 4; roots = vpasolve(p(x) == 0, x);适合处理无法得到解析解的复杂多项式,返回结果为数值形式。
若你的多项式是匿名函数形式(比如p = @(x) x^2 - 4;),可借助数值求解器:
用
fzero求解单个根(需提供初始猜测值)p = @(x) x^2 - 4; root1 = fzero(p, 0); % 初始猜测0附近的根,得到2 root2 = fzero(p, -3); % 初始猜测-3附近的根,得到-2用
fsolve求解多个根(需提供初始猜测数组)p = @(x) x^2 - 4; roots = fsolve(p, [1, -1]); % 初始猜测[1,-1],得到[2,-2]
注意事项:
- 符号类求解器(
solve/vpasolve)更适合直接处理符号多项式,能返回所有根; - 数值求解器(
fzero/fsolve)依赖初始猜测值,高次多项式可能需要多次尝试才能找到所有根。
内容的提问来源于stack exchange,提问作者harshmangalamv
相关产品推荐
相关产品推荐

