欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

多项式MATLAB命令

程序员文章站 2022-04-01 09:55:14
...

一个多项式的幂级数形式可表示为:

y=c1xn+c2xn1++cnx+cn+1

也可表为嵌套形式:

y=(((c1x+c2)x+c3)x+cn)x+cn+1

或因子形式:

y=c1(xr1)(xr2)(xrn)

N阶多项式n个根,其中包含重根和复根。若多项式所有系数均为实数,则全部复根都将以共轭对的形式出现 。

幂系数:

在MATLAB里,多项式用行向量表示,其元素为多项式的系数,并从左至右按降幂排列。

例1:

y=2x3+x2+4x+5

在matlab中被表示为 :

p=[2 1 4 5]
poly2sym(p)
ans =
2*x^3+x^2+4*x+5

多项式函数调用:

Roots:多项式的零点可用命令roots求的。
如例1:

 >> r=roots(p)   
   r =
       0.2500 + 1.5612i
       0.2500 - 1.5612i
       -1.0000 

所有零点由一个列向量给出。

Poly:由零点可得原始多项式的各系数,但可能相差一个常数倍。
如例1:

 >> poly(r)
     ans =
    1.0000    0.5000    2.0000    2.5000

注意:若存在重根,这种转换可能会降低精度。

如例2:

y=(x1)6=x66x5+15x420x3+15x26x+1

 >> r=roots([1 -6 15 -20 15 -6 1]) 
              r =
                  1.0042 + 0.0025i
                  1.0042 - 0.0025i
                  1.0000 + 0.0049i
                  1.0000 - 0.0049i
                  0.9958 + 0.0024i
                  0.9958 - 0.0024i

舍入误差的影响,与计算精度有关。

polyval:计算多项式的值。
如例3:

y=3x47x3+2x2+x+1

计算y(2.5)的值

>> c=[3,-7,2,1,1]; 
>>xi=2.5; 
>>yi=polyval(c,xi)
 yi =
        23.8125

如果xi是含有多个横坐标值的数组,则yi也为与xi长度相同的向量。

>>c=[3,-7,2,1,1];  
>>xi=[2.5,3];
>>yi=polyval(c,xi)
yi =
   23.8125   76.0000

polyfit:给定n+1个点将可以唯一确定一个n阶多项式。利用命令polyfit可容易确定多项式的系数。
(曲线拟合:已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值)

如例4:

>> x=[1.1,2.3,3.9,9.1];
>> y=[3.887,4.276,4.651,2.117];
>> a=polyfit(x,y,length(x)-1)  %Polyfit的第三个参数是多项式的阶数。
a =
  13 列
   -0.0093    0.0355    0.2870
  43.5406
>>  poly2sym(a)  %求出多项式
 ans =

- (647*x^3)/69888 + (5117895565554271*x^2)/144115188075855872 + (2585253578334195*x)/9007199254740992 + 7972787511422351/2251799813685248

多项式积分:

y=c1xn+c2xn1++cnx+cn+1

Y=ydx=c1n+1xn+1+c2nxn++cn2x2+cn+1x+cn+2

poly_itg(p)求多项式积分。
调用格式:py=poly_itg(p)
p:被积多项式的系数
py:求积后多项式的系数

poly_itg.m
          function py=poly_itg(p)
          n=length(p);
          py=[p.*[n:-1:1].^(-1),0]

不包括最后一项积分常数
多项式微分:

y=c1xn+c2xn1++cnx+cn+1

y=nc1xn1+(n1)c2xn2++cn

Polyder:求多项式一阶导数的系数。
调用格式为: b=polyder(c )

c为多项式y的系数,b是微分后的系数,其值为:

[nc1,(n1)c2,,cn]

两个多项式的和与差:

ya=a1xm+a2xm1++amx+am+1

yb=b1xn+b2xn1++bnx+bn+1

poly_add:求两个多项式的和,其调用格式为:
c= poly_add(a,b)
多项式a减去b,可表示为:
c= poly_add(a,-b)

功能:两个多项式相加
调用格式:b=poly_add(p1,p2)
b:求和后的系数数组

main.m
p1=[1,3,4];
p2=[2,1,3];
b=poly_add(p1,p2)
##########################
poly_add.m
function p3=poly_add(p1,p2)
n1=length(p1);
n2=length(p2);
if n1==n2  p3=p1+p2;end
if n1>n2   p3=p1+[zeros(1,n1-n2),p2];end
if n1<n2   p3=[zeros(1,n2-n1),p1]+p2;end

b =

     3     4     7

m阶多项式与n阶多项式的乘积是d=m+n阶的多项式

ya=a1xm+a2xm1++amx+am+1

yb=b1xn+b2xn1++bnx+bn+1

yc=yayb=c1xd+c2xd1++cdx+cd+1

计算yc系数的MATLAB命令是:

c=conv(a,b)

多项式yb除多项式ya的除法满足:

ya=yqyb+yr

其中yq是商,yr是除法的余数。多项式yq和yr可由命令

deconv 算出。

例:

[q, r]=deconv(a,b)

例5

例
>> a=[2,-5,6,-1,9]; 
>> b=[3,-90,-18];
>> c=conv(a,b)
c =
     6  -195   432  -453     9  -792  -162
>> [q,r]=deconv(c,b)
q =
     2    -5     6    -1     9
r =
     0     0     0     0     0     0     0
>> poly2sym(c)
 ans =
 6*x^6-195*x^5+432*x^4-453*x^3+9*x^2-792*x-162
相关标签: matlab