在MATLAB中创建符号变量x,输入以下多项式。
n = ( x + 1 ) ( x − 2 ) ( x + 4 ) d = ( x + 3 ) ( x + 5 ) ( x − 1 ) n=(x + 1)(x - 2)(x + 4) \\ d=(x+3)(x+5)(x-1) n=(x+1)(x−2)(x+4)d=(x+3)(x+5)(x−1)
n=(x+1)*(x-2)*(x+4);
d=(x+3)*(x+5)*(x-1);
展开与分解因式
expand()
N=expand(n);D=expand(d);
N =
x^3 + 3*x^2 - 6*x - 8
D =
x^3 + 7*x^2 + 7*x - 15
或用collect()函数
N=collect(n);D=collect(d);
factor()
n=factor(N);d=factor(D);
n =
[ x + 4, x - 2, x + 1]
d =
[ x + 5, x - 1, x + 3]
转化符号x的多项式为数值向量
这一步可以不经过expand()等方法展开。
N=sym2poly(N);D=sym2poly(D);
N =
1 3 -6 -8
D =
1 7 7 -15
多项式四则运算
加减法
普普通通的向量加减法,返回值sum为两个多项式的和的系数向量。
sum=N+D;
sum =
2 10 1 -23
sum=poly2sym(sum)
sum =
2*x^3 + 10*x^2 + x - 23
乘法
多项式的乘法就是卷积运算。故conv()函数可以处理这类问题。
A=conv(N,D);
A =
1 10 22 -44 -143 34 120
A=poly2sym(A)
A =
x^6 + 10*x^5 + 22*x^4 - 44*x^3 - 143*x^2 + 34*x + 120
除法
[q,r]=deconv(N,D);
q =
1
r =
0 -4 -13 7
q为商,r为余。
多项式求根
RN=roots(N);RD=roots(D);
RN =
-4.0000
2.0000
-1.0000
RD =
-5.0000
-3.0000
1.0000
roots()返回根的行向量。
多项式微分
n*d的导数
[ ( x + 1 ) ( x − 2 ) ( x + 4 ) × ( x + 3 ) ( x + 5 ) ( x − 1 ) ] d x \mathrm [(x + 1)(x - 2)(x + 4)\times (x+3)(x+5)(x-1)]{d}x [(x+1)(x−2)(x+4)×(x+3)(x+5)(x−1)]dx
P=polyder(N,D);
P =
6 50 88 -132 -286 34
P=poly2sym(P)
P =
6*x^5 + 50*x^4 + 88*x^3 - 132*x^2 - 286*x + 34
n/d的导数
[ ( x + 1 ) ( x − 2 ) ( x + 4 ) ( x + 3 ) ( x + 5 ) ( x − 1 ) ] d x \mathrm {\left [\frac{(x + 1)(x - 2)(x + 4)}{(x+3)(x+5)(x-1)} \right ]}{d}x [(x+3)(x+5)(x−1)(x+1)(x−2)(x+4)]dx
[p,q]=polyder(N,D);
[p,q]=polyder(N,D)
p =
4 26 42 22 146
q =
1 14 63 68 -161 -210 225
p=poly2sym(p)
p =
4*x^4 + 26*x^3 + 42*x^2 + 22*x + 146
q=poly2sym(q)
q =
x^6 + 14*x^5 + 63*x^4 + 68*x^3 - 161*x^2 - 210*x + 225