首页 > 解决方案 > Matlab - 具有不同系数的多项式根

问题描述

假设p=[3,2,1]。然后,roots(p)给出 的根3x^2+2x+1

如果多项式的系数取决于一个系数a怎么办?像多项式3x^2+2x+a。如果我定义p = @(a) [3,2,a]然后roots(p)不起作用。错误是

Undefined function 'isfinite' for input arguments of type 'function_handle'.

有没有办法调整roots函数,还是我必须退回到fsolve找到具有不同系数的多项式的根?

标签: matlabsolverpolynomials

解决方案


您需要定义a为符号变量,如下所示:

syms a

然后

p = [3,2,a]
roots(p)

应该管用。我正在使用 R2019b。

对于更复杂的示例,如果您对变量有所了解a(例如a是实数),您应该roots()通过将变量定义为实数来让函数知道:

syms a real

推荐阅读