我正在使用倍频程进行符号计算,并得到以下错误。
>> p
p(x) = (symfun)
3 2
x - 3⋅x - 4⋅x + 16
>> roots(p)
error: roots: inputs must not contain Inf or NaN
error: called from
roots at line 87 column 5
由于我是八度音阶符号计算的新手,我确信我只是用错了它。应该如何在八度音阶中计算p的根?
谢谢!
roots
是一个数值过程,您需要将符号多项式转换为根函数所理解的数值形式
octave:1> p = symfun( sym('x ^ 3 - 3 * x ^ 2 - 4 * x + 16'), sym('x') )
p(x) = (symfun)
3 2
x - 3⋅x - 4⋅x + 16
octave:2> roots( sym2poly( p ) )
ans =
-2.1844 + 0.0000i
2.5922 + 0.7780i
2.5922 - 0.7780i
我不知道matlab符号工具箱是否提供了roots
的符号版本。。。
UPDATE要查找符号多项式的根,请使用solve
函数;这个函数在matlab和倍频程(对于符号变量(中做同样的事情。
octave:3> solve(p, x)
ans = (sym 3×1 matrix)
⎡ ⎛ 1 √3⋅ⅈ⎞ 3 ______________⎤
⎢ ⎜- ─ - ────⎟⋅╲╱ 6⋅√249 + 135 ⎥
⎢ 7 ⎝ 2 2 ⎠ ⎥
⎢1 - ───────────────────────────── - ─────────────────────────────⎥
⎢ ⎛ 1 √3⋅ⅈ⎞ 3 ______________ 3 ⎥
⎢ ⎜- ─ - ────⎟⋅╲╱ 6⋅√249 + 135 ⎥
⎢ ⎝ 2 2 ⎠ ⎥
⎢ ⎥
⎢ ⎛ 1 √3⋅ⅈ⎞ 3 ______________ ⎥
⎢ ⎜- ─ + ────⎟⋅╲╱ 6⋅√249 + 135 ⎥
⎢ ⎝ 2 2 ⎠ 7 ⎥
⎢1 - ───────────────────────────── - ─────────────────────────────⎥
⎢ 3 ⎛ 1 √3⋅ⅈ⎞ 3 ______________⎥
⎢ ⎜- ─ + ────⎟⋅╲╱ 6⋅√249 + 135 ⎥
⎢ ⎝ 2 2 ⎠ ⎥
⎢ ⎥
⎢ 3 ______________ ⎥
⎢ ╲╱ 6⋅√249 + 135 7 ⎥
⎢ - ──────────────── - ──────────────── + 1 ⎥
⎢ 3 3 ______________ ⎥
⎣ ╲╱ 6⋅√249 + 135 ⎦