学习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没有重根,展开的形式如下:\frac{b(x)}{a(x)}=\frac{r_{1}}{x-p_{1}}+\frac{r_{2}}{x-p_{2}}+...+\frac{r_{n}}{x-p_{n}}

在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工具栏以后,倒数第二个就是基本拟合

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时,都有|y_{n}-A|<\varepsilon,则称该数列以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求极限,返回值为求得的右极限。

你可能感兴趣的:(matlab)