多项式MATLAB命令

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

y = c 1 x n + c 2 x n 1 + + c n x + c n + 1

也可表为嵌套形式:

y = ( ( ( c 1 x + c 2 ) x + c 3 ) x + c n ) x + c n + 1

或因子形式:

y = c 1 ( x r 1 ) ( x r 2 ) ( x r n )

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

幂系数:

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

例1:

y = 2 x 3 + x 2 + 4 x + 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 = ( x 1 ) 6 = x 6 6 x 5 + 15 x 4 20 x 3 + 15 x 2 6 x + 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 = 3 x 4 7 x 3 + 2 x 2 + 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 = c 1 x n + c 2 x n 1 + + c n x + c n + 1

Y = y d x = c 1 n + 1 x n + 1 + c 2 n x n + + c n 2 x 2 + c n + 1 x + c n + 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 = c 1 x n + c 2 x n 1 + + c n x + c n + 1

y = n c 1 x n 1 + ( n 1 ) c 2 x n 2 + + c n

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

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

[ n c 1 , ( n 1 ) c 2 , , c n ]

两个多项式的和与差:

y a = a 1 x m + a 2 x m 1 + + a m x + a m + 1

y b = b 1 x n + b 2 x n 1 + + b n x + b n + 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阶的多项式

y a = a 1 x m + a 2 x m 1 + + a m x + a m + 1

y b = b 1 x n + b 2 x n 1 + + b n x + b n + 1

y c = y a y b = c 1 x d + c 2 x d 1 + + c d x + c d + 1

计算yc系数的MATLAB命令是:

c=conv(a,b)

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

y a = y q y b + y r

其中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

猜你喜欢

转载自blog.csdn.net/gy99csdn/article/details/82021911
今日推荐