0 前言
欢迎大家点赞👍,收藏⭐,转发🚀,
如有问题、建议欢迎在评论区留言💬。
本文是科学计算与MATLAB语言课程的第5章第2小结的学习笔记,通过查阅本文,可以轻松掌握利用MATLAB进行多项式的四则运算(加减乘除)、求导、求值、求根等, E n j o y y o u r r e a d i n g ! Enjoy\ your\ reading! Enjoy your reading!
1 多项式的表示
在MATLAB中,n次多项式用一个长度为n+1的行向量表示。如有n次多项式:
p
(
x
)
=
a
n
x
n
+
a
n
−
1
x
n
−
1
+
a
n
−
2
x
n
−
2
+
…
+
a
1
x
+
a
0
p(x)=a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}+…+a_1x+a_0
p(x)=anxn+an−1xn−1+an−2xn−2+…+a1x+a0
则在MATLAB中,
p
(
x
)
p(x)
p(x)表示为向量形式:
[
a
,
a
n
−
1
,
a
n
−
2
,
a
1
,
a
n
]
[a,a_{n-1},a_{n-2},a_1,a_n]
[a,an−1,an−2,a1,an]
在MATLAB中创建多项式向量时,要注意三点:
(1)多项式系数向量的顺序是从高到低。
(2)多项式系数向量包含0次项系数,所以其长度为多项式最高次数加1。
(3)如果有的项没有,系数向量相应位置应用0补足。
2 多项式的四则运算
(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和g为两个多项式
{
f
x
=
3
x
4
−
5
x
3
−
7
x
2
+
5
x
+
6
g
x
=
3
x
2
+
5
x
−
3
\left\{ \begin{aligned} f_x&=3x^4-5x^3-7x^2+5x+6\\ g_x&=3x^2+5x-3 \end{aligned} \right.
{fxgx=3x4−5x3−7x2+5x+6=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=[3,5,-3]; g1=[0,0,0,g];
f+g1
f-g1
conv(f,g)
[Q,r]=deconv(f,g)
conv(g,Q)+r
3 多项式的求导
在MATLAB中,多项式求导函数为polyder(),其调用格式为:
(1)p=polyder(P):求多项式P的导函数。
(2)p=polyder(P,Q):求P×Q的导函数。
(3)[p,q]=polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q。
例2 已知两个多项式
a
(
x
)
=
3
x
3
+
x
2
−
6
,
b
(
x
)
=
x
+
2
a(x)=3x^3+x^2-6,b(x)=x+2
a(x)=3x3+x2−6,b(x)=x+2,计算两个多项式的乘积的导函数、商的导函数。
a=[3 1 0 -6];
b=[1 2];
c=polyder(a,b)
[p,q]=polyder(a,b)
4 多项式的求值
polyval(p,x):
代数多项式求值,其中,p为多项式系数向量,x可以是标量、向量或矩阵。若x为标量,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求多项式的值。
这个很容易理解,对吧。注意,如果你的智商比我高,下面的也能理解。我是想了很长时间的。
polyvalm(p,x):
矩阵多项式求值,其调用格式与polyval相同,但含义不同。polyvalm函数要求x为方阵,以方阵为自变量求多项式的值。
设A为方阵,P代表多项式x3-5x2+8,那么polyvalm(P,A)的含义是:
A
∗
A
∗
A
−
5
∗
A
∗
A
+
8
∗
e
y
e
(
s
i
z
e
(
A
)
)
A*A*A-5*A*A+8*eye(size(A))
A∗A∗A−5∗A∗A+8∗eye(size(A))
由于我只学了一点线性代数,暂时还不明白为何加一个单位矩阵,容我再想一会儿。
而polyval(P,A)的含义是:
A
.
∗
A
.
∗
A
−
5
∗
A
.
∗
A
+
8
∗
o
n
e
s
(
s
i
z
e
(
A
)
)
A.*A.*A-5*A.*A+8*ones(size(A))
A.∗A.∗A−5∗A.∗A+8∗ones(size(A))
思考:polyval(p,x)与polyvalm(p,x)有没有可能相等?如果有可能,在什么情况下相等?
例3 以一个多项式
x
4
+
8
x
3
−
10
x^4+8x^3-10
x4+8x3−10为例,取一个2×2矩阵为自变量,分别用polyval和polyvalm计算该多项式的值。
a=[1,8,0,0,-10];
x=[-1,1.2;2,-1.8];
y1=polyval(a,x)
y2=polyvalm(a,x)
5 多项式的求根
在MATLAB中,多项式求根函数为roots(p),其中p为多项式的系数向量。
例如,求多项式x4+8x3-10的根。
a=[1,8,0,0,-10];
x=roots(a)
若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为:
p=poly(x)
例如,在以上语句之后,继续输入命令:
p=poly(x)
p=
1.00008.00000.00000.0000-10.0000
例4某工业过程需要对工件进行高温加热,热量由一个燃烧装置产生。该装置中共有两条输送管道,一条管道按固定量提供燃料,一条管道注入空气。空气能够帮助燃烧,但是过高的空气流量又会带走热量,降低加热效率。经过数十次空气流量实验,技术部门取得了相应的结果数据,并通过曲线拟合得知空气流量与加热效率在[0,2]范围内基本满足多项式 p ( x ) = − 38.89 × 2 + 126.11 x − 3.42 p(x)=-38.89×2+126.11x-3.42 p(x)=−38.89×2+126.11x−3.42(x表示空气流量),请推算空气流量在[0,2]范围内什么水平时,加热效率为最高。
p=[-38.89,126.11,-3.42];
q=polyder(p)
roots(q)
polyval(p,1.6214)
x=0:0.1:2;
plot(x,polyval(p,x),1.6214,98.8154,'rp');
结语
码字不易💀,欢迎大家点赞👍,收藏⭐,转发🚀,
如有问题、建议欢迎在评论区留言💬。