学习matlab(五)——多项式、插值、极限针对数据分析和处理,MATL AB提供了⼤量的函数,⾮常⽅便和灵活。本章将详细的介绍利⽤MATLAB进⾏⼀些基本的数据分析,主要包括多项式及其函数,插值,以及函数的极限。MATLAB能够很好的解决多项式运算问题,这些函数⽤于多项式的建⽴、多项式求值、多项式乘法和除法、多项式求导、多项式展开和拟合等等。插值函数,主要包括⼀维插值、⼆维插值、样条插值和⾼维插值等内容。MATLAB提供了⾮常强⼤的函数,⾮常⽅便和灵活的求得函数的极限。
1.多项式
MATLAB提供了⼀些处理多项式的专⽤函数,⽤户可以很.⽅便地进⾏多项式的建⽴、多项式求值、乘法和除法运算,以及求多项式的导数和微分、多项式的根、多项式的展开和拟合等。
MATLAB语⾔中,对于多项式,⽤多项式的系数按照降幂次序存放在向量中。顺序必须是从⾼到低进⾏排列。例如,多项式可以⽤系数向量来表⽰。多项式就转换为多项式系数向量问题,次多项式⽤⼀个维的⾏向量表⽰,在多项式中缺少的幂次要⽤“0"来补齐。
1.对于已知多项式系数的表达式:由poly2sym函数是由向量创建多项式,disp函数显⽰多项式;
2.对于已知多项式的根:由poly函数构建多项式,poly2sym函数显⽰多项式
在MATLAB中,提供了两个函数对多项式进⾏求值,函数polyval( )和polyvalm( )。函数polyval( )以数组或矩阵中的元素为计算单位,函数polyvalm( )以矩阵为计算单位。
在MATLAB中,利⽤roots( )函数⽤来求多项式的根,其调⽤格式为: x=roots(p), 其中参数p为多项赋系数,输出参数x为多项式的根。对于n次多项式具有n个根,这些根可能是实根,也可能是共轭复根。在MATLAB中,如果已经知道多项式的根,可以利⽤函数poly( )求多项式的系数,其调⽤格式为: y=poly(X),输⼊参数x为根,输出参数y为得到的多项式系数向量。
在MATLAB中,使⽤函数conv( )对多项式进⾏乘法运算。其调⽤格式为c=conv(a, b),a和b为多项式的系数向量,该函数实现向量a 和b的卷积,在代数上相当于多项式a乘以多项式b,其中c为相乘所产⽣的多项式的系数向量。
在MATLAB中,采⽤函数polyder( )进⾏多项式的求导,调⽤⽅式为:y=polyder(p):对以向量p为系数的多项式求导;y=polyder(a, b):对以a和b为系数的多项式的乘积进⾏求导;[q,d]=polyder(b, a):返回以b为系数的多项式除以以a为系数的多项式的商的导数,并以q1/d格式表⽰。
在MATLAB中,使⽤函数polyint( )对多项式进⾏积分运算,其调⽤⽅式为:polyint(p, k):返回以向量p为系数的多项式的积分,积分的常数项为k;polyint(p): 返回以向量p为系数的多项式的积分,积分的常数项为默认值0。
在MATLAB中,有理多项式⽤他们的分⼦多项式和分母多项式进⾏表⽰,函数residue( )可以将多项式之⽐⽤部分分式展开,也可以将-⼀个部分分式⽤多项式之⽐进⾏表⽰。[r, p, k]=residue(b, a):求多项式之⽐b/a的分式展开,函数的返回值r是余数,p是部分分式的极点,k是常数项。如果多项式a没有重根,展开的形式如下:
在MATLAB中,函数polyfit( )采⽤最⼩⼆乘法对给定的数据进⾏多项式拟合,得到该多项式的系数。该函数的调⽤⽅式为: p =
polyfit(x, y, n),采⽤n次多项式来拟合数据x和y,得到以p为系数的多项式。该函数使得p(x)与y最⼩均⽅误差最⼩。
为了⽅便⽤户的使⽤,在MATLAB中提供了曲线拟合的图形⽤户接⼝。它位于MATLAB图形窗⼝的Tools菜单下⾯的Basic Fitting菜单。在使⽤该⼯具时,⾸先将需要拟合的数据采⽤函数plot( )画图,其MATLAB代码如下:
>> x=[0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8];
>> y=[1 2 3 5 6 7 6 5 4 1];
>> figure;
>> plot(x,y,'bo');
在figures界⾯中,进⼊tools⼯具栏以后,倒数第⼆个就是基本拟合
matlab求导2.插值
⼀维插值是进⾏数据分析的重要⽅法,在MATLAB中,⼀维插值有基于多项式的插值和基于快速傅⾥叶的插值两种类型。⼀维插值就是对⼀维函数进⾏插值。
在MATLAB中,⼀维多项式插值采⽤函数interp1( )进⾏实现。
在MATLAB中,⼀维快速傅⾥叶插值通过函数interpft( )来实现,该函数利⽤傅⾥叶变换将输⼊数据变换到频域,然后⽤更多点的傅⾥叶逆变换,变换回时域,其结果是对数据进⾏增采样。
⼆维插值主要⽤于图像处理和数据的可视化,其基本思想与⼀维插值相同,对函数进⾏插值。zi=interp2(x, y, z, xi, yi):通过初始数据x、y和z产⽣插值函数y= f(x, y),返回值zi是(xi, yi)在函数f(x, y)上的值。zi=interp2(x, y, z, xi, yi, method):其中method为可采⽤的插值⽅法。⼆维插值采⽤的⽅法只有4种,分别是'nearest'、'linear'. 'spline' 和'cubic',其中线性插值为默认的插值⽅法。
在MATLAB中,三次样条插值可以采⽤函数spline(),该函数的调⽤格式为:yi=spline(x, y, xi):通过初始数据产⽣插值函数,然后对数据xi进⾏插值,返回值yi=f(xi)。采⽤这种调⽤⽅式时,其相当于yi=interp1(x, y, xi, 'spline')。pp=spline(x, y):该函数通过对初始数据x和y产⽣插值函数,并进⾏返回。然后利⽤函数ppval( )对数据xi进⾏插值计算,其调⽤⽅式为yi=ppval(pp, xi),其中pp为插值函数。
在MATLAB中,采⽤函数interp3( )进⾏三维插值,该函数的调⽤格式为:vi=interp3(x, y, z, v, xi, yi, zi):该函数通过初始数据产⽣插值函数,然后对数据进⾏插值,返回值为vi=interp3(X, y, z, V, xi, yi, zi, method):该函数中method为可以采⽤的插值⽅法,共有4种,分别是'nearest'、'linear'、'spline'和'cubic', 其中线性插值为默认的插值⽅法。此外,在MATLAB中进⾏⾼维插值的函数还有interpn( ),可以进⾏n维插值。
3.极限
数列的极限定义为:设{yn}是数列,A是常数,若对于任意给定的正数ε (⽆论它多么⼩),总存在正整数N,使得当n>N时,都有,则称该数列以A为极限。有极限的数列称为收敛数列。
函数的极限包括左极限和右极限。左极限和右极限统称为单侧极限。极限存在且等于A的充分必要条件是左极限与右极限都存在且相等。y=limit(f): 当x趋近于0时,该函数对函数f求极限。y=limit(f, X, a)或y
=limit(f, a): 当x趋近于常数a时,对函数f求极限。y=limit(f, x, a, 'left'): 当x从左侧趋近于常数a时,对函数f求极限,返回值为求得的左极限。y=limit(f, x,a, 'right'): 当x从右侧趋近于常数a时,对函数f 求极限,返回值为求得的右极限。