《Matlab多项式运算.ppt》由会员分享,可在线阅读,更多相关《Matlab多项式运算.ppt(45页珍藏版)》请在金锄头文库上搜索。
1、Matlab 多项式运算与方程求根多项式运算与方程求根v Matlab多项式运算多项式运算无论是在线性代数中,还是信号处理、自动控制等理论无论是在线性代数中,还是信号处理、自动控制等理论中,多项式运算都有着十分重要的地位,因此,中,多项式运算都有着十分重要的地位,因此,MATLAB为多项式的操作提供了相应的函数库为多项式的操作提供了相应的函数库polyfun;Matlab 多项式运算与方程求根多项式运算与方程求根v Matlab的多项式表示的多项式表示q 在在 Matlab 中中,n 次多项式是用一个长度为次多项式是用一个长度为 n+1的向量来表示,缺少的幂次项系数为的向量来表示,缺少的幂次项
2、系数为 0。例如:。例如:在在 Matlab中,用其系数的行中,用其系数的行向量表示该多项式:向量表示该多项式:q 例:例:注:系数中的零不能省!注:系数中的零不能省!q 多项式四则运算多项式四则运算 多项式多项式加减运算加减运算:Matlab没有提供专门进行多项式没有提供专门进行多项式加减运算的函数,事实上,多项式的加减就是其所对加减运算的函数,事实上,多项式的加减就是其所对应的系数向量的加减运算。应的系数向量的加减运算。例:例: 对于次数相同的多项式,可以直接对其系数向量对于次数相同的多项式,可以直接对其系数向量进行加减运算;进行加减运算; 如果两个多项式次数不同,则应该把低次多项式如果两
3、个多项式次数不同,则应该把低次多项式中系数不足的高次项用中系数不足的高次项用0补足,然后进行加减运算。补足,然后进行加减运算。q 多项式四则运算多项式四则运算例:例:把多项式把多项式a(x)与多项式与多项式 b(x)相加求解如下相加求解如下:所得结果代表的多项式为:所得结果代表的多项式为:q 多项式四则运算(续)多项式四则运算(续) 多项式乘法运算:多项式乘法运算: k=conv(p,q)多项式的相乘就是两个代表多项式的行向量的卷积例:计算多项式例:计算多项式 和和 的乘积的乘积 p=2,-1,0,3; q=2,1; k=conv(p,q); 多项式除法运算:多项式除法运算:k,r=decon
4、v(p,q)其中其中k返回的是多项式返回的是多项式p除以除以 q的商,的商,r是余式。是余式。k,r=deconv(p,q)p=conv(q,k)+rq 多项式的导数:多项式的导数:polyderk=polyder(p): 返回多项式多项式p的一阶导数;的一阶导数;k=polyder(p,q): 返回多项式返回多项式p与与q乘积乘积的一阶导数;的一阶导数;k,d=polyder(p,q):返回p/q 的导数,的导数,k是分子,是分子,d是分母。是分母。 k1=polyder(2,-1,0,3); k2=polyder(2,-1,0,3,2,1); k2,d=polyder(2,-1,0,3,2
5、,1);例:已知例:已知 , , 求求q 多项式求值多项式求值 p=2,-1,0,3; x=2;polyval(p,x) x=-1, 2;-2,1;polyval(p,x)例:已知例:已知 ,分别取,分别取 x=2和一个和一个2x2矩阵,矩阵, 求求 p(x)在在 x处的值处的值 多项式多项式求值函数求值函数polyval 利用该函数可以求得多项利用该函数可以求得多项式在某一点的值。式在某一点的值。y=polyval(p,x):返回多项式p在在x点的值点的值其中:其中:x x可以是复数,也可以是矩阵;可以是复数,也可以是矩阵;q多项式求根多项式求根 p=2,-1,0,3; x=roots(p)
6、例:已知例:已知 ,求,求p(x)的根。的根。x=roots(p):返回多项式的根,注意返回多项式的根,注意:matlab按惯例,多项式是行向量,根是列向量。按惯例,多项式是行向量,根是列向量。若已知多项式的全部根,则可用若已知多项式的全部根,则可用poly函数给出该多项式。函数给出该多项式。p=ploy(x)求解多项式的根,即求解多项式的根,即p(x)=0的解。在的解。在matlab中,求解多项式的中,求解多项式的根有根有roots函数命令来完成。函数命令来完成。q部分分式展开函数部分分式展开函数residue格式一:格式一:r,p,k=residue(b,a)Residue函数可以完成有理
7、多项式的部分分式展开,它是一个对函数可以完成有理多项式的部分分式展开,它是一个对系统传递函数特别有用的函数,其调用格式为:系统传递函数特别有用的函数,其调用格式为:功能:把功能:把b(s)/a(s)展开成:展开成:其中,其中,r代表余数数组,代表余数数组,p代表极点数组,代表极点数组,k代表常数项。代表常数项。q部分分式展开函数部分分式展开函数residue例:例:将有理多项式将有理多项式 展开成部分分式。展开成部分分式。即有理多项式可展开为:即有理多项式可展开为:q部分分式展开函数部分分式展开函数residue格式二:格式二:b,a=residue(r,p,k)功能功能:格式一的逆作用格式一
8、的逆作用统统 计计 分分 析析Matlab有专用的统计分析工具箱;常用的命令为:统统 计计 分分 析析1. 求矩阵最大元素和最小元素求矩阵最大元素和最小元素MATLAB提供的求数据序列的最大值和最小值的提供的求数据序列的最大值和最小值的函数分别为函数分别为max和和min,两个函数的调用格式和操,两个函数的调用格式和操作过程类似。作过程类似。(1)求向量的最大值和最小值)求向量的最大值和最小值 格式一:格式一: y=max(X) 返回向量返回向量X的最大值存入的最大值存入y,如果,如果X中包含复数元中包含复数元素,则按模取最大值。如果素,则按模取最大值。如果x为向量,返回为向量,返回x中最中最
9、大值元素;如果大值元素;如果x是矩阵,则将矩阵每列作为处理是矩阵,则将矩阵每列作为处理向量,返回一个行向量;向量,返回一个行向量;返回向量返回向量X的最大值存入的最大值存入y,最大值的序号存入,最大值的序号存入I,如,如果果X中包含复数元素,则按模取最大值。中包含复数元素,则按模取最大值。求向量求向量X的最小值的函数是的最小值的函数是min(X),用法和,用法和max(X)完完全相同。全相同。例例 求向量求向量x的最大值。的最大值。 格式二:格式二: y,I=max(X) 格式三:格式三:max(A,dim)dim取取1或或2。dim取取1时,该函数和时,该函数和max(A)完全相同;完全相同
10、;dim取取2时,该函数返回一个列向量,其第时,该函数返回一个列向量,其第i个元素是个元素是A矩阵的第矩阵的第i行上的最大值。行上的最大值。 求最小值的函数是求最小值的函数是min,其用法和,其用法和max完全相同。完全相同。求数据序列平均值的函数是求数据序列平均值的函数是mean,求数据序列中值的,求数据序列中值的函数是函数是median。两个函数的调用格式为:。两个函数的调用格式为:mean(X):返回向量:返回向量X的算术平均值。的算术平均值。median(X):返回向量:返回向量X的中值。的中值。mean(A):返回一个行向量,其第:返回一个行向量,其第i个元素是个元素是A的第的第i列
11、的列的算术平均值。算术平均值。median(A):返回一个行向量,其第:返回一个行向量,其第i个元素是个元素是A的第的第i列列的中值。的中值。mean(A,dim):当:当dim为为1时,该函数等同于时,该函数等同于mean(A);当当dim为为2时,返回一个列向量,其第时,返回一个列向量,其第i个元素是个元素是A的第的第i行的算术平均值。行的算术平均值。median(A,dim):当:当dim为为1时,该函数等同于时,该函数等同于median(A);当;当dim为为2时,返回一个列向量,其第时,返回一个列向量,其第i个元个元素是素是A的第的第i行的中值。行的中值。2. 求矩阵的平均值和中值求
12、矩阵的平均值和中值 求数据序列平均值的函数是求数据序列平均值的函数是mean,求数据序列中值,求数据序列中值的函数是的函数是median。两个函数的调用格式为:。两个函数的调用格式为:M=mean(x)功能:如果功能:如果x为为向量,则返回向量向量,则返回向量x的平均值;如果的平均值;如果x为为矩阵,则将矩阵每列当作向量来处理,返回一个平均值矩阵,则将矩阵每列当作向量来处理,返回一个平均值行向量;行向量;例如:例如:2. 求矩阵的平均值和中值求矩阵的平均值和中值数据序列中值的函数是数据序列中值的函数是median,其调用格式为:,其调用格式为:M=median(x)功能:如果功能:如果x为为向
13、量,则返回向量向量,则返回向量x的中间值;如果的中间值;如果x为为矩阵,则将矩阵每列当作向量来处理,返回一个中间值矩阵,则将矩阵每列当作向量来处理,返回一个中间值行向量;行向量;例如:例如:2. 求矩阵的平均值和中值求矩阵的平均值和中值数据序列求和与求积的函数是数据序列求和与求积的函数是sum和和prod,其调用格式分,其调用格式分别为:别为: s=sum(x)功能:如果功能:如果x为向量,则返回为向量,则返回X的元素和;如果的元素和;如果x为矩阵,为矩阵,则将矩阵每列当作向量处理,返回一个元素分别为各列和则将矩阵每列当作向量处理,返回一个元素分别为各列和的行向量。的行向量。3. 矩阵元素求和
14、与求积矩阵元素求和与求积prod函数与函数与sum函数的调用格式完全一样,只是功能不同;函数的调用格式完全一样,只是功能不同;格式为:格式为:A=cumprod(x)功能:沿数组不同维,返回累乘积,返回值功能:沿数组不同维,返回累乘积,返回值A与与x大小一大小一样,与元素全乘积不同,它只将样,与元素全乘积不同,它只将x中相应元素与其之前的中相应元素与其之前的所有元素相乘;当所有元素相乘;当x是向量时,返回是向量时,返回x的元素累计积向量;的元素累计积向量;如果如果x为矩阵时,返回一个与为矩阵时,返回一个与x大小相同的每列累乘积的矩大小相同的每列累乘积的矩阵;阵;例如:例如:4. 列元素累乘积函
15、数列元素累乘积函数cumprod( )例如:例如:4. 列元素累乘积函数列元素累乘积函数cumprod( )格式为:格式为:A=cumsum(x)功能:沿数组不同维,返回累计和,当功能:沿数组不同维,返回累计和,当x是向量时,返回是向量时,返回x的元素累计和;如果的元素累计和;如果x为矩阵时,返回一个与为矩阵时,返回一个与x大小相同的大小相同的每列累计和的矩阵;每列累计和的矩阵;例如:例如:4. 列元素累求和函数列元素累求和函数cumsum( )4. 列元素累求和函数列元素累求和函数cumsum( )2.8.2函数相关分析函数相关分析在在matlab中用于相关分析的函数主要有中用于相关分析的函
16、数主要有cov( )函数和函数和corrcoef( )函数。函数。1、协方差函数、协方差函数cov( )格式一:格式一: c=cov(x)格式二:格式二: c=cov(x,y);2.8.2函数相关分析函数相关分析2、相关矩阵函数、相关矩阵函数corrcoef( )格式一:格式一: p=corrcoef (x)功能:根据输入矩阵功能:根据输入矩阵x,返回一个相关系数矩阵相关系数,返回一个相关系数矩阵相关系数矩阵由下式确定:矩阵由下式确定:格式二:格式二: s=corrcoef(x,y)功能:返回向量功能:返回向量x和和y的相关系数。的相关系数。2.8.3函数插值运算函数插值运算插值就是在已知的数
17、据点之间利用某种算法寻找估计值插值就是在已知的数据点之间利用某种算法寻找估计值的过程。在信号处理、图像处理中,插值运算占有重要的过程。在信号处理、图像处理中,插值运算占有重要的地位;的地位;matlab提供了一系列的插值函数。其基本的插值提供了一系列的插值函数。其基本的插值函数有:函数有:interp1( ) interp1q( ) interp2( ) inerp3( )interpft( ) inerpn( ) spline( )1.一维数据插值一维数据插值n定义:定义:已知离散点上的数据集已知离散点上的数据集 ,即已知在点集,即已知在点集X X上的函数值上的函数值Y Y,构造一个解析函数
18、(其图形为一,构造一个解析函数(其图形为一曲线)通过这些点,并能够求出这些点之间的值,曲线)通过这些点,并能够求出这些点之间的值,这一过程称为一维插值。这一过程称为一维插值。 在在MATLABMATLAB中,实现中,实现一维一维插值的函数是插值的函数是interp1interp1,其调用格式为:其调用格式为:Y1=interp1(X,Y,X1,method)Y1=interp1(X,Y,X1,method)函数根据函数根据X,YX,Y的值,计算函数在的值,计算函数在X1X1处的值。处的值。X,YX,Y是两是两个等长的已知向量,分别描述采样点和样本值,个等长的已知向量,分别描述采样点和样本值,X
19、1X1是一个向量或标量,描述欲插值的点,是一个向量或标量,描述欲插值的点,Y1Y1是一是一个与个与X1X1等长的插值结果。等长的插值结果。methodmethod是插值方法,允是插值方法,允许的取值有许的取值有linearlinear、nearestnearest、cubiccubic、splinespline。方法:方法:nearest( (最临近插值法最临近插值法):):该方法将内插点设置成最该方法将内插点设置成最接近于已知数据点的值,其特点是插值速度最快,接近于已知数据点的值,其特点是插值速度最快,但平滑性较差。但平滑性较差。linear( (线性插值线性插值):):该方法连接已有数据点
20、作线性该方法连接已有数据点作线性逼近。它是逼近。它是interp1interp1函数的默认方法,其特点是需要函数的默认方法,其特点是需要占用更多的内存,速度比占用更多的内存,速度比nearestnearest方法稍慢,但是平方法稍慢,但是平滑性优于滑性优于nearestnearest方法。方法。spline( (三次样条插值三次样条插值):):该方法利用一系列样条函该方法利用一系列样条函数获得内插数据点,从而确定已有数据点之间的函数获得内插数据点,从而确定已有数据点之间的函数。其特点是处理速度慢,但占用内存少,可以产数。其特点是处理速度慢,但占用内存少,可以产生最光滑的插值结果;生最光滑的插值
21、结果;cublic(立方插值立方插值):该方法该方法y拟合三次曲线函数,从而确拟合三次曲线函数,从而确定内插点的值定内插点的值。其特点是占用内存和处理时间较快,但。其特点是占用内存和处理时间较快,但插值数据和导数是连续的。插值数据和导数是连续的。注意:每种插值方法都可以处理非等间距节点的插值。注意:每种插值方法都可以处理非等间距节点的插值。如果输入数据是等间距的,可以在插值方法前加一个星如果输入数据是等间距的,可以在插值方法前加一个星号号“*”“*”, ,以提高处理速度,例如以提高处理速度,例如“*“*nearest”.nearest”.例:请阅读并分析例:请阅读并分析eg.m程序。程序。已知
22、某产品从已知某产品从1900年到年到2010年每隔年每隔10年的产量为:年的产量为:75.995, 91.972, 105.711, 123.203, 131.699, 150.697, 179.323, 203.212, 226.505, 249.633, 256.344, 267.893,计,计算出算出1995年的产量,用三次样条插值的方法,画出每隔年的产量,用三次样条插值的方法,画出每隔一年的插值曲线图形,同时将原始的数据画在同一图上。一年的插值曲线图形,同时将原始的数据画在同一图上。2.11 函数分析与数值积分函数分析与数值积分在实际应用中,我们常常对一些函数的极值、积分、在实际应用中
23、,我们常常对一些函数的极值、积分、微分等问题感兴趣,为此,微分等问题感兴趣,为此,matlab在函数功能和数值在函数功能和数值分析函数库分析函数库(funfun)中为用户提供了有关的函数命令。中为用户提供了有关的函数命令。2.11 函数在函数在matlab中的表示中的表示1、函数的表示与计算、函数的表示与计算在在matlab中,对一个给定的函数表达式,通常可以用两中,对一个给定的函数表达式,通常可以用两种方法来表示:函数文件和内联函数;种方法来表示:函数文件和内联函数;从前面的学习中我们知道,在从前面的学习中我们知道,在matlab中,数学函数可以中,数学函数可以用函数文件表示,由用函数文件表
24、示,由function来实现。例如:来实现。例如:则可用函数文件则可用函数文件hump.m来表示:来表示:function y=hump(x)y=1./(x-0.03).2+0.01)2.11 函数在函数在matlab中的表示中的表示则可用函数文件则可用函数文件hump.m来表示:来表示:function y=hump(x)y=1./(x-0.03).2+0.01)这样,这样,hump就可用来作为某些函数的输入变量,从而就可用来作为某些函数的输入变量,从而实现对函数的计算。例如,需要计算该函数在实现对函数的计算。例如,需要计算该函数在x=0.5处处的函数值,只需要调用命令的函数值,只需要调用命
25、令y=hump(0.5)即可求得。即可求得。2.11 函数在函数在matlab中的表示中的表示除了用除了用function来定义函数,也可用内联函数来定义函数,也可用内联函数inline函数来函数来表示,即用一个字符串表达式创建一个内联对象。表示,即用一个字符串表达式创建一个内联对象。例如,可以为函数例如,可以为函数f(x)创建一个创建一个inline对象,在命令对象,在命令窗口中输入:窗口中输入:2.11 函数在函数在matlab中的表示中的表示在计算函数值时,除了采用直接调用函数文件或内联对象在计算函数值时,除了采用直接调用函数文件或内联对象外,也可以利用外,也可以利用feval函数来实现
26、;格式为:函数来实现;格式为:y=feval(F,x);功能:计算由功能:计算由F指定的函数名或函数句柄表示的函数在指定的函数名或函数句柄表示的函数在x处的函数值。处的函数值。F函数名要用单引号引起来。例如:函数名要用单引号引起来。例如:2.11 函数在函数在matlab中的表示中的表示除了调用函数名和内联来实现外,也可以用函数句柄来实除了调用函数名和内联来实现外,也可以用函数句柄来实现。在现。在matlab中,函数句柄可由中,函数句柄可由来获取。来获取。例如:利用函数句柄计算例如:利用函数句柄计算hump函数在函数在x=0.5处的函数值。处的函数值。只需在命令窗口输入:只需在命令窗口输入:二
27、、数值求解方法二、数值求解方法1、数值积分、数值积分数值积分是数值求解的基本运算方法之一,数值积分是数值求解的基本运算方法之一,matlab语语言的几个数值积分函数为:言的几个数值积分函数为:quad( ) quadl( ) trapz( )低价积分低价积分 高价积分高价积分梯形面积法积分梯形面积法积分低价数值积分函数低价数值积分函数quad( )格式一:格式一:q=quad(fun,a,b )功能:采用自适应辛普生功能:采用自适应辛普生(Simpson) 法积分,返回函数法积分,返回函数Fun在上限在上限a和下限和下限b之间的数值积分,当给定一个输入之间的数值积分,当给定一个输入值向量,值向
28、量,fun必须返回一个输出向量。函数必须返回一个输出向量。函数fun可以是可以是函数名、函数句柄或字符串。函数名、函数句柄或字符串。例如,求例如,求hump函数在函数在x=1-2之间的定积分之间的定积分例例2,计算函数,计算函数在在0,1区间上的积分。区间上的积分。方法一:采用字符串方法一:采用字符串方法二:采用内联对象方法二:采用内联对象方法三:采用函数方法三:采用函数建立函数建立函数myfun低价数值积分函数低价数值积分函数quad( )格式二:格式二:q=quad(fun,a,b ,tol)功能:按指定绝对误差功能:按指定绝对误差tol返回数值积分值,返回数值积分值,tol默认值为默认值
29、为1e-6。高价高价数值积分函数数值积分函数quadl()quad( )函数和函数和quadl( ) 函数的调用格式相同,两者的区别函数的调用格式相同,两者的区别是积分方法不同,是积分方法不同,quad采用的是辛普生方法,而采用的是辛普生方法,而quadl采用采用的是自适应洛必达法则。的是自适应洛必达法则。梯形面积法的积分函数梯形面积法的积分函数trapz( )格式一:格式一: T=trapz(x)功能:采用梯形面积法计算功能:采用梯形面积法计算x的积分;的积分;格式二:格式二: T=trapz(x,y)功能:用梯形积分法,依据功能:用梯形积分法,依据x计算计算y的积分。的积分。二重积分数值求解二重积分数值求解使用使用MATLAB提供的提供的dblquad函数就可以直接求出上述函数就可以直接求出上述二重定积分的数值解。该函数的调用格式为:二重定积分的数值解。该函数的调用格式为:格式为:格式为:Q=dblquad(fun,xmin,xmax,ymin,ymax,tol)功能:按指定精度功能:按指定精度tol,对指定函数,对指定函数f(x,y)在在xmin,xmax范围和范围和ymin,ymax范围进行双重积分。范围进行双重积分。Tol默认时默认默认时默认精度为精度为1e-6.