第六章 matlab数值计算.ppt
《第六章 matlab数值计算.ppt》由会员分享,可在线阅读,更多相关《第六章 matlab数值计算.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Matlab 仿真及其应用主讲:陈孝敬e-mail:主要内容:主要内容:多项式运算;多项式运算;插值运算;插值运算;数据分析;数据分析;微分方程组数值解;微分方程组数值解;第第6 6章章 数值计算数值计算6.16.1多项式运算多项式运算1 1多项式表示法多项式表示法matlabmatlab语言把多项式表达成一个行向量,语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。该向量中的元素是按多项式降幂排列的。f(x)=af(x)=an nx xn n+a+an-1n-1x xn-1n-1+a+a0 0 可用行向量可用行向量 p=ap=an n a an-1n-1 a a1 1+a+a
2、0 0 表示表示 poly poly 产生特征多项式系数向量产生特征多项式系数向量 特征多项式一定是特征多项式一定是n+1n+1维的维的 特征多项式第一个元素一定是特征多项式第一个元素一定是1 1例例6-16-1:a a=1 2 3;4 5 6;7 8 0;=1 2 3;4 5 6;7 8 0;p=poly(a)p=poly(a)p=1.00 -6.00 -72.00 -27.00p=1.00 -6.00 -72.00 -27.00p p是多项式是多项式p(x)=xp(x)=x3 3-6x-6x2 2-72x-27-72x-27的的MatlabMatlab描述方法,我们描述方法,我们可用:可用
3、:p1=poly2str(p,p1=poly2str(p,x x)函数文件,显示函数文件,显示数学多项式的形式数学多项式的形式p1=x3-6 x2-72 x p1=x3-6 x2-72 x 27 272 2多项式求值多项式求值MatlabMatlab用用polyval()polyval()来计算多项式的值来计算多项式的值y=polyval(p,x),py=polyval(p,x),p为多项式系数行向量,为多项式系数行向量,x x代入多项式的值。代入多项式的值。Y=polyvalm(p,X),Y=polyvalm(p,X),把矩阵把矩阵X X代入多项式代入多项式p p中进行计算,其中矩阵中进行计
4、算,其中矩阵X X必须是方阵。必须是方阵。例例6-26-2:p:p=2=2 2 2 3;3;A=1 0;0 2;A=1 0;0 2;r_a=polyval(p,A);r_a=polyval(p,A);r_b=polyvalm(p,A)r_b=polyvalm(p,A)2 2多项式乘法和除法多项式乘法和除法在在MatlabMatlab中用函数中用函数conv()conv()和和deconv()deconv()进行多项式乘法和除法。进行多项式乘法和除法。例例6-36-3:p1p1=1=1 2 2 3;3;p2=6 0 0 3 3 4;p2=6 0 0 3 3 4;w=conv(p1,p2);w=c
5、onv(p1,p2);q,r=deconv(p2,p1);q,r=deconv(p2,p1);sq=poly2str(q,sq=poly2str(q,x x););sr=poly2str(r,sr=poly2str(r,x x););3 3多项式的微积分多项式的微积分在在MatlabMatlab中用函数中用函数polyder()polyder()来计算多项式的微分。来计算多项式的微分。用函数用函数polyint()polyint()返回多项式的不定积分返回多项式的不定积分例例6-46-4:p1:p1=1=1 2 2 3;3;p2=6 0 0 3 3 4;p2=6 0 0 3 3 4;k1=po
6、lyder(p1);k1=polyder(p1);k2=polyder(p1,p2);k2=polyder(p1,p2);k3,k4=polyder(p2,p1);k3,k4=polyder(p2,p1);sq=poly2str(k3,sq=poly2str(k3,x x););sr=poly2str(k4,sr=poly2str(k4,x x););例例6-56-5:p p=1=1 2 2 3;3;k1=ployint(p1);k1=ployint(p1);k2=ployint(p1,2);k2=ployint(p1,2);3 3多项式的微积分多项式的微积分在在MatlabMatlab中用函
7、数中用函数polyder()polyder()来计算多项式的微分。来计算多项式的微分。用函数用函数polyint()polyint()返回多项式的不定积分返回多项式的不定积分4.roots 求多项式的根求多项式的根例例6-66-6:a=1 2 3;4 5 6;7 8 0;p=poly(a)p=1.00 -6.00 -72.00 -27.00r=roots(p)r=12.12 -5.73 显然显然 r是矩阵是矩阵a的特征值的特征值 -0.39 例例6-76-7:用函数用函数roots()来计算多项式()来计算多项式x5+x4-8x3-6x2+8x+24的根的根p=1 1-8-6 8 24;sp=
8、poly2str(p,x);r=roots(p)例例6-8 由根由根-2 2 1创建多项式。创建多项式。r=-2 2 1;p=poly(r);sp=poly2str(p,x);由根创建多项式由根创建多项式,在在Matlab中用函数中用函数poly()实现实现5.多项式曲线拟合多项式曲线拟合在在Matlab中用函数中用函数polyfit实现采用最小二乘法对给定数据实现采用最小二乘法对给定数据进行多显示拟合,进行多显示拟合,p=ployfit(x,y,n),采用,采用n次多项式次多项式p来拟来拟合数据线合数据线x和和y。例例6-9 用函数用函数polyfit()对给定数据进行多项式拟合。对给定数据
9、进行多项式拟合。x=0:0.2:10;y=0.25*x+20*sin(x);%5阶多项式拟合阶多项式拟合p1=polyfit(x,y,5);y1=polyval(p1,x);%8阶多项式拟合阶多项式拟合p2=polyfit(x,y,8);y2=polyval(p2,x);hold on plot(x,y,ro);plot(x,y1,r-);plot(x,y2,b:);xlabel(x);ylabel(y);legend(原始数据原始数据,5阶多项式拟合阶多项式拟合,8阶多项式拟合阶多项式拟合);6.26.2 插值运算插值运算插值是根据已知输入插值是根据已知输入/输出数据集和当前输入估计输出值,
10、输出数据集和当前输入估计输出值,其中,当前输入应在已知数据集内。在信号和图像处理其中,当前输入应在已知数据集内。在信号和图像处理中是经常用到的。中是经常用到的。Matlab提供了一维、二维、提供了一维、二维、三次样条等许多插值选择三次样条等许多插值选择插值方法Matlab函数插值方法Matlab函数一维插值interp1使用FFT方法的一维插值interpft快速一维插值interpq分段三次Hermite插值pchip二维插值interp2三次样条插值spline三维插值interp3N维插值interpn6.2.16.2.1 一维插值一维插值一维插值原理请参照一维插值原理请参照P115,在
11、,在Matlab中用中用interp1()来实来实现一维插值。现一维插值。调用格式:调用格式:yiyiinterp1(x,y,xi)interp1(x,y,xi)已知数据向量(已知数据向量(x,yx,y),计算并返),计算并返回在插值向量回在插值向量xixi处的函数值处的函数值yi=interp1(x,y,xi,yi=interp1(x,y,xi,methodmethod)yi=interp1(x,y,xi,yi=interp1(x,y,xi,methodmethod,extrapextrap)methodmethod用于指定插值算法,其值可以是:用于指定插值算法,其值可以是:nearestn
12、earest最近插值最近插值linearlinear线性插值(默认值)线性插值(默认值)splinespline分段三次样条插值分段三次样条插值pchippchip分段三次分段三次HermiteHermite插值插值cubiccubic与与pchippchip相同相同一维插值一维插值方法比较方法比较例例6-10 用不同插值法对数据进行一维插值用不同插值法对数据进行一维插值x=0:1:10;x=0:1:10;y=0 0.8415 0.9093 0.1411 -0.7568-0.9589-0.2794 0.657 y=0 0.8415 0.9093 0.1411 -0.7568-0.9589-0.
13、2794 0.657 0.9894 0.4121 -0.5440;0.9894 0.4121 -0.5440;plot(x,y,co),hold onplot(x,y,co),hold onfplot(sin,0 10)fplot(sin,0 10)xi=0:0.15:10;xi=0:0.15:10;yi=interp1(x,y,xi);yi=interp1(x,y,xi);figure,plot(xi,yi,r+),text(0.7028,0.4649,figure,plot(xi,yi,r+),text(0.7028,0.4649,线性插值线性插值rightarrow)rightarrow
14、)yi2=interp1(x,y,xi,nearst);yi2=interp1(x,y,xi,nearst);figure,plot(xi,yi2,c*),text(3.537,0.1374,leftarrowfigure,plot(xi,yi2,c*),text(3.537,0.1374,leftarrow最近插值最近插值)yi3=interp1(x,y,xi,cubic);yi3=interp1(x,y,xi,cubic);plot(xi,yi3,md),text(2.408,0.8333,leftarrowplot(xi,yi3,md),text(2.408,0.8333,leftarr
15、ow三次插值三次插值)yi4=interp1(x,y,xi,spline);yi4=interp1(x,y,xi,spline);figure,plot(xi,yi4,kh),text(4.62,0.8158,figure,plot(xi,yi4,kh),text(4.62,0.8158,三次样条插值三次样条插值rightarrow)rightarrow)初始数据对于插值的影响初始数据对于插值的影响x=0:2:10;y=sin(x);plot(x,y,go),hold onezplot(sin,0 10)xi=0:0.15:10;yi=interp1(x,y,xi);figure,plot(x
16、i,yi,r+),text(0.5876,0.2537,leftarrow线性插值线性插值)yi2=interp1(x,y,xi,nearst);figure,plot(xi,yi2,c*),text(6.947,-0.258,leftarrow最近插值最近插值)yi3=interp1(x,y,xi,pchip);figure,plot(xi,yi3,md),text(2.408,0.8333,leftarrow三次插值三次插值)yi4=interp1(x,y,xi,spline);figure,plot(xi,yi4,kh),text(1.601,1.138,leftarrow三次样条插值三
17、次样条插值)函数函数spline与与pchipspline()的调用格式为:的调用格式为:yi=spline(x,y,xi)此函数等同于此函数等同于yi=interp1(x,y,xi,spline)pp=spline(x,y)返回三次样条插值的分段多项式形式的向量返回三次样条插值的分段多项式形式的向量spline函数可以保证插值函数的三阶导数连续函数可以保证插值函数的三阶导数连续pchip()的调用格式为:的调用格式为:yi=pchip(x,y,xi)此函数等同于此函数等同于yi=interp1(x,y,xi,pchip)pp=pchip(x,y)返回三次样条插值的分段多项式形式的向量返回三次
18、样条插值的分段多项式形式的向量函数函数pchip与与spline的区别的区别pchip与与spline的区别:三次样条在相邻的节点上并不保证单的区别:三次样条在相邻的节点上并不保证单调性;而调性;而Hermite分段三次样条则可保证插值的局部单调性分段三次样条则可保证插值的局部单调性例例6-11 利用点利用点(x=sin(k/6),y=cos(k/6),其中,其中k=0 1 2 3来逼来逼近单位圆的前四分之一圆周。比较近单位圆的前四分之一圆周。比较pchip与与spline的差别。的差别。t=linspace(0,pi/2,4)x=cos(t);y=sin(t);xx=linspace(0,1
19、,40);plot(x,y,s,xx,pchip(x,y,xx);spline(x,y,xx)grid on,axis equallegend(Orignal data,spline,pchip)6.2.26.2.2 二维插值二维插值Matlab 中用中用interp2函数实现函数实现调用格式:调用格式:zi=interp2(x,y,z,xi,yi,method)method算法属性值可以是;算法属性值可以是;nearest最近插值最近插值linear线性插值(默认)线性插值(默认)spline三次样条插值三次样条插值(spline)cubic立方插值立方插值例例6-12 假设有一组分度系数的
20、假设有一组分度系数的“海底深度测量数据海底深度测量数据”,由以,由以下一段程序生成:下一段程序生成:randn(state,2);x=-5:5;y=-5:5;X,Y=meshgrid(x,y);Z=-500+1.2*exp(-(X-1).2+(Y-2).2)-0.7*exp(-(exp(X+2).2+(Y+1).2);surf(X,Y,Z),view(-25,25)试由插值方式绘制海底形状图。试由插值方式绘制海底形状图。xi=linspace(-5,5,50);yi=linspace(-5,5,50);XI,YI=meshgrid(xi,yi);ZI=interp2(X,Y,Z,XI,YI,*
21、cubic);surf(XI,YI,ZI)view(-25,25)例例6-13 不同插值方法对数据进行二维插值:不同插值方法对数据进行二维插值:x,y=meshgrid(-3:0.8:3);z=peaks(x,y);xi,yi=meshgrid(-1:0.25:3);zi_nearest=interp2(x,y,z,xi,yi,nearset);zi_linear=interp2(x,y,z,xi,yi);zi_spline=interp2(x,y,z,xi,yi,spline);figure;hold on;subplot(2,2,1);meshc(x,y,z);title(原始数据原始数据
22、);subplot(2,2,2);meshc(xi,yi,zi_nearest);title(最邻近插值最邻近插值);subplot(2,2,3);meshc(xi,yi,zi_linear);title(线性插值线性插值);subplot(2,2,4);meshc(xi,yi,zi_spline);title(三次样条插值三次样条插值);6.36.3 数据分析数据分析6.3.1 基本数据分析函数请参照基本数据分析函数请参照P118-119表表6-3例例6-14 应用求最大值、最小值、平均值、中间值、元素和等应用求最大值、最小值、平均值、中间值、元素和等函数。函数。x=1:40;y=randn
23、(1,40);figure;hold on;plot(x,y);y_max,I_max=max(y);plot(x(I_max),y_max,o);y_min,I_min=min(y);plot(x(I_min),y_min,*);xlabel(x);xlabel(y);legend(原始数据原始数据,最大值最大值,最小值最小值);y_mean=mean(y);y_median=median(y);y_sum=sum(y);例例6-15 计算向量的标准差和方差计算向量的标准差和方差x=1:10;mean_x=mean(x);r=0;for i=1:10 r=r+(x(i)-mean_x)2;e
24、ndr1=sqrt(r/10)r2=sqrt(r/9)r3=std(x);r4=r1*2r5=r22r6=var(x)r7=var(x,1)例例6-16 对向量排序对向量排序a=4 7-5;b=1 0-5 10-6;p=roots(a);b,c=sort(a)b,c=sort(p)例例6-17 对字符串排序对字符串排序a=hello;world;hally;clayt;Daney;b=sortrows(a)%字符串首先按第一个字母排序;若第一个字字符串首先按第一个字母排序;若第一个字%符相同,再按第二个字符排序,以此类推符相同,再按第二个字符排序,以此类推c=sortrows(a,2)%字符串
25、首先按第二个字母排序;若第二字符串首先按第二个字母排序;若第二%个字个字%符相同,再按第三个字符排序,以此类推符相同,再按第三个字符排序,以此类推例例6-18 计算随机变量样本的协方差和相关系数矩阵计算随机变量样本的协方差和相关系数矩阵a=rand(10,4);c1=cov(x);c2=cov(x,1);c3=corrcoef(x);6.3.2 协方差和相关系数矩阵协方差和相关系数矩阵若给定若给定n个个m维随机变量样维随机变量样 ,定义如下矩,定义如下矩阵为其协方差矩阵:阵为其协方差矩阵:其中,其中,同时定义,同时定义矩阵为相关系数矩阵矩阵为相关系数矩阵 其中其中6.3.3 有限差分和梯度有限
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六章 matlab数值计算 第六 matlab 数值 计算
限制150内