问题描述
假设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