一、多项式的表示
在 MATLAB 中,n次多项式用一个长度为 n+1 的行向量表示。如有n次多项式:
则在 MATLAB 中, p(x) 表示为向量形式:[an,a(n-1),a(n-2),a(n-3),……,a0]
在 MATLAB 中创建多项式向量时,要注意三点:
(1)多项式系数向量的顺序是从高到低。
(2)多项式系数向量包含0次项系数,所以其长度为多项式最高次数加1。
(3)如果有的项没有,系数向量相应位置应用0。
二、多项式的四则运算
(1)多项式的加减运算
多项式的加减运算非常简单,即相应向量相加减。
(2)多项式乘法
conv(P1,P2) :多项式相乘,其中, P1 、P2 是两个多项式系数向量。
(3)多项式除法
[ Q,r ]= deconv (P1,P2) :多项式相除,其中Q返回多项式 P1 除以 P2 的商式,r返回 P1 除以 P2 的余式。这里,Q和r仍是多项式系数向量。 deconv是conv的逆函数,因此有下式成立。
P1=conv(Q,P2)+r
例 1 设f(x)=3x5-5x4-7x2+5x+6,g(x)=3x2+5x-3,求f(x)+g(x),f(x)-g(x),f(x) × g(x),f(x)/g(x)
>> f=[3,-5,0,-7,5,6]; g=[0,0,0,3,5,-3]; g1=[3,5,-3];
>> f+g
ans =
3 -5 0 -4 10 3
>> f-g
ans =
3 -5 0 -10 0 9
>> conv(f,g1)
ans =
9 0 -34 -6 -20 64 15 -18
>> [Q,r]=deconv(f,g1)
Q =
1.0000 -3.3333 6.5556 -16.5926
r =
0 0 0 0 107.6296 -43.7778
>> conv(g1,Q)+r
ans =
3.0000 -5.0000 0 -7.0000 5.0000 6.0000
可以看出,采用多项式相除的deconv函数后,采用其逆函数,可以得到作为被除数的函数。值得说明的一点就是对于除法运算,多项式的向量形式的第一个数字要为0,估本例中定义了g1=[3,5,-3];
三、多项式的求导
在 MATLAB 中,多项式求导函数为 polyder () ,其调用格式为:
(1)p= polyder § :求多项式P的导函数。
(2)p= polyder (P,Q) :求P×Q的导函数。
(3)[ p,q ]= polyder (P,Q) :求 P/Q 的导函数,导函数的分子存入p,分母存入q
同样,以第二部分的多项式为例:
>> f=[3,-5,0,-7,5,6];g1=[3,5,-3];
>> polyder(f)
ans =
15 -20 0 -14 5
>> c=polyder(f,g1)
c =
63 0 -170 -24 -60 128 15
>> [p,q]=polyder(f,g1)
p =
27 30 -120 60 -50 6 -45
q =
9 30 7 -30 9
四、 多项式的求值
对于多项式求值,即是给定变量的值,去求解多项式的值。会用到两种函数:
polyval(p,x) :代数多项式求值,其中,p为多项式系数向量,x可以是标量、向量或矩阵。若x为标量,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求多项式的值。
polyvalm(p,x) :矩阵多项式求值,其调用格式与 polyval 相同,但含义不同。 polyvalm 函数要求x为方阵,以方阵为自变量求多项式的值
例 3 以多项式为例,取一个2×2矩阵为自变量,分别用polyval 和 polyvalm 计算该多项式的值。
>> a=[1,8,0,0,-10];
>> x=[-1,1.2;2,-1.8];
>> y1=polyval(a,x)
y1 =
-17.0000 5.8976
70.0000 -46.1584
>> y2=polyvalm(a,x)
y2 =
-60.5840 50.6496
84.4160 -94.3504
五、 多项式的求根
在 MATLAB 中,多项式求根函数为 roots§ ,其中p为多项式的系数向量。
例如,求多项式 x4+8x3-10的根。
>> a=[1,8,0,0,-10];
>> x=roots(a)
x =
-8.0194 + 0.0000i
1.0344 + 0.0000i
-0.5075 + 0.9736i
-0.5075 - 0.9736i
当然,matlab提供有求根的逆运算函数:poly 函数。它的功能是已知根,求解出多项式的系数,以上面的根为例:
x =
-8.0194 + 0.0000i
1.0344 + 0.0000i
-0.5075 + 0.9736i
-0.5075 - 0.9736i
>> p=poly(x)
p =
1.0000 8.0000 0.0000 0.0000 -10.0000
本节内容主要会用在数学中的函数部分,用于解决求解函数的极值、最值一类问题,大家在使用上述知识时一定要融会贯通,这样才能有助于自己解决实际问题。
关于MATLAB的学习:
大家可以关注我们的知乎专栏——数据可视化和数据分析中matlab的使用:
https://zhuanlan.zhihu.com/c_1131568134137692160
欢迎大家加入我们的MATLAB学习交流群:
953314432
扫码关注我们
发现更多精彩