matlab两个多项式四则运算,MATLAB程序设计教程(6)—MATLAB数据分析与多项式计算(2)...

(2) fft(X,N):计算N点离散傅立叶变换。它限定向量的长度为N,若X的长度小于N,则不足部分补上零;若大于N,则删去超出N的那些元素。对于矩阵X,它同样应用于矩阵的每一列,只是限定了向量的长度为N。

(3) fft(X,[],dim)或fft(X,N,dim):这是对于矩阵而言的函数调用格式,前者的功能与FFT(X)基本相同,而后者则与FFT(X,N)基本相同。只是当参数dim=1时,该函数作用于X的每一列;当dim=2时,则作用于X的每一行。

值得一提的是,当已知给出的样本数N0不是2的幂次时,可以取一个N使它大于N0且是2的幂次,然后利用函数格式fft(X,N)或fft(X,N,dim)便可进行快速傅立叶变换。这样,计算速度将大大加快。

相应地,一维离散傅立叶逆变换函数是ifft。ifft(F)返回F的一维离散傅立叶逆变换;ifft(F,N)为N点逆变换;ifft(F,[],dim)或ifft(F,N,dim)则由N或dim确定逆变换的点数或操作方向。

例6-15 给定数学函数

x(t)=12sin(2π×10t+π/4)+5cos(2π×40t)

取N=128,试对t从0~1秒采样,用fft作快速傅立叶变换,绘制相应的振幅-频率图。

在0~1秒时间范围内采样128点,从而可以确定采样周期和采样频率。由于离散傅立叶变换时的下标应是从0到N-1,故在实际应用时下标应该前移1。又考虑到对离散傅立叶变换来说,其振幅| F(k)|是关于N/2对称的,故只须使k从0到N/2即可。

程序如下:

N=128; % 采样点数

T=1; % 采样时间终点

t=linspace(0,T,N); % 给出N个采样时间ti(I=1:N)

x=12*sin(2*pi*10*t+pi/4)+5*cos(2*pi*40*t); % 求各采样点样本值x

dt=t(2)-t(1); % 采样周期

f=1/dt; % 采样频率(Hz)

X=fft(x); % 计算x的快速傅立叶变换X

F=X(1:N/2+1); % F(k)=X(k)(k=1:N/2+1)

f=f*(0:N/2)/N; % 使频率轴f从零开始

plot(f,abs(F),'-*') % 绘制振幅-频率图

xlabel('Frequency');

ylabel('|F(k)|')

6.5 多项式计算

6.5.1 多项式的四则运算

1.多项式的加减运算

2.多项式乘法运算

函数conv(P1,P2)用于求多项式P1和P2的乘积。这里,P1、P2是两个多项式系数向量。

例6-16 求多项式x4+8x3-10与多项式2x2-x+3的乘积。

3.多项式除法

函数[Q,r]=deconv(P1,P2)用于对多项式P1和P2作除法运算。其中Q返回多项式P1除以P2的商式,r返回P1除以P2的余式。这里,Q和r仍是多项式系数向量。

deconv是conv的逆函数,即有P1=conv(P2,Q)+r。

例6-17 求多项式x4+8x3-10除以多项式2x2-x+3的结果。

6.5.2 多项式的导函数

对多项式求导数的函数是:

p=polyder(P):求多项式P的导函数

p=polyder(P,Q):求P·Q的导函数

[p,q]=polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q。

上述函数中,参数P,Q是多项式的向量表示,结果p,q也是多项式的向量表示。

例6-18 求有理分式的导数。

命令如下:

P=[1];

Q=[1,0,5];

[p,q]=polyder(P,Q)

6.5.3 多项式的求值

MATLAB提供了两种求多项式值的函数:polyval与polyvalm,它们的输入参数均为多项式系数向量P和自变量x。两者的区别在于前者是代数多项式求值,而后者是矩阵多项式求值。

1.代数多项式求值

polyval函数用来求代数多项式的值,其调用格式为:

Y=polyval(P,x)

若x为一数值,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求其多项式的值。

例6-19 已知多项式x4+8x3-10,分别取x=1.2和一个2×3矩阵为自变量计算该多项式的值。

2.矩阵多项式求值

polyvalm函数用来求矩阵多项式的值,其调用格式与polyval相同,但含义不同。polyvalm函数要求x为方阵,它以方阵为自变量求多项式的值。设A为方阵,P代表多项式x3-5x2+8,那么polyvalm(P,A)的含义是:

A*A*A-5*A*A+8*eye(size(A))

而polyval(P,A)的含义是:

A.*A.*A-5*A.*A+8*ones(size(A))

例6-20 仍以多项式x4+8x3-10为例,取一个2×2矩阵为自变量分别用polyval和polyvalm计算该多项式的值。

6.5.4 多项式求根

n次多项式具有n个根,当然这些根可能是实根,也可能含有若干对共轭复根。MATLAB提供的roots函数用于求多项式的全部根,其调用格式为:

x=roots(P)

其中P为多项式的系数向量,求得的根赋给向量x,即x(1),x(2),…,x(n)分别代表多项式的n个根。

例6-21 求多项式x4+8x3-10的根。

命令如下:

A=[1,8,0,0,-10];

x=roots(A)

若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为:

P=poly(x)

若x为具有n个元素的向量,则poly(x)建立以x为其根的多项式,且将该多项式的系数赋给向量P。

例6-22 已知 f(x)

(1) 计算f(x)=0 的全部根。

(2) 由方程f(x)=0的根构造一个多项式g(x),并与f(x)进行对比。

命令如下:

P=[3,0,4,-5,-7.2,5];

X=roots(P) %求方程f(x)=0的根

G=poly(X) %求多项式g(x)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值