Matlab-具有变化系数的多项式的根

问题描述

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

如果多项式的系数取决于系数a怎么办?就像多项式3x^2+2x+a。如果我定义p = @(a) [3,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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...