第四章 MATLAB程序设计数值运算基础.ppt

上传人:s****8 文档编号:67639237 上传时间:2022-12-26 格式:PPT 页数:54 大小:356KB
返回 下载 相关 举报
第四章 MATLAB程序设计数值运算基础.ppt_第1页
第1页 / 共54页
第四章 MATLAB程序设计数值运算基础.ppt_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《第四章 MATLAB程序设计数值运算基础.ppt》由会员分享,可在线阅读,更多相关《第四章 MATLAB程序设计数值运算基础.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第四章第四章 数值计算基础数值计算基础1 1第四章第四章 数值计算基础数值计算基础n n4.1 4.1 多项式多项式n n4.24.2求解线性方程组的求解线性方程组的n n4.3 4.3 差分、梯度差分、梯度n n4.4 4.4 插值和拟合等。插值和拟合等。n n4.5 4.5 基本数学函数基本数学函数2 24.1 多项式多项式n nMatlabMatlab用行向量表示多项式,行向量由多项用行向量表示多项式,行向量由多项式系数按降幂排列组成。例如,多项式式系数按降幂排列组成。例如,多项式n n可以用它的长度为可以用它的长度为n+1n+1的系数行向量表示:的系数行向量表示:n n注意:注意:注意

2、:注意:系数行向量中元素的排列顺序必须是系数行向量中元素的排列顺序必须是从高次幂系数到低次幂系数,多项式中缺少从高次幂系数到低次幂系数,多项式中缺少的幂次要用的幂次要用0 0补齐。补齐。3 3 1 1 1 1、系数矢量的直接输入法、系数矢量的直接输入法、系数矢量的直接输入法、系数矢量的直接输入法:由由由由于于于于在在在在MATLABMATLAB中中中中的的的的多多多多项项项项式式式式是是是是以以以以向向向向量量量量形形形形式式式式储储储储存存存存的的的的,因因因因此此此此,创创创创建建建建多多多多项项项项式式式式的的的的最最最最简简简简单单单单的的的的方方方方法法法法即即即即为为为为直直直直接

3、接接接输输输输入入入入多多多多项项项项式式式式的的的的系系系系数数数数行行行行向向向向量量量量,MATLABMATLAB自自自自动动动动将将将将向向向向量量量量元元元元素素素素按按按按降降降降幂幂幂幂顺顺顺顺序序序序分分分分配配配配给给给给各各各各系系系系数数数数值值值值。为为为为了了了了查查查查看看看看方方方方便便便便,可可可可利利利利用用用用转转转转换换换换函函函函数数数数poly2sympoly2sym,将将将将多多多多项式由系数行向量形式,转换为符号形式。项式由系数行向量形式,转换为符号形式。项式由系数行向量形式,转换为符号形式。项式由系数行向量形式,转换为符号形式。4.1.1 多项式

4、的创建多项式的创建4 44.1.1 多项式的创建多项式的创建例4-1 输入系数矢量,创建多项式n npoly2sym(1,-5,6,-33)n nans=x3-5*x2+6*x-335 54.1.1 多项式的创建多项式的创建2 2 2 2、通过矩阵的特征多项式来创建多项式、通过矩阵的特征多项式来创建多项式、通过矩阵的特征多项式来创建多项式、通过矩阵的特征多项式来创建多项式n n可以通过求矩阵的特征多项式,来创建多项可以通过求矩阵的特征多项式,来创建多项式,由函数式,由函数polypoly实现。调用格式为:实现。调用格式为:n np=poly(A)p=poly(A):求矩阵:求矩阵A A的特征多

5、项式系数,要的特征多项式系数,要求输入参数求输入参数A A是是nnnn的方阵,输出参数的方阵,输出参数p p是包是包含含n+1n+1个元素的行向量,是个元素的行向量,是A A的特征多项式系的特征多项式系数向量。数向量。6 64.1.1 多项式的创建多项式的创建例例4-2 4-2 求矩阵的特征多项式。求矩阵的特征多项式。n n A=1 2 3;4,5,6;7,8,0;A=1 2 3;4,5,6;7,8,0;n n p=poly(A)p=poly(A)n np=p=1.0000 -6.0000 -72.0000 -27.0000 1.0000 -6.0000 -72.0000 -27.0000n

6、n poly2sym(p)poly2sym(p)n nans=ans=x3-6*x2-72*x-27 x3-6*x2-72*x-277 74.1.1 多项式的创建多项式的创建3 3、由根矢量创建多项式、由根矢量创建多项式n n由给定的多项式方程的根矢量创建该多项式,由给定的多项式方程的根矢量创建该多项式,用用polypoly函数实现。调用格式为:函数实现。调用格式为:n np=poly(r)p=poly(r):返回一个行向量,该行向量是以:返回一个行向量,该行向量是以r r为根的多项式系数向量。为根的多项式系数向量。8 84.1.1 多项式的创建多项式的创建例例4-3 4-3 由根矢量由根矢量

7、-5-3 4-5-3 4创建多项式。创建多项式。r=-5-3 4 r=-5-3 4p=poly(r)p=poly(r)p=p=1 4 -17 -60 1 4 -17 -60 poly2sym(p)poly2sym(p)ans=ans=x3+4*x2-17*x-60 x3+4*x2-17*x-60 9 94.1.1 多项式的创建多项式的创建由给定根矢量创建多项式时应注意由给定根矢量创建多项式时应注意:(1 1)如果希望生成实系数多项式,则根矢量的)如果希望生成实系数多项式,则根矢量的复数根必须共轭成对。复数根必须共轭成对。(2 2)有时生成的多项式向量包含很小的虚部,)有时生成的多项式向量包含很

8、小的虚部,可用可用realreal命令将其滤掉。命令将其滤掉。10104.1.1 多项式的创建多项式的创建例例4-4 4-4 根据根矢量根据根矢量r=-1+2i,-1-2i,0.2r=-1+2i,-1-2i,0.2创建多项式创建多项式 r=-1+2i,-1-2i,0.2 r=-1+2i,-1-2i,0.2r=r=-1.0000+2.0000i -1.0000-2.0000i 0.2000 -1.0000+2.0000i -1.0000-2.0000i 0.2000 p=poly(r)p=poly(r)%求多项式系数矢量求多项式系数矢量求多项式系数矢量求多项式系数矢量p=p=1.0000 1.8

9、000 4.6000 -1.0000 1.0000 1.8000 4.6000 -1.0000 pr=real(p)pr=real(p)%取实部取实部取实部取实部pr=pr=1.0000 1.8000 4.6000 -1.0000 1.0000 1.8000 4.6000 -1.0000 poly2sym(pr)poly2sym(pr)ans=ans=x3+9/5*x2+23/5*x-1 x3+9/5*x2+23/5*x-1 11114.1.2 多项式运算多项式运算1 1、求多项式的值、求多项式的值n n求多项式的值可以有两种形式,对应两种算求多项式的值可以有两种形式,对应两种算法:法:(1

10、1)在输入变量值代入多项式计算时,以数量)在输入变量值代入多项式计算时,以数量或矩阵中每个元素为计算单元的,对应函数或矩阵中每个元素为计算单元的,对应函数为为polyval;polyval;(2 2)以矩阵为计算单元的,进行矩阵式运算来)以矩阵为计算单元的,进行矩阵式运算来求得多项式的值,对应函数为求得多项式的值,对应函数为polyvalmpolyvalm。12124.1.2 多项式运算多项式运算调用格式为:调用格式为:n npolyval(p,x)polyval(p,x):求多项式:求多项式p p在在x x点的值,点的值,x x可以是可以是数量或矩阵,数量或矩阵,x x是矩阵时,表示求多项式

11、是矩阵时,表示求多项式p p在在x x中各元素的值。中各元素的值。n npolyvalm(p,x)polyvalm(p,x):求多项式:求多项式p p对于矩阵对于矩阵x x的值,的值,x x可以是数量或矩阵。可以是数量或矩阵。x x如果是数量,求得的值如果是数量,求得的值与函数与函数polyvalpolyval相同,如果相同,如果x x是矩阵则必须是方是矩阵则必须是方阵。阵。13134.1.2 多项式运算多项式运算n n例例4-5 4-5 求多项式求多项式 在在2 2,4 4,6 6,8 8处的值,对于矩阵处的值,对于矩阵 的值,及在矩阵中各元素处的值。的值,及在矩阵中各元素处的值。14144

12、.1.2 多项式运算多项式运算n n通过上例可以得出:设通过上例可以得出:设A A为方阵,为方阵,P P代表多项代表多项式,则,式,则,n npolyval(P,A):A.3-5*A.2+8*ones(size(A)polyval(P,A):A.3-5*A.2+8*ones(size(A)n npolyvalm(P,A):A3-5*A2+8*eye(size(A)polyvalm(P,A):A3-5*A2+8*eye(size(A)15154.1.2 多项式运算多项式运算2 2、求多项式的根、求多项式的根 可以直接调用可以直接调用MATLABMATLAB的函数的函数rootsroots,求解多

13、,求解多项式的所有根。项式的所有根。调用形式为:调用形式为:R=roots(C)R=roots(C)其中输入参数其中输入参数C C是多项式系数行是多项式系数行向量,输出参数向量,输出参数R R是多项式的根,一般用列向是多项式的根,一般用列向量表示。量表示。16164.1.2 多项式运算多项式运算例例4-6 4-6 求出多项式求出多项式 的根的根 a=1 2-5-6;a=1 2-5-6;r=roots(a)r=roots(a)r=r=2.0000 2.0000 -3.0000 -3.0000 -1.0000 -1.0000 poly(r)poly(r)ans=ans=1.0000 2.0000

14、-5.0000 -6.0000 1.0000 2.0000 -5.0000 -6.000017174.1.2 多项式运算多项式运算3 3、多项式的乘除法运算、多项式的乘除法运算、多项式的乘除法运算、多项式的乘除法运算n n多项式的乘法和除法实质就是多项式系数向量的卷积多项式的乘法和除法实质就是多项式系数向量的卷积和解卷运算。和解卷运算。n n乘法:乘法:c=conv(a,b)c=conv(a,b)求多项式求多项式a a和和b b的乘法,如果向的乘法,如果向量量a a的长度为的长度为mm,b b的长度为的长度为n n,则,则c c的长度为的长度为m+n-1m+n-1。n n多项式的除法用函数多项

15、式的除法用函数deconvdeconv实现,此函数也是向量实现,此函数也是向量的卷积函数的逆函数。的卷积函数的逆函数。n nb,r=deconv(c,a)b,r=deconv(c,a)向量向量a a对向量对向量c c进行解卷,得到进行解卷,得到商向量商向量b b和余量和余量r r。18184.1.2 多项式运算多项式运算例例4-7 4-7(1 1)求两多项式的乘积)求两多项式的乘积 (2 2)求上述结果被)求上述结果被 除所得的结果。除所得的结果。a=3-3 4-1 2;a=3-3 4-1 2;b=2-1 1 2;b=2-1 1 2;c=conv(a,b)c=conv(a,b)c=c=6 -9

16、 14 -3 3 5 0 4 6 -9 14 -3 3 5 0 4 d,r=deconv(c,b)d,r=deconv(c,b)d=d=3 -3 4 -1 2 3 -3 4 -1 2r=r=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 019194.1.2 多项式运算多项式运算4 4、多项式的微积分、多项式的微积分、多项式的微积分、多项式的微积分n nMatlabMatlab中多项式的微分函数为中多项式的微分函数为polyderpolyder,多项,多项式的积分函数为式的积分函数为polyintpolyint。两个函数的调用格。两个函数的调用格式为:式为:n npolyder(a

17、)polyder(a)求系数行向量为求系数行向量为a a的多项式的微分。的多项式的微分。n npolyint(a)polyint(a)求系数行向量为求系数行向量为a a的多项式的积分。的多项式的积分。20204.1.2 多项式运算多项式运算例例4-8 4-8(1 1)求多项式)求多项式 的微分。的微分。(2 2)将上述结果求积分。)将上述结果求积分。a=1-5 3-6 4-10;a=1-5 3-6 4-10;d=polyder(a)d=polyder(a)d=d=5 -20 9 -12 4 5 -20 9 -12 4 poly2sym(d)poly2sym(d)ans=ans=5*x4-20*

18、x3+9*x2-12*x+45*x4-20*x3+9*x2-12*x+4 polyint(d)polyint(d)ans=ans=1 -5 3 -6 4 0 1 -5 3 -6 4 02121 n n5 5、多项式的部分分式展开、多项式的部分分式展开:对对对对于于于于多多多多项项项项式式式式b(x)b(x)和和和和不不不不含含含含重重重重根根根根的的的的n n阶阶阶阶多多多多项项项项式式式式a(x)a(x)之比,有如下展开:之比,有如下展开:之比,有如下展开:之比,有如下展开:式中式中式中式中 称为极点称为极点称为极点称为极点(Poles),(Poles),称称称称为为为为留留留留数数数数(R

19、esidue)(Residue),k(x)k(x)称称称称为为为为直直直直项项项项(Direct(Direct term)term)。4.1.2 多项式运算多项式运算2222n n假如假如假如假如a(xa(x)有有有有mm重根重根重根重根p(jp(j)=p(j+m-1)=p(j+m-1),则相,则相,则相,则相应部分写成:应部分写成:应部分写成:应部分写成:4.1.2 多项式运算多项式运算2323 n n在在MALABMALAB中,两个多项式之比用部分分式展开中,两个多项式之比用部分分式展开的函数为的函数为residueresidue,有两种调用方法:,有两种调用方法:n nr,p,k=res

20、idue(b,a)r,p,k=residue(b,a)求多项式之比求多项式之比b(x)/a(x)b(x)/a(x)的部分分式展开,输出参数的部分分式展开,输出参数r r为留数,为留数,p p为极点为极点和和k k为直项。为直项。n nb,a=residue(r,p,k)b,a=residue(r,p,k)从部分分式得出多项式从部分分式得出多项式表达式表达式b(x)b(x)和和a(x)a(x)的系数向量,结果为对于表达的系数向量,结果为对于表达式分母的归一形式。式分母的归一形式。4.1.2 多项式运算多项式运算2424例例例例4-9 4-9 两个多项式的比为,两个多项式的比为,两个多项式的比为,

21、两个多项式的比为,求部分求部分求部分求部分分式展开,再用展开的结果转换回原来的两个分式展开,再用展开的结果转换回原来的两个分式展开,再用展开的结果转换回原来的两个分式展开,再用展开的结果转换回原来的两个多项式多项式多项式多项式 a=2,3,-4 a=2,3,-4 b=1,2 b=1,2 r,p,k=residue(b,a)r,p,k=residue(b,a)r=r=0.0548 0.0548 0.4452 0.4452p=p=-2.3508 -2.3508 0.8508 0.8508k=k=b,a=residue(r,p,k)b,a=residue(r,p,k)b=b=0.5000 1.000

22、0 0.5000 1.0000a=a=1.0000 1.5000 -2.0000 1.0000 1.5000 -2.000025254.1.2 多项式运算多项式运算6 6、多项式拟合、多项式拟合、多项式拟合、多项式拟合n nmatlabmatlab中多项式拟合的函数为中多项式拟合的函数为polyfit polyfit,其采用最,其采用最小二乘法对给定的数据进行多项式拟合,给出拟小二乘法对给定的数据进行多项式拟合,给出拟合的多项式系数。函数的调用方式为:合的多项式系数。函数的调用方式为:n np=polyfit(x,y,n)p=polyfit(x,y,n)应用最小二乘法求出应用最小二乘法求出n

23、n阶拟合多阶拟合多项式项式p(x)p(x)。即用。即用p(x)p(x)拟合拟合y(x)y(x)。x x、y y为数据的横为数据的横纵坐标向量,纵坐标向量,n n为拟合多项式的阶数,输出参数为拟合多项式的阶数,输出参数p p为多项式为多项式p(x)p(x)的系数向量。的系数向量。26264.1.2 多项式运算多项式运算例例4-10 x=1:10,4-10 x=1:10,求求y y(x x)的)的5 5阶拟合多项式。阶拟合多项式。x=1:10;x=1:10;y=sqrt(x)+3*cos(x);y=sqrt(x)+3*cos(x);p=polyfit(x,y,5)p=polyfit(x,y,5)p

24、=p=0.0074 -0.1737 1.3312 -3.3680 0.3459 0.0074 -0.1737 1.3312 -3.3680 0.3459 4.56064.5606%把原始数据点和拟合曲线绘制在同一个坐标系中,原始数把原始数据点和拟合曲线绘制在同一个坐标系中,原始数把原始数据点和拟合曲线绘制在同一个坐标系中,原始数把原始数据点和拟合曲线绘制在同一个坐标系中,原始数%据用据用据用据用“。”表表表表%示示示示(如图如图如图如图4-1)4-1)4-1)4-1)。plot(x,y,o,x,polyval(p,x),-)plot(x,y,o,x,polyval(p,x),-)%绘图函数用法

25、在第绘图函数用法在第绘图函数用法在第绘图函数用法在第6 6 6 6章介绍章介绍章介绍章介绍27274.2 求解线性方程组求解线性方程组 4.2.1 4.2.1 齐次线性方程组的解法齐次线性方程组的解法齐次线性方程组的解法齐次线性方程组的解法n n对于齐次线性方程组对于齐次线性方程组AX=0AX=0而言,可以通过求系而言,可以通过求系数矩阵数矩阵A A的秩来判断解的情况:的秩来判断解的情况:1 1、如果系数矩阵的秩、如果系数矩阵的秩=n=n(方程组中未知数的个(方程组中未知数的个数),则方程组只有零解。数),则方程组只有零解。2 2、如果系数矩阵的秩、如果系数矩阵的秩nn,则方程组有无穷多解。,

26、则方程组有无穷多解。n n可以利用可以利用MATLABMATLAB函数函数null(A)null(A),求它的一个基本,求它的一个基本解。解。28284.2.1 齐次线性方程组的解法齐次线性方程组的解法例例4-11 4-11 用用matlab matlab 求解方程组求解方程组 A=1 1 1 1-3-1 1;1 0 0 0 1 1 0;-2 0 0-1 0-1-2;A=1 1 1 1-3-1 1;1 0 0 0 1 1 0;-2 0 0-1 0-1-2;r=rank(A);%r=rank(A);%求矩阵求矩阵A A的秩的秩x=null(A,r)x=null(A,r)得到解为得到解为:x=x=

27、-0.2555 0.0565 -0.3961 -0.3138 -0.2555 0.0565 -0.3961 -0.3138 -0.0215 0.7040 0.5428 0.0967 -0.0215 0.7040 0.5428 0.0967 0.2218 -0.1603 -0.2941 0.7991 0.2218 -0.1603 -0.2941 0.7991 0.8915 0.0717 -0.0151 -0.2386 0.8915 0.0717 -0.0151 -0.2386 0.1752 0.4429 -0.2353 0.2039 0.1752 0.4429 -0.2353 0.2039 0.

28、0803 -0.4994 0.6314 0.1099 0.0803 -0.4994 0.6314 0.1099 -0.2304 0.1573 0.0879 0.3781 -0.2304 0.1573 0.0879 0.3781 x x的列向量为的列向量为Ax=0Ax=0的一个基本解。的一个基本解。29294.2.2 非齐次线性方程组的解法非齐次线性方程组的解法n n对于非齐次线性方程组对于非齐次线性方程组AX=bAX=b而言,则要根据系数矩而言,则要根据系数矩阵阵A A的秩和增广矩阵的秩和增广矩阵B=A bB=A b的秩和未知数个数的秩和未知数个数n n的关的关系,才能判断方程组系,才能判断方

29、程组AX=bAX=b的解的情况。的解的情况。(1 1)如果系数矩阵的秩)如果系数矩阵的秩=增广矩阵的秩增广矩阵的秩=n=n,则方程组,则方程组有唯一解。有唯一解。(2 2)如果系数矩阵的秩)如果系数矩阵的秩=增广矩阵的秩增广矩阵的秩nn,则方程组,则方程组有无穷多解。有无穷多解。(3 3)如果系数矩阵的秩)如果系数矩阵的秩 nmn),欠定方程组(),欠定方程组(mnmn,mn,超定方程组,可以尝试计算最小二乘解;超定方程组,可以尝试计算最小二乘解;(3 3)mnmnAx=b,mn时。时。时。时。方程解方程解方程解方程解 (A (A A)xA)x=A b =A b x=(A x=(A A)A)-

30、1-1 A b A b 求逆法求逆法求逆法求逆法 x=Ab x=Ab matlabmatlab用最小二乘法找一用最小二乘法找一用最小二乘法找一用最小二乘法找一 个准确地基本解。个准确地基本解。个准确地基本解。个准确地基本解。4.2.2 非齐次线性方程组的解法非齐次线性方程组的解法3535 n n超定方程组的求特解超定方程组的求特解 例:x1+2x2=1 2x1+3x2=2 3x1+4x2=3解1 x=ab 解2 x=inv(aa)a b x=x=1.00 1.00 0 0.00 a*x =b =4.2.2 非齐次线性方程组的解法非齐次线性方程组的解法36363 3 3 3、欠定方程组的求特解、

31、欠定方程组的求特解、欠定方程组的求特解、欠定方程组的求特解当方程数少于未知量个数时(当方程数少于未知量个数时(mnmn),有无穷多有无穷多个解存在。个解存在。matlabmatlab可求出两个解:可求出两个解:n n用除法求的解用除法求的解x x是具有最多零元素的解是具有最多零元素的解n n基于伪逆基于伪逆pinvpinv求得的是具有最小长度或范数的解。求得的是具有最小长度或范数的解。4.2.2 非齐次线性方程组的解法非齐次线性方程组的解法3737 n n欠定方程组的求特解欠定方程组的求特解 x1+2x2+3x3=1 2x1+3x2+4x3=2x=ab x=pinv(a)b x=x=1.00

32、0.83 0 0.33 0 -0.174.2.2 非齐次线性方程组的解法非齐次线性方程组的解法3838例例4-12 求方程组的解。求方程组的解。在在在在MatlabMatlab中建立中建立中建立中建立MM文件如下文件如下文件如下文件如下clear allclear allA=1 1 1 1-3-1 1;1 0 0 0 1 1 0;-2 0 0-1 0-1-2;A=1 1 1 1-3-1 1;1 0 0 0 1 1 0;-2 0 0-1 0-1-2;b=1,0,1;b=1,0,1;%输入矩阵输入矩阵输入矩阵输入矩阵A,bA,bA,bA,bm,n=size(A);m,n=size(A);R=ran

33、k(A);R=rank(A);B=A b;B=A b;Rr=rank(B);Rr=rank(B);%format rat%format rat if R=Rr&R=n if R=Rr&R=n%n%n%n%n为未知数的个数,判断是否有唯一解为未知数的个数,判断是否有唯一解为未知数的个数,判断是否有唯一解为未知数的个数,判断是否有唯一解x=Ab;x=Ab;elseif R=Rr&Rn elseif R=Rr&R A=1,2,3,4;A=1,2,3,4;n n diff(A)diff(A)n nans=ans=n n 1 1 1 1 1 1n n B(:,:,1)=1,2;3,4;B(:,:,1)=

34、1,2;3,4;n n B(:,:,2)=5,6;7,8;B(:,:,2)=5,6;7,8;n n diff(B,1,2)diff(B,1,2)n nans(:,:,1)=ans(:,:,1)=n n 1 1n n 1 1n nans(:,:,2)=ans(:,:,2)=n n 1 1n n 1 1n n diff(B,1,3)diff(B,1,3)n nans=ans=n n 4 44 4n n 4 4 4 441414.3.2 数值梯度数值梯度n n在在matlabmatlab中求数值梯度的函数是中求数值梯度的函数是gradientgradient,该函数的,该函数的调用格式为:调用格式为

35、:n nFx,Fy,Fz=gradient(F)Fx,Fy,Fz=gradient(F)如果如果F F是一维的,那么是一维的,那么只返回只返回F F的一维数值梯度的一维数值梯度FxFx即;如果即;如果F F是二维的,则是二维的,则返回返回FxFx和和FyFy即,分别对应矩阵的列方向和行方向,即,分别对应矩阵的列方向和行方向,依次类推。依次类推。n n=gradient(F,h1,h2,)=gradient(F,h1,h2,)指定指定n n个方向上相邻点个方向上相邻点之间的间距,如果不指定,缺省值为之间的间距,如果不指定,缺省值为1 1。42424.3.2 数值梯度数值梯度如:如:A=round

36、(10*rand(3,4)%roundA=round(10*rand(3,4)%round为四舍五入函数为四舍五入函数A=A=2 9 5 6 2 9 5 6 7 9 9 8 7 9 9 8 4 6 8 7 4 6 8 7 Fx,Fy=gradient(A)Fx,Fy=gradient(A)Fx=Fx=7.0000 1.5000 -1.5000 1.0000 7.0000 1.5000 -1.5000 1.0000 2.0000 1.0000 -0.5000 -1.0000 2.0000 1.0000 -0.5000 -1.0000 2.0000 2.0000 0.5000 -1.0000 2.

37、0000 2.0000 0.5000 -1.0000Fy=Fy=5.0000 0 4.0000 2.0000 5.0000 0 4.0000 2.0000 1.0000 -1.5000 1.5000 0.5000 1.0000 -1.5000 1.5000 0.5000 -3.0000 -3.0000 -1.0000 -1.0000 -3.0000 -3.0000 -1.0000 -1.000043434.4 插值和拟合插值和拟合n n4.4.1 4.4.1 插值插值插值插值n n1 1、一维插值、一维插值n n一维插值就是对一维函数一维插值就是对一维函数y=f(x)y=f(x)的数据进行插值

38、,是的数据进行插值,是最常用的插值运算,一维插值函数是最常用的插值运算,一维插值函数是interp1interp1。n nyi=interp1(x,y,xi,method)yi=interp1(x,y,xi,method)输入参数输入参数x x为原始数据点为原始数据点的横坐标向量,的横坐标向量,y y为纵坐标向量或矩阵,为纵坐标向量或矩阵,methodmethod为插为插值方法选项。如果值方法选项。如果y y是矩阵,那么插值按照是矩阵,那么插值按照y y的列向量的列向量进行,返回值进行,返回值yi yi和矩阵和矩阵y y的列数相等,的列数相等,xi xi为插值点的横为插值点的横坐标,坐标,yi

39、 yi时在时在xi xi指定位置计算出的插值结果。指定位置计算出的插值结果。44444.4.1 插值插值n n一维插值有四种方法,分别是:一维插值有四种方法,分别是:n n(1 1)邻近点插值)邻近点插值(method=nearest)(method=nearest)将插值结果的值设置将插值结果的值设置为最近数据点的值为最近数据点的值n n(2 2)线性插值)线性插值(method=linear)(method=linear)在两个数据点之间连接直在两个数据点之间连接直线,根据给定的插值点计算出它们在直线上的值,作为插值结线,根据给定的插值点计算出它们在直线上的值,作为插值结果。缺省形式。果。

40、缺省形式。n n(3 3)三次样条插值)三次样条插值(method=spline)(method=spline)通过数据点拟合出三通过数据点拟合出三次样条曲线,根据给定的插值点计算出它们在曲线上的值,作次样条曲线,根据给定的插值点计算出它们在曲线上的值,作为插值结果。为插值结果。n n(4 4)立方插值)立方插值(method=pchip/cubic)(method=pchip/cubic)通过三次多项通过三次多项式计算插值结果。式计算插值结果。45454.4.1 插值插值n n由于在很多情况下,三次样条插值效果最好,由于在很多情况下,三次样条插值效果最好,matlab matlab 还专门提

41、供了三次样条插值函数还专门提供了三次样条插值函数yi=spline(x,y,xi)yi=spline(x,y,xi),其中输入、输出参数含义,其中输入、输出参数含义同上。同上。46464.4.1 插值插值例例4-13 4-13 一维插值函数插值方法的比较一维插值函数插值方法的比较一维插值函数插值方法的比较一维插值函数插值方法的比较 clearclearx=0:2*pi;y=cos(x);xi=0:0.1:2*pi;x=0:2*pi;y=cos(x);xi=0:0.1:2*pi;%将插值方法定义成将插值方法定义成 单元数组单元数组method=nearest,linear,spline,cubi

42、c lable=(a)method=nearest,linear,spline,cubic lable=(a)method=nearest,(b)method=linear,method=nearest,(b)method=linear,(c)method=spline,(b)method=cubic;(c)method=spline,(b)method=cubic;for i=1:4for i=1:4 yi=interp1(x,y,xi,methodi);yi=interp1(x,y,xi,methodi);%在一个图形窗口绘制在一个图形窗口绘制4 4幅图形幅图形 subplot(2,2,i

43、),plot(x,y,ro,xi,yi,b),xlabel(lablei)subplot(2,2,i),plot(x,y,ro,xi,yi,b),xlabel(lablei)endend47474.4.1 插值插值n n2 2、二维插值、二维插值n n二维插值与一维插值的基本思想相同,它是对两个自二维插值与一维插值的基本思想相同,它是对两个自变量的函数变量的函数z=f(x,y)z=f(x,y)进行插值。进行插值。n nmatlabmatlab中二维插值函数为中二维插值函数为interp2interp2,该函数的调用格,该函数的调用格式为:式为:n nzi=interp1(x,y,z,xi,yi

44、,method)zi=interp1(x,y,z,xi,yi,method)输入参数输入参数x x,y y为两个为两个向量,向量,z z是矩阵,是由是矩阵,是由x x和和y y确定的点的值确定的点的值z(i,:)=f(x,y(i)z(i,:)=f(x,y(i)和和z(:,j)=f(x(j),y)z(:,j)=f(x(j),y),methodmethod为插值方为插值方法选项。法选项。48484.4.1 插值插值n n二维插值有四种插值方法:二维插值有四种插值方法:(1 1)邻近点插值)邻近点插值(method=nearest)(method=nearest)(2 2)双线性插值)双线性插值(m

45、ethod=linear)(method=linear)该方法该方法是是interp2interp2的缺省插值形式。的缺省插值形式。(3 3)三次样条插值)三次样条插值(method=spline)(method=spline)(4 4)二重立方插值)二重立方插值(method=cubic)(method=cubic)49494.4.1 插值插值例例例例4-14 4-14 二维插值方法比较二维插值方法比较二维插值方法比较二维插值方法比较%二维插值方法比较二维插值方法比较二维插值方法比较二维插值方法比较clearclearx,y,z=peaks(6);x,y,z=peaks(6);%生成双峰函数

46、值生成双峰函数值生成双峰函数值生成双峰函数值surf(x,y,z)surf(x,y,z)%画出表面图画出表面图画出表面图画出表面图xi,yi=meshgrid(-3:0.2:3,-3:0.2:3);xi,yi=meshgrid(-3:0.2:3,-3:0.2:3);%生成供插值的数据生成供插值的数据生成供插值的数据生成供插值的数据z1=interp2(x,y,z,xi,yi,nearest);z1=interp2(x,y,z,xi,yi,nearest);z2=interp2(x,y,z,xi,yi,linear);z2=interp2(x,y,z,xi,yi,linear);z3=inter

47、p2(x,y,z,xi,yi,spline);z3=interp2(x,y,z,xi,yi,spline);z4=interp2(x,y,z,xi,yi,cubic);z4=interp2(x,y,z,xi,yi,cubic);figure,surf(xi,yi,z1),title(nearest)figure,surf(xi,yi,z1),title(nearest)%绘制邻近点插值的表面图绘制邻近点插值的表面图绘制邻近点插值的表面图绘制邻近点插值的表面图figure,surf(xi,yi,z2),title(linear)figure,surf(xi,yi,z2),title(linear

48、)%绘制双线性插值的表面图绘制双线性插值的表面图绘制双线性插值的表面图绘制双线性插值的表面图figure,surf(xi,yi,z3),title(spline)figure,surf(xi,yi,z3),title(spline)%绘制三次样条插值的表面图绘制三次样条插值的表面图绘制三次样条插值的表面图绘制三次样条插值的表面图figure,surf(xi,yi,z4),title(cubic)figure,surf(xi,yi,z4),title(cubic)%绘制二重立方插值的表面图绘制二重立方插值的表面图绘制二重立方插值的表面图绘制二重立方插值的表面图50504.4.2 拟合拟合n n多

49、项式拟合是多项式运算的一个重要组成部多项式拟合是多项式运算的一个重要组成部分。实现方法有两种:分。实现方法有两种:(1 1)用最小二乘法进行拟合的函数)用最小二乘法进行拟合的函数polyfitpolyfit(见(见4.1.24.1.2节)。节)。(2 2)通过求解超定方程组得到拟合曲线。)通过求解超定方程组得到拟合曲线。5151例例例例4-15 4-15 有一组测量数据如下表所示,假设已有一组测量数据如下表所示,假设已有一组测量数据如下表所示,假设已有一组测量数据如下表所示,假设已知该数据具有知该数据具有知该数据具有知该数据具有 的变化趋势,试求出的变化趋势,试求出的变化趋势,试求出的变化趋势

50、,试求出满足此数据的最小二乘解。满足此数据的最小二乘解。满足此数据的最小二乘解。满足此数据的最小二乘解。x=1x=1,1.51.5,2 2,2.52.5,3 3,3.53.5,4 4,4.54.5,5 5 y=-1.4y=-1.4,2.72.7,3 3,5.95.9,8.48.4,12.212.2,16.616.6,18.818.8,26.2 26.2 e=ones(size(x),x.2e=ones(size(x),x.2c=ey c=ey%解超定方程组求解超定方程组求解超定方程组求解超定方程组求c=c1,c2c=c1,c2c=c1,c2c=c1,c2x2=0:0.1:5;x2=0:0.1:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁