您的位置:首页 > 编程语言 > MATLAB

应用matlab多项式的表示以及运算

2017-12-04 19:56 183 查看
1.多项式的表示以及运算

例如p(x)=x^3-3x+10

表示为p=[1 0 -3 10];

或者p=[1,0,-3,10];

2.roots 函数

roots函数求解其对应的方程式的根,例如:

>>r=roots(p);

接上式,即可得到方程的根

3.poly函数

已知方程的根,用poly函数还原该多项式方程,此时的方程的根写成列矩阵或是行矩阵都可以

[-2.6129;

1.3064+1.4562i;

1.3064-1.4562i];

poly函数和roots函数互为反函数,受计算机数值的影响,会有微小的误差

poly函数还可以求矩阵的特征多项式(特征方程),例如:

A=[1 2 3;4 5 6;7 8 9];

>> p3=poly(A)

p3 =

    1.0000  -15.0000  -18.0000   -0.0000

即φ(λ)=λ^3-15λ^2-18λ

4.polyval与polyvalm函数

polyval用于计算多项式的值

>> p=[1 0 -3 10];

>> val=polyval(p,5);

将x=5代入多项式当中

polyvalm函数用于计算矩阵多项式,p(x)=x^3-3x+10,相应的矩阵为p(X)=X^3-3X+10I,其中X为一n阶矩阵,I为一n阶单位矩阵,先输入矩阵X的内容,再调用函数

Y=polyvalm(p,X)计算得到矩阵结果

5.conv与deconv函数

多项式的乘法和出发相当于求卷积和去卷积,分别调用conv和deconv函数,即可实现应用于信号与系统中的

信号之间的卷积运算

(说得这么玄乎,其实就是两个多项式相乘,两个时域信号的卷积在频域里直接相乘)

>> a=[1 3 5];

>> b=[2 4 3];

>> c=conv(a,b);

>> c

c =

     2    10    25    29    15

反过来用deconv函数来求b:

>> [b,r]=deconv(c,a);%

上式中,r是多项式出发的余数多项式,即有c=conv(a,b)+r。

6.polyder函数

polyder函数用来求多项式的微分

(1)例如,求p(x)=x^3-3x+10的微分

>> p=[1 0 -3 10];

>> q=polyder(p)

q =

     3     0    -3

即q(x)=3x^2-3

(2)求两个多项式相乘或是相除的微分

>> a=[2 4 6];

>> b=[1 2 3];

>> c=polyder(a,b)%左边的输出变量只有一个,右边有两个参数,则是a×b的微分

c =

     8    24    40    24

>> [q,d]=polyder(a,b)%输出变量有两个,则表示求a/b的微分

q =

     0

d =

     1     4    10    12     9

a/b 的微分即为q/d

7.residue函数

对一个多项式分式进行部分分式分解,

调用格式:

[r,p,k]=residue(b,a)

意思是b(x)/a(x)=r(1)/(x-p(1))+r(2)/(x-p(2))+…r(n)/(x-p(n))+k(x)

>> b=[4 -8];

>> a=[1 6 8];

>> [r,p,k]=residue(b,a)

r =

    12

    -8

p =

    -4

    -2

k =

     []

所以分解成了(4x-8)/(x^2+6x+8)=12/(x+4)+(-8)/(x+2)

反过来也可以成立:[b2,a2]=residue(r,p,k)获得b2和a2的表达式

8.polyfit函数

用来做数据的曲线拟合

p=polyfit(x,y,n)%x向量和y向量分别实测数据点的x坐标和y坐标,n为所欲拟合曲线的多项式次数。

>> x=[1 2 3 4 5];y=[5 43 128 280 500];

>> p=polyfit(x,y,3)

p =

    1.7500   15.0357  -20.7143    9.2000

>> x2=[1:0.1:5];

>> y2=polyval(p,x2);

>> plot(x,y,'o',x2,y2);%画出了一个图,先画出了4个点,都是o表示的,后画出了x2,y2这一系列的点

>> grid on
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 应用