MATLAB学习笔记——多项式与字符串


在学习matlab的时候记的一些笔记,随便写写,毫无逻辑,毫无顺序,佛系更新^_^。

多项式

求多项式的根

在MATLAB语言里,多项式由一个行向量表示,设为p,它的系数按降序排列,使用roots函数可以求出该多项式的根。其使用格式为roots(p)。

>> p=[1 0 3 12 -7]

p =

     1     0     3    12    -7

>> roots(p)

ans =

   0.7876 + 2.4351i
   0.7876 - 2.4351i
  -2.0872 + 0.0000i
   0.5121 + 0.0000i

加法和减法

如果两个多项式的向量阶数相同,标准的数组加法有效。当两个多项式的向量阶数不同时,需要在低阶多项式的前边补0,使得它与相加的高阶多项式有相同的阶数。

>> a=[8 2 2 8]

a =

     8     2     2     8

>> b=[6 1 6 1]

b =

     6     1     6     1

>> c=a+b

c =

    14     3     8     9

>> Y3=poly2sym(c)
 
Y3 =
 
14*x^3 + 3*x^2 + 8*x + 9

其本质是将矩阵相加然后使用矩阵来生成新的多项式

乘法

使用conv函数对多项式进行乘法运算。 格式为c=conv(a,b),其中a和b为两个多项式的系数向量,c为相乘所生成的多项式的系数向量。

>> a=[1 2 3 4]

a =

     1     2     3     4

>> b=[5 6 7 8]

b =

     5     6     7     8

>> Y1=poly2sym(a)
 
Y1 =
 
x^3 + 2*x^2 + 3*x + 4
 
>> Y2=poly2sym(b)
 
Y2 =
 
5*x^3 + 6*x^2 + 7*x + 8
 
>> c=conv(a, b)

c =

     5    16    34    60    61    52    32

>> Y=poly2sym(c)
 
Y =
 
5*x^6 + 16*x^5 + 34*x^4 + 60*x^3 + 61*x^2 + 52*x + 32

和加减法相同,多项式的乘法也是先把矩阵中的数值转化成多项式的系数,再重新生成新的多项式。

除法

在数值计算中,经常需要用一个多项式去除另一个多项式。在MATLAB中,使用deconv函数来完成该项功能。

示例:首先生成参数a, b并计算他们对应的多项式的乘积的参数

>> a=[1 2 3 4]

a =

     1     2     3     4

>> b=[5 6 7 8]

b =

     5     6     7     8

>> c=conv(a, b)

c =

     5    16    34    60    61    52    32

c就是a和b对应的多项式相乘后的参数

下面我们来验证c多项式除以a多项式是否等于b多项式,c多项式除以b多项式是否等于a多项式。

>> d=deconv(c, a)

d =

     5     6     7     8

>> e=deconv(c, b)

e =

    1.0000    2.0000    3.0000    4.0000

>> x=poly2sym(d)
 
x =
 
5*x^3 + 6*x^2 + 7*x + 8
 
>> y=poly2sym(e)
 
y =
 
x^3 + 2*x^2 + 3*x + 4

求导和积分

分别使用polyder函数和polyint函数来求多项式的导数与积分。

求导:

>> p=[3 1 8 8]

p =

     3     1     8     8

>> poly2sym(p)
 
ans =
 
3*x^3 + x^2 + 8*x + 8
 
>> q=polyder(p)

q =

     9     2     8

>> poly2sym(q)
 
ans =
 
9*x^2 + 2*x + 8

积分:

>> p1=polyint(q)

p1 =

     3     1     8     0

>> poly2sym(p1)
 
ans =
 
3*x^3 + x^2 + 8*x

可以看到在对求导后的结果积分后,除了常数项之外其他项完全一致,这是因为求导后常数项为0。

字符串单元组和结构

字符串的设定

>> str='to all in one'

str =

to all in one
>> whos
  Name      Size            Bytes  Class     Attributes

  Y         1x1               112  sym                 
  Y1        1x1               112  sym                 
  Y2        1x1               112  sym                 
  Y3        1x1               112  sym                 
  a         1x4                32  double              
  ans       1x1               112  sym                 
  b         1x4                32  double              
  c         1x7                56  double              
  d         1x4                32  double              
  e         1x4                32  double              
  p         1x4                32  double              
  p1        1x4                32  double              
  q         1x3                24  double              
  str       1x13               26  char                
  x         1x1               112  sym                 
  y         1x1               112  sym                 

字符串的读取

读取和数组的读取一样,在C语言中字符串也被称为字符数组

>> str(1)

ans =

t
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾醒(AiXing-w)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值