如何利用MATLAB对多项式进行计算?

文章目录

  • 0 前言
  • 1 多项式的表示
  • 2 多项式的四则运算
  • 3 多项式的求导
  • 4 多项式的求值
  • 5 多项式的求根
  • 结语

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 px=anxn+an1xn1+an2xn2++a1x+a0
则在MATLAB中, p ( x ) p(x) px表示为向量形式:
[ a , a n − 1 , a n − 2 , a 1 , a n ] [a,a_{n-1},a_{n-2},a_1,a_n] [aan1an2a1an]
在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=3x45x37x2+5x+6=3x2+5x3
求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+x26,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)) AAA5AA+8eyesizeA
由于我只学了一点线性代数,暂时还不明白为何加一个单位矩阵,容我再想一会儿。
而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.A5A.A+8onessizeA
思考:polyval(p,x)与polyvalm(p,x)有没有可能相等?如果有可能,在什么情况下相等?
例3 以一个多项式 x 4 + 8 x 3 − 10 x^4+8x^3-10 x4+8x310为例,取一个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 px)=38.89×2+126.11x3.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');

结语

码字不易,欢迎大家点赞,收藏⭐,转发,
如有问题、建议欢迎在评论区留言。

你可能感兴趣的:(笔记)