MATLAB数值计算-河南教育学院.ppt_第1页
MATLAB数值计算-河南教育学院.ppt_第2页
MATLAB数值计算-河南教育学院.ppt_第3页
MATLAB数值计算-河南教育学院.ppt_第4页
MATLAB数值计算-河南教育学院.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章 MATLAB 数值计算(2),MATLAB 7.X程序设计,2/47,4.4 多项式函数,4.4.1 多项式的表示 MATLAB中多项式的表示方法 :,例如:行向量 p=1 -12 0 25 116对应的多项式为:,MATLAB 7.X程序设计,3/47,4.4.2多项式的算术运算,1 加减运算,MATLAB 7.X程序设计,4/47,MATLAB 7.X程序设计,5/47,2 乘法运算,MATLAB支持多项式乘法,函数格式为: 函数conv(P1,P2) 求多项式P1和P2的乘积。 这里,P1,P2是两个多项式系数向量。,例 4-44 计算 c=conv(1 2 2,1 5 4) 执行结果如下: c = 1 7 16 18 8 由执行结果可知:,MATLAB 7.X程序设计,6/47,3 除法运算 Q,r=deconv(P1,P2) 对多项式P1和P2作除法运算。其中Q返回多项式P1除以P2的商式,r返回P1除以P2的余式。 注意deconv是conv的逆函数,即有P1=conv(P2,Q)+r。,MATLAB 7.X程序设计,7/47,例4-45 计算 Q=deconv(1 8 0 0 -10,2 -1 3) Q = 0.5000 4.2500 1.3750 Q,r=deconv(1 8 0 0 -10,2 -1 3) 执行结果如下: Q = 0.5000 4.2500 1.3750 r = 0 0 0 -11.3750 -14.1250 由执行结果可知商是: 余式是:,MATLAB 7.X程序设计,8/47,4.4.3 导函数,p=polyder(P) 求多项式P的导函数p p=polyder(P,Q) 求PQ的导函数p p,q=polyder(P,Q) 求P/Q的导函数,导函数的分子存入p,分母存入q。,MATLAB 7.X程序设计,9/47,例4-46 求的导数,p=3 -2 1;polyder(p) 执行结果为: ans = 6 -2 结果是,MATLAB 7.X程序设计,10/47,a=3 -2 1;b=4 5 6;polyder(a,b) 执行结果为: ans = 48 21 24 -7 结果是,例4-47 求的导数,MATLAB 7.X程序设计,11/47,例4-48 求 的导数。,a=3 -2 1;b=4 5 6; q,d=polyder(a,b) 执行结果为: q = 23 28 -17 d = 16 40 73 60 36,MATLAB 7.X程序设计,12/47,例4-49 求有理分式 的导数。,P=1;Q=1,0,5;p,q=polyder(P,Q) 执行结果为: p = -2 0 q = 1 0 10 0 25,MATLAB 7.X程序设计,13/47,4.4.4 多项式求根,x=roots(P) 其中P为多项式的系数向量,求得的根赋给向量x,即x(1),x(2),x(n)分别代表多项式的n个根。 给出一个多项式的根,可以构造相应的多项式。若已知多项式的全部根,则可以用poly函数建立起多项式,其调用格式为: P=poly(x) x为具有n个元素的向量,poly(x)为以x为其根的多项式,且将该多项式的系数赋给向量P。,MATLAB 7.X程序设计,14/47,例4-50 求多项式的 根,A=1,8,0,0,-10;x=roots(A) 执行结果如下: x = -8.0194 1.0344 -0.5075 + 0.9736i -0.5075 - 0.9736i 由结果可以看出,方程的根为两个实根和一对共轭复根,MATLAB 7.X程序设计,15/47,例4-51 求方程 的根。,r=1 -7 2 40; p=roots(r); 执行结果如下: p = 5.0000 4.0000 -2.0000 由结果可以看出,方程的根均为实根 5.000,4.0000和-2.0000。,MATLAB 7.X程序设计,16/47,例 4-52已知 (1) 计算 的全部根。 (2) 由方程 的根构造一个多项式 并与 进行对比。,P=3,0,4,-5,-7.2,5; X=roots(P) %求方程f(x)=0的根 G=poly(X) %求多项式G(x),MATLAB 7.X程序设计,17/47,执行结果为: X = -0.3046 + 1.6217i -0.3046 - 1.6217i -1.0066 1.0190 0.5967 G = 1.0000 0.0000 1.3333 -1.6667 -2.4000 1.6667 注意:构造的多项式的首项系数为1。,MATLAB 7.X程序设计,18/47,4.4.5多项式估值,1 代数多项式求值 Y=polyval(P,x) 求代数多项式的值。若x为一常数,则求多项式P在该点的值, Y = P(1)x N + P(2) x (N-1) + . + P(N) x + P(N+1) 若x为向量或矩阵,则对向量或矩阵中的每个元素求多项式P的值,返回值为与自变量同型的向量或矩阵。,MATLAB 7.X程序设计,19/47,例4-53 已知 分别计算 和 时 的值。,P=1 8 0 0 -10;x=1.2;Y=polyval(P,x) 执行结果如下: Y = 5.8976 y=2 3 4;5 4 1;Y=polyval(P,y) 执行结果如下: Y = 70 287 758 1615 758 -1,MATLAB 7.X程序设计,20/47,2 矩阵多项式求值,polyvalm函数用来求矩阵多项式的值,要求以方阵x为自变量求多项式的值。,MATLAB 7.X程序设计,21/47,例4-54 当x取 时求 的值。,p=1 -5 0 8; a=2 3 5 ;5 8 1;7 6 9; polyvalm(p,a) 执行结果: ans = 552 690 562 548 686 538 1148 1422 1154,MATLAB 7.X程序设计,22/47,polyval(p,a) 执行结果: ans = -4 -10 8 8 200 4 106 44 332,MATLAB 7.X程序设计,23/47,例4-55 当x=8时求(x-1)(x-2) (x-3)(x-4) 的值。,p=poly(1 2 3 4), polyvalm(p,8) 执行结果如下: p = 1 -10 35 -50 24 ans = 840,MATLAB 7.X程序设计,24/47,4.4.6 部分分式函数,R,P,K=residue(B,A) 功能:返回部分分式和余数。R为极点,P为零点 ,K为余数。,MATLAB 7.X程序设计,25/47,例4-56 求 的部分分式。,num=10*1 2 ; % numerator polynomial den=poly(-1;-3; -4);%denominator polynomial res, poles, k=residue(num, den),MATLAB 7.X程序设计,26/47,执行结果为: res = -6.6667 5.0000 1.6667 poles = -4.0000 -3.0000 -1.0000 k = ,MATLAB 7.X程序设计,27/47,4.4.7多项式积分,polyint (P,K) 返回多项式P的积分。K 为常数项(默认值为0 )。,MATLAB 7.X程序设计,28/47,例4-57 求 。,p=3 -2 1;polyint(p,2) ans = 1 -1 1 2 polyint(p) % 常数为0 ans = 1 -1 1 0 由执行结果可知:,(为常数项,本例中为2和0)。,MATLAB 7.X程序设计,29/47,4.5插值和拟合,4.5.1数值插值 1 一维数值插值 Y1=interp1(X,Y,X1,method) 函数根据X,Y的值,计算函数在X1处的值。X,Y是两个等长的已知向量,描述数据点,X1是一个向量或标量,描述欲插值的点,Y1是一个与X1等长的插值结果。,MATLAB 7.X程序设计,30/47,method是插值方法,可用的方法有: linear 默认方法,线性插值。 nearest 最邻近插值。 spline 三次样条插值。 cubic 三次插值,要求x的值等距离。 所有插值方法均要求x是单调的。 注意:X1的取值范围不能超出X的给定范围,否则,会给出“NaN”错误。,MATLAB 7.X程序设计,31/47,例4-58 求正弦、余弦函数在区间0 1内间 隔为0.25的各点的值。,x = 0:1; y1 = sin(x); y2=cos(x);xi = 0:.25:1; yi1 = interp1(x,y1,xi), yi2= interp1(x,y2,xi) %线性插值方法 yi1 = interp1(x,y1,xi,nearest), yi2= interp1(x,y2,xi,nearest) %最邻近插值,MATLAB 7.X程序设计,32/47,2 二维数值插值,Z1=interp2(X,Y,Z,X1,Y1,method) 二维插值。其中X,Y是两个向量,分别描述两个参数的采样点,Z是与参数采样点对应的函数值,X1,Y1是两个向量或标量,描述欲插值的点。Z1是根据相应的插值方法得到的插值结果。,MATLAB 7.X程序设计,33/47,4.5.2 数据拟合,polyfit函数求最小二乘拟合多项式的系数,调用格式为: P,S=polyfit(X,Y,m) 功能:根据采样点X和采样点函数值Y,产生一个m次多项式P及其在采样点的误差向量S。其中X,Y是两个等长的向量,P是一个长度为m+1的多项式系数向量。,MATLAB 7.X程序设计,34/47,例4-59已知 在1,3区间10个采样点的函数值,求 的4次拟合多项式p(x)。,MATLAB 7.X程序设计,35/47,例4-60 已知数表如下 x 9 10 11 12 f(x) 2.6093 1.7586 1.3979 1.9483 求4次拟合多项式f(x),并计算f(10.5)的近似值。,MATLAB 7.X程序设计,36/47,4.6数值微分与积分,4.6.1差分,DX=diff(X) 计算向量X的向前差分,DX(i)=X(i+1)-X(i),i=1,2,n-1。,DX=diff(X,n) 计算向量X的n阶向前差分,如 diff(X,2)=diff(diff(X)。,DX=diff(A,n,dim) 计算矩阵A的n阶差分,dim=1时(缺省状态),按列计算差分;dim=2,按行计算差分。,MATLAB 7.X程序设计,37/47,例4-61 求矩阵 的差分。,MATLAB 7.X程序设计,38/47,4.6.2数值积分 1数值积分基本原理 高等数学中求解定积分的数值方法有简单的梯形法、辛普生(Simpson)法、牛顿柯特斯(Newton-Cotes)法等,基本思想都是将整个积分区间a,b分成n个子区间xi,xi+1,i=1,2,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。,MATLAB 7.X程序设计,39/47,2 一重积分,I,n=quad(fname,a,b,tol,trace) 基于变步长辛普生法的求定积分。其中: fname 是被积函数。 a和b 分别是定积分的下限和上限。 tol 用来控制积分精度,缺省时取tol=0.001。 trace 控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。,MATLAB 7.X程序设计,40/47,I,n=quad8(fname,a,b,tol,trace) 基于牛顿柯特斯法求定积分。其中参数的含义和quad函数相似,只是tol的缺省值取10-6。,MATLAB 7.X程序设计,41/47,例4-62 求,(1)建立被积函数文件fesin.m function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2)调用数值积分函数quad求定积分 S,n=quad(fesin,0,3*pi) 执行结果如下: S = 0.9008 n = 77,MATLAB 7.X程序设计,42/47,例4-63 求,(1) 被积函数文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x); (2) 调用函数quad8求定积分。 I=quad8(fx,0,pi) 执行结果如下: I = 2.4674,MATLAB 7.X程序设计,43/47,例4-64 分别用quad函数和quad8函数求 的近似值,并在相同的积分精度下,比较函数的调用次数。,MATLAB 7.X程序设计,44/47,以表格形式定义的函数的求定积分函数trapz的格式为: trapz(X,Y)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论