《第6章-多项式运算和数据插值ppt课件.ppt》由会员分享,可在线阅读,更多相关《第6章-多项式运算和数据插值ppt课件.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、6.1 6.1 多项式运算多项式运算n多项式的幂级数形式为n6.1.1 6.1.1 符号多项式的生成符号多项式的生成n使用函数生成符号多项式的格式是:n poly2sym(P,x)n其中,多项式系数向量 ;n x是自变量,可以省略。n6.1.2 6.1.2 求多项式的值和根求多项式的值和根n1、求多项式值的函数调用格式是:n polyval(P,b)n其中,P是多项式系数向量;b是多项式变量x的值nnnnnaxaxaxaxay122110012nPaaaa, , , ,n例例6-1 6-1 计算多项式的值。n在MATLAB中多项式是以向量的形式存储的,因此直接输入多项式的系数向量,系统会按照降
2、幂自动将向量元素分配给多项式的各项系数,从而创建多项式。n% 计算多项式的值nP=3 0 2 1 0 7; % 多项式的系数向量ny=poly2sym(P) % 符号工具箱转换函数nx=2.5; % 自变量x取值nyx=polyval(P,x) % 多项式的值n程序运行结果:ny = 3*x5+2*x3+x2+7nyx = 337.4688n2、求多项式值根的函数调用格式是:n roots(P)n其中,多项式系数向量 n例例6-2 6-2 计算多项式的根。nP=3 0 2 1 0 7; % 多项式的系数向量nX0=roots(P) % 多项式的根nM文件运行结果:nx0 = -1.1254 n
3、 -0.2821 + 1.2085in -0.2821 - 1.2085in 0.8448 + 0.7954in 0.8448 - 0.7954i012nPaaaa, , , ,n6.1.3 6.1.3 多项式的乘法和除法运算多项式的乘法和除法运算n1、多项式的乘法运算n多项式乘法运算的函数调用格式是:n conv(P1,P2)n其中,输入参数(P1,P2)分别是参与运算的两个多项式系数向量。n该函数运行后返回多项式积的系数向量。n2、多项式的除法运算n多项式除法运算的函数调用格式是:ndeconv(P1,P2)n其中,输入参数(P1,P2)分别是参与运算的两个多项式的系数向量。n该函数运行后
4、返回多项式商的系数向量。n例例6-3 6-3 计算以下两个多项式的积和商:n% 计算多项式的乘法和除法运算nP1=1 -3 2 1 2; % 多项式1的系数向量ny1=poly2sym(P1)nP2=3 0 2 1 0 7; % 多项式2的系数向量ny2=poly2sym(P2)nJ=conv(P1,P2) % 多项式的乘法运算nyJ=poly2sym(J)nS=deconv(J,P1) % 多项式的除法运算43215322322327yxxxxyxxxn运算结果:ny1 = x4-3*x3+2*x2+x+2ny2 = 3*x5+2*x3+x2+7nJ = 3 -9 8 -2 7 11 -16
5、 16 7 14nyJ = 3*x9-9*x8+8*x7-2*x6+7*x5 +11*x4-16*x3+16*x2+7*x+14nS = 3 0 2 1 0 7n可见,两个多项式的乘法运算后得到多项式J,再除以多项式P1后得到的多项式S,与多项式P2相同。n6.1.4 6.1.4 多项式的导数和积分多项式的导数和积分n1、多项式的导数n计算多项式导数的函数调用格式是:n ployder(P)n其中,输入参数P是多项式的系数向量。n该函数运行后返回多项式导数的系数向量。n2、多项式的积分n计算多项式积分的函数调用格式是:n ployint(P)n其中,输入参数P是多项式的系数向量。n该函数运行后
6、返回多项式积分的系数向量。n例例6-4 6-4 计算如下多项式的导数和积分n% 计算多项式的导数和积分nP=1 -3 2 1 2; % 多项式的系数向量ny=poly2sym(P)nDS=polyder(P) % 多项式的导数nJF=polyint(P) % 多项式的积分n运算结果:ny =nx4-3*x3+2*x2+x+2nDS =n 4 -9 4 1nJF =n 0.2000 -0.7500 0.6667 0.5000 2.0000 06.2 6.2 数据插值数据插值n多项式插值是最常见的一种函数插值。在一般插值问题中,若选取函数为n次多项式,由插值条件可以唯一确定一个n次插值多项式满足上
7、述条件。从几何上看可以理解为:已知平面上n1个不同点,要寻找一条n次多项式曲线通过这些点。插值多项式一般有两种常见的表达形式,一是拉格朗日插值多项式,另一是牛顿插值多项式。n为了避免多项式高次插值可能出现的大幅度波动现象,在实际应用中通常采用分段低次插值来提高近似程度,三次样条插值作为一种全局化的分段插值方法,成为比较理想的工具。n6.2.1 6.2.1 一维数据插值一维数据插值n1、一维数据插值函数n对于给定的个插值节点及对应的函数值,一维数据插值函数调用格式是:n y0=interp1(x,y,x0,k) n它可以对插值区间内的任意插值点的函数值进行计算。其中,k是插值方法:nlinear
8、(默选值)是线性插值; nnearest是最近点等值插值;ncubic是3次多项式插值,它根据插已知数据点构造一个3次多项式,然后计算插值点函数值;nspline是3次样条插值,它在每个分段内构造一个3次多项式,使其插值函数除了满足插值条件外,还要求在各个节点处满足光滑连接条件。n例例6-5 6-5 已知实验数据一维函数 在区间0,4内间距为0.2的离散值。试根据生成的数据进行插值处理,比较它们的插值结果。n% 一维数据离散插值nx=0:0.2:4;ny=x.5.*exp(-4*x).*cos(x);nfigure(1)nplot(x,y,k,x,y,ro);nxlabel(bfit x);y
9、label(bfit y);ntitle(bf x5e-4*xcosx);nx1=0:0.1:4;ny1=interp1(x,y,x1,linear); % 线性插值ny2=interp1(x,y,x1,nearest); % 最近点等值插值54cosxyx exny3=interp1(x,y,x1,cubic); % 3次多项式插值ny4=interp1(x,y,x1,spline);% 3次样条插值nfigure(2)nsubplot(2,2,1);plot(x,y,ro,x1,y1,-)nxlabel(bfit x);ylabel(bfit y);title(bf 线性插值);nsubp
10、lot(2,2,2);plot(x,y,ro,x1,y2,-)nxlabel(bfit x);ylabel(bfit y);title(bf 最近点等值插值);nsubplot(2,2,3);plot(x,y,ro,x1,y3,-)nxlabel(bfit x);ylabel(bfit y);title(bf 3次多项式插值);nsubplot(2,2,4);plot(x,y,ro,x1,y4,-)nxlabel(bfit x);ylabel(bfit y);title(bf 3次样条插值);n2、lagrange插值n对于给定的个插值节点及对应的函数值,利用n次lagrange插值多项式为n
11、例例6-66-6 已知自然对数函数数表如表6-1所示,用lagrange插值计算的值,并且检验计算精度。表表6-1 6-1 自然对数函数数表自然对数函数数表xyx0.40000.50000.60000.70000.8000y-0.9163-0.6931-0.5108-0.3567-0.2231 nkjkjnkjjkxxxxyxy11n% Lagrange插值函数文件(Lagrange.m)nfunction yi=lagrange(x,y,xi)nyi=zeros(size(xi);nnp=length(y);nfor i=1:npn z=ones(size(xi);n for j=1:npn
12、 if i=jn z=z.*(xi-x(j)/(x(i)-x(j);n endn endn yi=yi+z*y(i);nendn% 调用Lagrange.m的M文件nx=0.4:0.1:0.8;y=log(x);nx0=0.54;nyi=lagrange(x,y,x0) % 调用Lagrange插值计算nys=log(x0) % 使用自然对数公式计算nM文件运行结果:nyi =n -0.6161nys =n -0.6161n可见,采用lagrange插值可以获得足够的精度。n6.2.2 6.2.2 二维数据插值二维数据插值n1 1、二维网格数据插值、二维网格数据插值n对于二维离散数据点所在的平
13、面矩形区域内,离散数据点可以使用函数meshgid生成网格矩阵。进行二维网格数据插值的函数调用格式为:n y0=interp2(x,y,z,x0,y0,k) n其中,x和y是两个向量,分别描述两个参数的网格数据点;z是与网格数据点对应的函数值;x0和y0是需要插值的数据点;k是插值算法,与一维数据插值函数interp1的规定相同。n例例6-7 6-7 给定二维函数 离散得到的一些网格点。试使用3次样条插值,并且绘制网格点的三维图和插值拟合曲面图。2222xyxyzxx en% 二维网格数据插值nx,y=meshgrid(-3:0.6:3,-2:0.4:2);nz=(x.2-2*x).*exp(
14、-x.2-y.2-x.*y);nsubplot(1,2,1);surf(x,y,z);naxis(-3 3 -2 2 -0.7 1.5);nxlabel(bfit x);ylabel(bfit y);zlabel(bfit x);ntitle(bf 二维网格数据的三维图);nx0,y0=meshgrid(-3:0.2:3,-2:0.2:2);nz0=interp2(x,y,z,x0,y0,spline);nsubplot(1,2,2);surf(x0,y0,z0);naxis(-3 3 -2 2 -0.7 1.5);nxlabel(bfit x);ylabel(bfit y);zlabel(b
15、fit x);ntitle(bf 3次样条插值曲面图);n2 2、二维分布数据插值、二维分布数据插值n二维分布的离散数据插值的函数调用格式为:n y0=griddata(x,y,x0,y0,v4) n其中,x0和y0是需要插值的数据点,可以使用函数meshgid生成;v4是很圆滑的插值算法。n例例6-86-8 已知14个节点的二维离散数据点及其函数值。试在 和 的区域内,按照间距为3生成的插值点网格矩阵,使用3次多项式插值,并且绘制插值拟合曲面图。表6-2 二维分布数据点及其函数值(具体数据见M文件所列)70 200 x 0 150y nx=129.0 140.0 103.5 88.0 185
16、.5 195.0 105.5 157.5 107.5 77.0 81.0 162.0 162.0 117.5;ny=7.5 141.5 23.0 147.0 22.5 137.5 85.5 60.5 121.0 3.0 56.5 116.5 84.0 43.5;nsubplot(1,2,1);plot(x,y,o)nxlabel(bfit x);ylabel(bfit y);title(bf 平面区域的分布数据);nz=-4 8 6 8 6 8 8 9 9 8 8 9 4 9;nxi=70:3:200;yi=0:3:150;X,Y=meshgrid(xi,yi);nH=griddata(x,y,z,X,Y,cubic);nsubplot(1,2,2);mesh(X,Y,H);view(-60,30);nxlabel(bfit x);ylabel(bfit y); zlabel(bfit x);