Matlab多项式计算

一、多项式的表示
在 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
扫码关注我们
发现更多精彩
在这里插入图片描述

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值