Matlab 已知多项式的根求其对应多项式
时间: 2023-12-24 18:44:25 浏览: 52
在 Matlab 中,如果已知一个多项式的根,可以使用 `poly` 函数求出对应的多项式系数。
假设已知多项式的根为 $r_1, r_2, ..., r_n$,则对应的多项式为 $p(x) = (x-r_1)(x-r_2)...(x-r_n)$。多项式 $p(x)$ 的系数可以通过 `poly` 函数计算得到,具体方法如下:
```matlab
roots = [r1, r2, ..., rn];
poly_coef = poly(roots);
```
其中,`roots` 是一个包含多项式的所有根的向量,`poly_coef` 是对应的多项式系数向量,系数向量中第 $i$ 个元素表示 $x^{n-i}$ 的系数。
例如,如果已知多项式 $p(x) = x^3 - 6x^2 + 11x - 6$ 的三个根分别为 1, 2, 3,则可以用下面的代码求出对应的多项式系数向量:
```matlab
roots = [1, 2, 3];
poly_coef = poly(roots);
```
运行以上代码后,得到的 `poly_coef` 向量为 `[1 -6 11 -6]`,表示多项式 $p(x) = x^3 - 6x^2 + 11x - 6$ 的系数向量。
相关问题
matlab已知多项式的根求多项式
如果已知一个多项式 $p(x)$ 的全部根 $r_1,r_2,\cdots,r_n$,则可以写出如下的表达式:
$$
p(x)=a(x-r_1)(x-r_2)\cdots(x-r_n)
$$
其中 $a$ 是常数系数。这个表达式称为多项式 $p(x)$ 的因式分解式。
如果已知多项式的全部根,就可以通过因式分解式求出多项式的系数,从而得到多项式的表达式。在 MATLAB 中,可以使用 poly 函数来实现这一点。
假设我们已知多项式 $p(x)$ 的全部根存储在向量 r 中,可以使用如下代码来求解多项式的系数:
```matlab
a = 1; % 常数系数初始化为1
for i = 1:length(r)
a = conv(a, [1, -r(i)]); % 将每个根对应的一次多项式乘到 a 上
end
```
在上面的代码中,conv 函数是 MATLAB 中的卷积函数,用于实现多项式的乘法。最终得到的向量 a 就是多项式 $p(x)$ 的系数向量。
matlab已知多项式的根为1.5,2.5,2+2i,2-2i,求此多项式。
可以使用多项式的因式分解公式来求解。首先将复数根 2i 和 -2i 相消,得到实数根 1.5,2.5,2。然后将每个实数根的相反数也加入根集合中,即 -1.5,-2.5,-2。将根集合代入多项式的因式分解公式:
f(x) = (x - 1.5)(x - 2.5)(x - 2)(x + 1.5)(x + 2.5)(x + 2)
展开后可得到求解的多项式,即:
f(x) = x^6 - 11x^4 + 39.5x^2 - 72.5