1.多项式的加法
当两个多项式的阶次不一样的时候,低阶的多项式用首零填补,使其和高阶多项式有相同的阶次。下面是通用的多项式加法函数示例:
现在为了验证该函数ppadd(a,b),命令行输入以下内容然后按回车键得:
结果是:
c
(
x
)
c(x)
c(x)=
x
4
x^4
x4+
3
x
3
3x^3
3x3+
6
x
2
6x^2
6x2+
10
x
10x
10x+15
2.多项式乘法
在MATLAB中,函数conv支持多项式的乘法(运算法则为两个数组的卷积)
不妨再命令行输入如下指令:
a=[1 2 3 4 5];
b=[1 2 5 6 7];
c=conv(a,b)
按回车键,得到如下结果:
c=
1 4 12 26 47 62 70 58 35
结果是: c ( x ) c(x) c(x)= x 8 x^8 x8+ 4 x 7 4x^7 4x7+ 12 x 6 12x^6 12x6+ 26 x 5 26x^5 26x5+ 47 x 4 47x^4 47x4+ 62 x 3 62x^3 62x3+ 70 x 2 70x^2 70x2+ 58 x 58x 58x+ 35 35 35
3.多项式除法
在MATLAB中,多项式除法是由函数deconv实现的。在命令行窗口输入:
a=[1 5 15 35 69 100 118 110 72];
b=[1 2 4 6 8];
[c,r]=deconv(a,b)
按回车键得到以下结果:
其中c表示商的系数,而r 表示余数,即:
x
8
+
5
x
7
+
15
x
6
+
35
x
5
+
69
x
4
+
100
x
3
+
118
x
2
+
110
x
+
72
x
4
+
2
x
3
+
4
x
2
+
6
x
+
8
\frac{x^8+5x^7+15x^6+35x^5+69x^4+100x^3+118x^2+110x+72}{x^4+2x^3+4x^2+6x+8}
x4+2x3+4x2+6x+8x8+5x7+15x6+35x5+69x4+100x3+118x2+110x+72=
x
4
+
3
x
3
+
5
x
2
+
7
x
+
9
x^4+3x^3+5x^2+7x+9
x4+3x3+5x2+7x+9
4.多项式求根及其逆运算
4.1 多项式求根
所谓多项式求根,即求出多项式为0的值。MATLAB中提供特定函数roots求解一个多项式的根。
例如:求解多项式
3
x
4
−
10
x
3
+
15
x
+
1000
=
0
3x^4-10x^3+15x+1000=0
3x4−10x3+15x+1000=0的x的值
在命令行输入以下指令:
p=[3 -10 0 15 1000];
r=roots(p)
按回车键得到以下结果:
4.2 求根的逆运算
在MATLAB中,无论是多项式还是它的根都是以向量的形式存储,按照MATLAB的规定,多项式是行向量,根是列向量。因此,当我们给出一个多项式的根时,MATLAB也可以构造出相应的多项式。通常,我们调用poly函数,如下所示:
在命令行输入:
c=[4.0283+2.8554i; 4.0283-2.8554i; -2.3616+2.8452i; -2.3616-2.8452i];
p=poly(r)
按回车键输出结果得:
这里需要注意,由于MATLAB无隙处理复数,当用根重组多项式时,如果有一些根是复根(即有虚部)。由于截断误差,poly的结果会有一些小的虚部。消除假的虚部,我们只需要用real函数抽取实部即可。