求解多项式根最常用的数值方法是牛顿–拉夫逊法。该方法将在后文介绍(见第 9.4.8 节)。

在 MATLAB 中,多项式用其系数数组表示,最高次系数排在最前面。例如,多项式函数
$$f(x) = x^3 - 5x^2 - 17x + 21$$
表示为
$$f = [1 \quad -5 \quad -17 \quad 21]$$
对应多项式方程的根 $f(x) = 0$ 使用命令 roots (f) 求得,因此对于上面的例子,命令
$$r = roots(f)$$
返回的根为
- $$r = 7.0000$$
- $-3.0000$
- $1.0000$
这也表明 $f(x)$ 的因式为 $(x - 7)$ , $(x + 3)$ 和 $(x - 1)$ 。需要注意的是,输出给出的根 $r$ 作为列数组(而非行数组)输入数字。如果已知根,并希望确定对应的多项式 $f(x)$ (其最高次项系数为 1),则使用命令 poly(r)。使用此命令时,根 $r$ 必须指定为行数组,因此命令
$$r = [7 \quad -3 \quad 1]$$
$$f = poly(r)$$
返回答案
$$f = 1 \quad -5 \quad -17 \quad 21$$
表明该多项式为
$$f(x) = x^3 - 5x^2 - 17x + 21$$
要确定次数为 $n$ 且经过 $n + 1$ 个点的多项式,我们使用命令 polyfit( $x, y, n$ );它输出一个 $n$ 阶多项式的系数数组,该多项式拟合数据对( $x, y$ )。如果点数( $x, y$ )大于 $n$ 则该命令将给出最小二乘意义下的最佳拟合。请验证以下命令
x = [–3 0 2 5]; y = [528 1017 1433 2312];
$$f = \text{polyfit}(x, y, 3)$$
能重现例 2.22 的答案,并且以下命令
x = [0 1 2 3 4]; y = [1 1 2 2 3];
polyfit(x,y,1)