设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2093|回复: 5

[Matlab数据分析]多项式及函数

  [复制链接]

13

主题

152

金钱

235

积分

入门用户

发表于 2018-8-16 10:42:15 | 显示全部楼层 |阅读模式
本帖最后由 2支棒棒糖 于 2018-8-16 10:45 编辑

多项式及其函数
典型的多项式构成的函数如下所示:
  1. p(x)=x2+4x+1
复制代码
其右项为多项式,在MATLAB中的表达为多项式系数矩阵,如下所示:
  1. p=[141]
复制代码
所有的多项式及其函数都可以采用以上推广方式来进行表示。

多项式计算
MATLAB提供了polyval函数用于多项式的值的计算,该函数的调用格式如下:
  1. y=polyval(p,x)
  2. [y,delta]=polyval(p,x,S)
  3. y=polyval(p,x,[],mu)
  4. [y,delta]=polyval(p,x,S,mu)
复制代码
其中,y为多项式求解得到的值;p为待计算的多项式向量;x为进行计算的自变量的值;S为可选输出结构设置选项;mu为由两个元素构成的向量构成,第一个为自变量的平均值,第二个为自变量的标准差;delta为估计误差范围。
例9-1,多项式计算示例:计算p(x)=x2+4x+1的值。
在命令行窗口输入:
  1. p=[141]
  2. y=polyval(p,[03-3])
复制代码
输出结果如下:
  1. p=141
  2. y=122-2
复制代码

多项式方程求根
MATLAB提供了roots函数用于多项式的根的计算,该函数的调用格式如下:
  1. r=roots(c)
复制代码
其中,c为系数向量,r为返回的根。
例9-2,多项式计算示例:计算x2+4x+1=0的值。
在命令行窗口输入:
  1. p=[141]
  2. r=roots(p)
  3. zeros=polyval(p,r')
复制代码
输出结果如下:
  1. p=141
  2. r=-3.7321
  3. -0.2679
  4. zeros=1.0e-15*
  5. -0.44410.1110
复制代码
验证结果近似为0,说明计算的根准确。

多项式四则运算
多项式可以进行四则运算,各种计算的方式如下所示:
(1)加减法
多项式的加减法为将不同多项式的相同项相加减,在进行计算时,首先将多项式系数向量通过补0的方法补齐到同样的长度,然后按MATLAB提供的加减法进行计算即可。
(2)乘法
多项式乘法采用向量卷积的方式进行,使用的函数为conv函数,该函数的调用格式如下所示:
  1. w=conv(u,v)
复制代码
其中,u、v为多项式系数向量。
(3)除法
多项式的除法采用向量解卷积的方式进行,使用的函数为deconv函数,该函数的调用格式如下所示:
  1. [q,r]=deconv(v,u)
复制代码
其中,u为除项、v为待除项,q为返回的向量,r为残余向量。
例9-3,多项式四则运算示例。
在命令行窗口输入:
  1. u=[1234]
  2. v=[102030]
  3. w=[1040100160170120]
  4. uplusv=u+[0,v]
  5. umltpv=conv(u,v)
  6. wdivdu=deconv(w,u)
  7. x=1:2:9
  8. fu=polyval(u,x)
  9. fv=polyval(v,x)
  10. fw=polyval(w,x)
  11. fuplusv=polyval(uplusv,x)
  12. fuplusfv=fu+fv
  13. fumltpv=polyval(umltpv,x)
  14. fumltpfv=fu.*fv
  15. fwdivdu=polyval(wdivdu,x)
  16. fwdivdfu=fw./fu
  17. root1to3=roots(u)
  18. root4to5=roots(v)
  19. root1to5=roots(w)
复制代码
输出结果如下:
  1. u=1234
  2. v=102030
  3. w=1040100160170120
  4. uplusv=1122334
  5. umltpv=1040100160170120
  6. wdivdu=102030
  7. x=13579
  8. fu=1058194466922
  9. fv=601803806601020
  10. fw=6001044073720307560940440
  11. fuplusv=7023857411261942
  12. fuplusfv=7023857411261942
  13. fumltpv=6001044073720307560940440
  14. fumltpfv=6001044073720307560940440
  15. fwdivdu=601803806601020
  16. fwdivdfu=601803806601020
  17. root1to3=-1.6506
  18. -0.1747+1.5469i
  19. -0.1747-1.5469i
  20. root4to5=-1.0000+1.4142i
  21. -1.0000-1.4142i
  22. root1to5=-1.6506
  23. -1.0000+1.4142i
  24. -1.0000-1.4142i
  25. -0.1747+1.5469i
  26. -0.1747-1.5469i
复制代码

多项式微积分
MATLAB提供了polyder函数用于求取多项式的解析导数,polyint函数用于求取多项式的解析积分。
polyder函数的调用格式如下所示:
  1. k=polyder(p)
  2. k=polyder(a,b)
  3. [q,d]=polyder(b,a)
复制代码
其中,p为多项式系数向量;b、a为用于相乘或相除的多项式系数向量;k为返回的导数系数向量;q为返回多项式向量的分子,d为分母。第一种格式直接求导,第二种格式为乘积求导,第三种格式为相除求导。
例9-4,多项式求导示例。
在命令行窗口输入:
  1. a=[369];
  2. b=[120];
  3. k01=polyder(a)
  4. k02=polyder(b)
  5. k1=polyder(a,b)
  6. k11=conv(k01,b)-conv(a,k02)
  7. [q,d]=polyder(a,b)
  8. q1=conv(k01,b)-conv(a,k02)
  9. d1=conv(b,b)
复制代码
输出结果如下:
  1. k01=66
  2. k02=22
  3. k1=12364218
  4. k11=00-18-18
  5. q=-18-18
  6. d=14400
  7. q1=00-18-18
  8. d1=14400
复制代码
polyint函数的调用格式如下所示:
  1. polyint(p,k)
  2. polyint(p)
复制代码
其中,p为待积分多项式系数向量,k为积分后添加的常数。
例9-5,多项式积分示例。
在命令行窗口输入:
  1. a=[369]
  2. b=polyint(a)
  3. c=polyint(a,88)
  4. a1=polyder(c)
复制代码
输出结果如下:
  1. a=369
  2. b=1390
  3. c=13988
  4. a1=369
复制代码

有理多项式展开
MATLAB提供了residue函数用于有理多项式的展开式,该函数的调用格式如下所示:
  1. [r,p,k]=residue(b,a)
  2. [b,a]=residue(r,p,k)
复制代码
其中,p为多项式系数向量,b、a为用于相除的多项式系数向量,k为无分母项向量,q为返回多项式向量的分子,p为分母常数项向量,r为分子常数向量。
例9-6,求(5t3+3t2-2t+7)/(-4t3+8t+3)的展开式示例。
在命令行窗口输入:
  1. b=[53-27]
  2. a=[-4083]
  3. [r,p,k]=residue(b,a)
  4. [b,a]=residue(r,p,k)
复制代码
输出结果如下:
  1. b=53-27
  2. a=-4083
  3. r=-1.4167
  4. -0.6653
  5. 1.3320
  6. p=1.5737
  7. -1.1644
  8. -0.4093
  9. k=-1.2500
  10. b=-1.2500-0.75000.5000-1.7500
  11. a=1.0000-0.0000-2.0000-0.7500
复制代码

224

主题

2万

金钱

3万

积分

专家用户

发表于 2018-12-18 14:00:47 | 显示全部楼层
大道无痕……
回复

使用道具 举报

3

主题

328

金钱

523

积分

初级用户

发表于 2019-1-2 18:22:35 | 显示全部楼层
很不错噢
回复

使用道具 举报

0

主题

2

金钱

31

积分

新手用户

发表于 2019-1-10 10:30:25 | 显示全部楼层
谢谢分享
回复

使用道具 举报

224

主题

2万

金钱

3万

积分

专家用户

发表于 2019-1-20 12:45:50 | 显示全部楼层
谢谢分享
大道无痕……
回复

使用道具 举报

21

主题

447

金钱

626

积分

初级用户

发表于 2019-1-25 09:59:52 | 显示全部楼层
厉害
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表