Matlab - 具有不同系数的多项式的根

Matlab - Roots of polynomial with varying coefficients

假设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 来找到具有不同系数的多项式的根?

需要将a定义为符号变量如下:

syms a

然后

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

应该可以。我正在使用 R2019b。

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

syms a real