主题: [MATLAB基础] MATLAB应用大全 书连载
查看单个帖子
旧 2012-05-21, 11:18   #6
lili123
普通会员
 
注册日期: 2012-05-21
帖子: 37
声望力: 13
lili123 正向着好的方向发展
默认 回复: MATLAB应用大全 书连载

5.1.3 多项式乘法和除法
在MATLAB中,使用函数conv()对多项式进行乘法运算。其调用格式为c=conv(a, b),a和b为多项式的系数向量,该函数实现向量a和b的卷积,在代数上相当于多项式a乘以多项式b,其中c为相乘所产生的多项式的系数向量。
【例5-6】 求多项式 和 的乘积。采用函数conv()实现,其MATLAB程序如下:

p1=[4 2 0 5]; %缺少的幂次用0补齐
p2=[5 8 1];
y1=poly2sym(p1)
y2=poly2sym(p2)
p3=conv(p1,p2); %多项式相乘
y=poly2sym(p3)

运行程序后,输出结果如下:

y1 =
4*x^3+2*x^2+5
y2 =
5*x^2+8*x+1
y =
20*x^5+42*x^4+20*x^3+27*x^2+40*x+5

在MATLAB中,采用poly2sym()函数将向量作为多项式的系数进行输出,和其相对应的函数是sym2poly(),该函数将输入多项式的系数提取出来,作为向量进行输出。对于例5-6程序也可以用poly2sym()函数实现(和例5-6的计算结果相同),其MATLAB程序如下:

>> syms x
p1=sym2poly(4*x^3+2*x^2+5)
p2=sym2poly(5*x^2+8*x+1)
p3=conv(p1,p2); %多项式相乘
y=poly2sym(p3)

运行程序后,输出结果如下:

p1 =
4 2 0 5
p2 =
5 8 1
y =
20*x^5+42*x^4+20*x^3+27*x^2+40*x+5

在MATLAB中,使用函数deconv()对多项式进行除法运算。其调用格式为[q, r] = deconv(a, b),实现解卷积运算。其中a和b为多项式的系数向量,在代数上相当于多项式a除以b,得到的商为q和余多项式r,它们之间的关系为a = conv(b, q) + r。
【例5-7】 求多项式 除以多项式 的商和余数,代码如下:

>> p1=[4 3 8 1 4];
p2=[2 3 1];
[q,r]=deconv(p1,p2); %多项式p1除以p2
y1=poly2sym(q) %商
y2=poly2sym(r) %余数

运行程序后,输出结果如下:

y1 =
2*x^2-3/2*x+21/4
y2 =
-53/4*x-5/4

5.1.4 多项式的导数和积分
在MATLAB中,通过函数polyder()和polyint()分别对多项式进行求导和积分。求导和积分互为逆运算,如果先对多项式进行积分,然后再求导,结果仍然为原来的多项式。下面对多项式的求导和积分分别进行讲解。
1.多项式的导数
在MATLAB中,采用函数polyder()进行多项式的求导,调用方式如下。
 y=polyder(p):对以向量p为系数的多项式求导。
 y=polyder(a, b):对以a和b为系数的多项式乘积进行求导。
 [q,d]=polyder(b, a):返回以b为系数的多项式除以以a为系数的多项式的商的导数,并以q/d格式表示。
【例5-8】 对多项式求导,其MATLAB程序如下:

>> p1=[4 3 2];
p2=[2 2 1];
y1=polyder(p1); %对多项式p1求导
y1=poly2sym(y1)
y2=polyder(p1,p2); %对多项式p1和p2的乘积求导
y2=poly2sym(y2)
[q,d]=polyder(p1,p2); %对多项式p1除以p2的商求导
q=poly2sym(q)
d=poly2sym(d)

运行程序后,输出结果如下:

y1 =
8*x + 3
y2 =
32*x^3 + 42*x^2 + 28*x + 7
q =
2*x^2 - 1
d =
4*x^4 + 8*x^3 + 8*x^2 + 4*x + 1

在MATLAB中,通过函数polyder()对多项式进行求导,通过对输入参数和输出参数个数的不同,对相对应的多项式进行求导计算。对于函数[q,d]=polyder(b, a),相当于对多项式 求导,结果为 。
2.多项式的积分
在MATLAB中,使用函数polyint()对多项式进行积分运算,其调用方式如下。
 polyint(p, k):返回以向量p为系数的多项式的积分,积分的常数项为k。
 polyint(p):返回以向量p为系数的多项式的积分,积分的常数项为默认值0。
【例5-9】 对多项式 进行积分运算,其常数项分别为3和0,其实现的MATLAB程序代码如下:

p1=[3 2 2];
y1=polyint(p1,3); %对多项式p1进行积分,常数项为3
y1=poly2sym(y1)
y2=polyint(p1); %对多项式p1进行积分,常数项为0
y2=poly2sym(y2)

运行程序后,输出结果如下:

y1 =
x^3 + x^2 + 2*x + 3
y2 =
x^3 + x^2 + 2*x

通过polyint()函数对多项式进行积分运算,积分的常数项通过参数k进行设置。如果不对参数k进行设置,则k取默认值0。
lili123 当前离线   回复时引用此帖