error: roots: inputs must not contain Inf or NaN (Octave)

error: roots: inputs must not contain Inf or NaN (Octave)

我正在使用 Octave 进行符号计算并得到以下错误。

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

由于我对 Octave 中的符号计算不熟悉,所以我确信我只是用错了它。 p的根在octave中应该如何计算?

谢谢!

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 中做同样的事情(对于符号变量)。

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                 ⎦