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
假设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