ImageVerifierCode 换一换
格式:PPT , 页数:77 ,大小:437KB ,
资源ID:12611641      下载积分:5 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12611641.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(Matlab-程序设计和M文件.ppt)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Matlab-程序设计和M文件.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,.,*,第5章 程序设计和M文件,5.1 程序控制,5.2 M文件结构,5.3 函数的使用,5.4 程序的调试,5.5 匿名函数、inline对象和函数句柄,5.6 函数绘图,5.7 数值分析,.,5.1 程序控制,三种常用的结构:,顺序结构、分支结构和循环结构。,4种程序流程控制语句:,分支控制语句、循环控制语句、错误控制语句和流程控制语句。,.,5.1.1 分支控制语句,实现满足一定条件就执行相应分支的功能。,1.if 结构,if,条件1,语句段1,elseif,条件2,语句段2,.,else,语句段n,

2、end,.,例51,x=-5:0.1:5;,if x=1,y=x.2-1;,elseif -1x1,y=0;,else,y=-x.2-1;,end,plot(x,y);,.,2.switch 结构,常用于各种条件的列举。,switch,表达式,case,值1,语句段1,case,值2,语句段2,.,otherwise,语句段n,end,说明:,(1),表达式只能是标量或字符串;,(2),case后面的值可以是标量、字符串或元胞数组;,(3),switch和end必须配对使用。,.,例5-2,使用switch结构判断学生成绩的等级,90分以上为优,8090为良,7080为中,6070为及格,60

3、分以下为不及格。,score=98;,s1=fix(score/10);,%取十位数,switch,s1,case,9,10,s=优,case,8,s=良,case,7,s=中,case,6,s=及格,otherwise,s=不及格,end,s=,优,.,5.1.2 循环控制语句,实现将某段程序重复执行。,1.for循环,for,循环变量=array,循环体,end,说明:array可以是向量也可以是矩阵,循环执行的次数就是array的,列数,,每次循环中循环变量依次取array的各列并执行循环体,直到array所有列取完。,练习,.,for n=1:5%循环5次,for n=-1:0.1:1

4、循环21次,for n=linspace(-2*pi,2*pi,5)%循环5次,a=eye(2,3);for n=a%循环3次,n为列向量,例53,x=eye(5);,len=length(x),for,n=1:len,x(n,n)=n,end,len=5,x=1 0 0 0 0,0 1 0 0 0,0 0 1 0 0,0 0 0 1 0,0 0 0 0 1,x=1 0 0 0 0,0 2 0 0 0,0 0 1 0 0,0 0 0 1 0,0 0 0 0 1,x=,1 0 0 0 0,0 2 0 0 0,0 0 3 0 0,0 0 0 4 0,0 0 0 0 5,.,or:,x=eye(5

5、);,for n=1:length(x),x(n,:)=x(n,:)*n,end,.,2.while循环,常用于预先知道循环条件或循环结束条件的情况。,while,条件表达式,循环体,end,例5-4,使用while循环计算,f(x)=sin(x),,x5且每次x递增ln(x)。,x=0.1;,while,x1000时终止计算。,x=0:10;,for,n=x,f=exp(n);,if,f1000,break,end,end,n=,7,f=,1.0966e+003,.,例5-6,使用for循环将字符串中的数值取出,遇到非数值则跳过。,str=The result is 100.;,len=le

6、ngth(str);,s=;,for,n=1:len,if,str(n)9|str(n)=0&str(n)a=1 3 5;,b=1 2 3;,try,c=a.*b,catch,c=a.*b;,end,c,c=,1 6 15,lastmsg,lastid=lasterr,lastmsg=,Error using=times,Matrix dimensions must agree.,lastid=,MATLAB:dimagree,.,例5-7-2,a=1 2 3,b=4 5 6,try,c=a*b;,disp(try is excute),catch,c=a.*b;,disp(catch is

7、excute),end,c,.,5.1.4 流程控制命令,1.return命令,return,命令:,(1)用于结束程序的执行,并立即返回到上一级调,用函数,(2)终止键盘方式,注意:,当程序进入死(无限)循环时,则按Ctrl+break键来终止程序的运行。,2.keyboard命令,keyboard,命令用来使程序暂停运行,等待键盘命令,命令窗口出现“K”提示符,当键盘输入“,return,”后,程序才继续运行。keyboard命令可以用来在程序调试或程序执行时修改变量。,.,a=1 3 5;,keyboard,try,c=a.*b;,catch,c=a.*b;,end,c,.,3.inpu

8、t命令,a=input(Place enter a data:);,r=input(str,s),%从键盘中输入字符串保存到变量r,4.disp命令,disp命令是较常用的显示命令,常用来显示字符串型的信息提示。,5.pause命令,pause命令用来使程序暂停运行,当用户按任意键才继续执行。常用于程序调试或查看中间结果,也可以用来控制执行的速度。pause的命令格式如下:,pause(n),%暂停n秒,练习,.,5.2,M,文件结构,MATLAB 7.3的程序如果要保存则使用扩展名是“.m”的M文件,M文件有两种即M脚本文件(Script File)和M函数文件(Function File)

9、5.2.1 M文件的一般结构,1.函数声明行,函数声明行是在M函数文件的第一行,只有M函数文件必须有,以“,function,”引导并指定函数名、输入和输出参数,M脚本文件没有函数声明行。,2.H1行,H1行是帮助文字的第一行。,3.帮助文本,4.程序代码,程序代码由MATLAB语句和注释语句构成。,.,5.2.2 M脚本文件和M函数文件,1.M脚本文件,格式:通常为一连串指令,没有函数声明行,无输入和输出参数.,M脚本文件的说明:,(1)运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到MATLAB命令窗口中去执行;,(2)M脚本文件运行产生的变量都驻留在,MATLAB的基

10、本工作空间中,,在命令窗口中运行的命令可以使用这些变量;,(3)脚本文件的命令可以访问工作空间的所有数据,因此要,注意避免工作空间和脚本文件中的同名变量相互覆盖,,一般在M脚本文件的开头使用“clear”命令清除工作空间的变量。,.,例5-8,在M文件编辑调试器窗口中编写M脚本文件得出10 50范围内的所有素数。,%EX5_8 计算1050内的素数,clear,y1=primes(50);,%获得50以内的所有素数,n=length(primes(10);,%获得10以内素数的个数,y=y1(n+1:end),在命令窗口中输入:,ex5_8,y=,11 13 17 19 23 29 31 37

11、 41 43 47,在工作空间中就可以查看到变量y1、n和y,并可以修改和使用这些变量。,练习,PRIMES(N),is a row vector of the prime numbers less than or,equal to N.A prime number is one that has no factors other,than 1 and itself.,.,2.M函数文件,格式:有函数声明行,可以输入参数和输出参数。,M函数文件的说明如下:,(1),M函数文件在运行过程中产生的变量都存放在,函数本身的工作空间,中。函数的工作空间随具体的M函数文件调用而产生,并随调用结束而删除,

12、如果运行多个函数则产生多个临时的函数工作空间;,(2)当文件执行完最后一条命令或遇到“return”命令时就结束函数文件的运行,同时函数工作空间的变量被清除;,(3)一个M函数文件至少要定义一个函数。,.,函数声明行的格式:,function,输出参数列表=,函数名,(输入参数列表),说明:,函数名是函数的名称,保存时最好函数名与文件名一致,当不一致时,MATLAB以文件名为准;,输入参数列表是函数接收的输入参数,多个参数间用“,”分隔;,输出参数列表是函数运算的结果,多个参数间用“,”分隔。,.,函数定义的形式举例:,定义多输入输出参数的函数,function x,y,z=sphere(th

13、eta,phi,rho),无输入参数的函数,function y=sphere,(or sphere(),无输出参数的函数,function sphere(x),(or function=sphere(x),.,例5-9,将例5-7的计算行向量乘积的运算使用M函数文件保存。,function,c=ex5_9(a,b),%EX5_9(a,b)returns the product of a and b,%c is the product,%a is the multiplier,%b is the multiplicand,%copyright 2007-10-01,try,c=a.*b;,ca

14、tch,c=a.*b;,end,调用该函数:,z=ex5_9(1 2 3,4 5 6),z=,4 10 18,.,例:,function,distance=dist2(x1,y1,x2,y2),%DIST2 Calculate the distance between two points,%Function DIST2 calculates the distance between,%two points(x1,y1)and(x2,y2)in a Cartesian coordinate system.,%Calling sequence:,%res=dist2(xl,y1,x2,y2),%

15、Define variables:,%x1-x-position of point 1,%y1-y-position of point 1,%x2-x-position of point 2,%y2-y-position of point 2,%distance-Distance between points,%Record of revisions:,%Date Programmer Description of change,%12/15/98 S.J.Chapman Original code,%Calculate distance.,distance=sqrt(x2-x1).2+(y2

16、y1).2);,.,使用该函数的脚本文件如下:,%Script file:test_dist2.m,%Purpose:,%This program tests function dist2.,%Record of revisions:,%Date Programmer Description of change,%12/15/98 S.J.Chapman original code,%Define variables:,%ax-x-position of point a,%ay-y-position of point a,%bx-x-position of point b,%by-y-pos

17、ition of point b,%result-Distance between the points,.,%Get input data.,disp(Calculate the distance between two points:);,ax=input(Enter x value of point a:);,ay=input(Enter y value of point a:);,bx=input(Enter x value of point b:);,by=input(Enter y value of point b:);,%Evaluate function,result=dist

18、2(ax,ay,bx,by);,%Write out result.,fprintf(,The distance between points a and b is%fn,result);,.,直接在命令窗口调用该函数:,test_dist2,Calculate the distance between two points:,Enter x value of point a:,1,Enter y value of point a:,1,Enter x value of point b:,4,Enter y value of point b:,5,The distance between po

19、ints a and b is 5.000000,.,help dist2,DIST2 Calculate the distance between two points,Function DIST2 calculates the distance between,two points(xl,yl)and(x2,y2)in a Cartesian,coordinate system.,Calling sequence:,res=dist2(xl,y1,x2,y2),.,5.3 函数的使用,模块化程序设计:,将一个大任务分成若干小的子任务,用一个一个的函数完成这些子任务,通过函数间的调用完成复杂

20、任务.,优点:,易于维护和修改程序.,注意:,主函数可以调用子函数,子函数可以调用其他子函数或本身,但子函数不能调用主函数.,.,5.3.1 主函数和子函数,一个M函数文件中可以包含一个或多个函数.,1.主函数,主函数是出现在文件最上方的函数,即第一行声明的函数.一个M文件只能有一个主函数,通常主函数名与M函数文件名相同。,2.子函数,(1)子函数的,次序无任何限制,;,(2)子函数只能被,同一文件中,的函数(主函数或子函数)调用,不能被其它文件的函数调用;,(3)同一文件的主函数和子函数运行时的,工作空间是相互独立的,。,eg.ex5_10,.,5.3.2 函数的输入输出参数,Matlab函

21、数调用过程实际上也是参数的传递过程.,函数A调用了函数B,称A为“主调函数”,而B为“被调用函数”.,函数通过输入参数接收数据,经函数运算后由输出参数输出结果.,.,1.参数的传递,函数的参数传递是将主调函数中的变量值传给被调函数的输入参数。,(1)函数参数传递的是,数值,;,(2)参数的存储空间:被调函数的输入参数存放在函数的工作空间中,与MATLAB的工作空间是独立的,当调用结束时函数的工作空间被清除,输入参数就消失了。,eg.ex5_10,.,2.输入输出参数的个数,Matlab中调用函数时的参数个数和函数声明时的不一定相同,可用专用函数确定实际调用时输入输出参数的个数。,(1)narg

22、in和nargout,函数,nargin(fun),%获取函数fun的输入参数个数,nargout(fun),%获取函数fun的输出参数个数,说明:,fun是函数名,当nargin和nargout函数在函数体内时fun可省略,在函数外时fun不省略。,.,补充:可选参数,MATLAB的许多函数有可选参数,它们如何判断用到了哪些参数以及进行了什么操作呢?,可以用,8个特殊函数,来获得可选参数的信息,及报告参数中的错误.,.,nargin,该函数返回调用函数时实际用的输入参数的个数.,nargout,该函数返回调用函数时实际用的输出参数的个数.,nargchk,当调用函数时用了太少或太多输入参数时

23、该函数返回一个标准的错误信息.,error,当参数有致命错误时,显示错误信息并异常中断产生错误的函数.,warning,当参数无致命错误时,显示警告信息且函数继续执行.,inputname,该函数根据参数个数返回实际的变量名.,.,help,nargchk,NARGCHK Validate(验证)number of input arguments.,MSG=NARGCHK(LOW,HIGH,N),returns an appropriate error message string if N is not between,LOW,and,HIGH,.If it is,NARGCHK retu

24、rns an empty matrix.,Example:,error(nargchk(1,3,nargin,struct),.,eg.使用可选参数,function,mag,angle=polar_value(x,y),%POLAR_VALUE Converts(x,y)to(r,theta),%Function POLAR_VALUE converts an input(,x,y,),%value into(r,theta),with theta in degrees.,%It illustrates the use of optional arguments,%Define variab

25、les:,%angle-Angle in degrees,%msg-Error message,%mag-Magnitude,.,%x-Input x value,%y-Input y value(optional),%Record of revisions:,%Date Programmer Description of change,%12/16/98 S.J.Chapman original code,%Check for a legal number of input arguments.,msg=nargchk(1,2,nargin);,error(msg);,.,%If the y

26、 argument is missing,set it to 0.,if,nargin mag angle=polar_value,?Error using=polar-value,Not enough input arguments.,mag angle=polar_value(1,-1,1),?Error using=polar value,Too many input arguments.,mag angle=polar_value(1),mag=1,angle=0,.,mag angle=polar_value(1,-1),mag=1.4142,angle=-45,mag=polar_

27、value(1,-1),mag=1.4142,mag angle=polar_value(0,0),Warning:Both x and y are zero:angle is meaningless!,In d:bookmatlabchap5polar_value.m at line 32,mag=0,angle=0,.,(2)varargin和varargout,函数,用于处理复杂输入输出参数,varargin和varargout函数需要与分支结构结合使用,将函数调用时实际传递的参数构成元胞数组,通过访问元胞数组中各元素内容来获得输入输出变量。,格式:,function y=fun(var

28、argin),%输入参数为varargin的函数fun,function varargout=fun(x),%输出参数为varargout的函数fun,function varargout=fun(varargin),.,5.3.3 局部变量、全局变量和静态变量,变量的作用域和生存期:作用域是变量的作用范围,生存期是变量的生存时间。,根据变量作用域的不同,可将其分为局部变量和全局变量。,根据变量生存期的不同,可将其分为自动变量和静态变量。,注意:函数名与同一作用域的变量名不能重复,否则函数无法被调用.,.,1.局部变量,局部变量(Local Variables)的作用范围是定义该变量的函数内部

29、声明局部变量:不需要特别声明,变量的存储:在独立的函数工作空间中,变量结束:变量所在的函数执行完毕时。,.,2.全局变量,全局变量具有全局作用域,可在不同函数和Matlab工作空间中共享。,作用:减少参数传递过程,提高程序执行效率。,缺点:全局变量在任何定义过的函数中都可以修改,使用时应十分小心。,.,(1)声明全局变量,全局变量在使用前必须用“,global,”声明,而且每个要共享全局变量的函数和工作空间,都必须逐个用“global”对该变量加以声明。,(2)清除全局变量,使用clear命令,命令格式如下:,clear global 变量名,%清除某个全局变量,clear global,

30、清除所有的全局变量,eg.li5_13,.,3.静态变量,格式:,persistent,x;,注意:它只能在function里声明,且只有这个function才能认识它.,声明后需初始化,注意不能直接赋值;而是先用isempty(x)判断x是否已经赋值,若没有,则可以赋值给x。,如:function y=test(),persistent,a;if isempty(a)a=0;end a=a+1;y=a;,之后第一次调用y=test;结果y=1,第二次调用y=test;结果y=2。就是说a记录了每次调用function后的结果。,如果a为自动变量,则每次调用y=test后结果都是1.,.,5

31、3.4 嵌套函数、私有函数和重载函数,1.嵌套函数,在MATLAB中一个函数的内部还可以定义一个或多个函数,这种定义在其他函数内部的函数就称为嵌套函数。此时,每个函数必须用end结束。,调用原则:,(1)外层函数可以调用内一层函数,但不能隔层调用;,(2)同层嵌套函数可以互相调用,(3)内层函数可以调用外一层函数及和外层函数同层的其他函数。,.,function A(x),function B(x,y),function C(z),end,end,function D(x),function E(z,y),end,end,end,A可以调用:B,D,B可以调用:C,D,A,C可以调用:B,D

32、E,D可以调用:E,B,A,E可以调用:D,B,C,.,2.私有函数,私有函数是限制访问权限的函数,私有函数存放在“private”子目录中,只能被其直接父目录的M函数文件所调用。,3.重载函数,重载函数是指两个函数使用相同的名称,处理的功能相似,但参数类型或个数不同,重载函数通常放在不同的文件夹下,文件夹名称以“”开头后面跟一个数据类型名。,.,5.3.5 函数的工作过程和P码文件,1.函数的搜索过程,当在MATLAB中输入一个标识符时,首先确认是不是变量名,若不是,则做如下搜索:,检查是否是本M函数文件内部的子函数;,检查是否是“private”目录下的私有函数;,检查是否在当前路径中;

33、检查是否在搜索路径中。,.,2.P码文件,P码就是伪代码(Pseudocode),一个M文件第一次被调用时,MATLAB就将其进行编译并生成P码文件存放在内存中,生成的P码文件与原M文件名相同,其扩展名为“.p”,P码文件的保密性好。,pcode File1.m,File2.m.-inplace%生成File1.p,File2.p文件,.,3.函数的工作空间,每一个M函数运行时都有一个内存区,称为函数的工作空间。,清除函数的工作空间:,clear functions,%清除所有编译过的M函数文件和MEX文件工作空间,clear function funname,%清除某个编译过的函数工作空间

34、5.4 程序的调试5.4.1 直接检测,(1)对于需要检测的变量可以通过删除语句行末尾的分号,或在程序的适当位置加显示变量值的语句,将结果显示在命令窗口中;,(2)以脚本文件的方式来执行该函数。调试函数时,可以将该函数的第一句函数声明行前加“%”,并给输入参数赋值;,(3)在程序的适当位置添加“keyboard”语句,当程序运行至此句会暂停运行,并在命令窗口显示“k”提示符,这时就可以在命令窗口查看和修改各变量的内容。,.,5.4.2 M文件编辑调试器窗口,1.“Debug”菜单,(1)Step(F10),(2)Step in(F11)和Step out(shift+F11),(3)Ru

35、n/Continue(F5),(4)Set/Clear Breakpoints(F12),(5)Set/Modify Conditional Breakpoint,(6)Stop if Errors/Warnings,(,7,),Exit Debug Mode,.,5.5 匿名函数、inline对象和函数句柄5.5.1 匿名函数,匿名函数是面向命令行代码的函数形式,通常只有一句很简单的语句。,fhandle=(arg1,arg2,.)(expr),%创建匿名函数,说明:,fhandle是函数句柄;arg1,arg2,.是参数列表,也可以省略;expr是函数表达式。,例:5-16,fhnd1=(

36、x)(1+exp(-x);,%,创建匿名函数,rf1=fhnd1(2),%,调用匿名函数,rf1=,1.1353,.,5.5.2 inline,对象,创建inline对象就是使用inline函数将字符串转换成inline对象。,inline_fun=inline(string,arg1,arg2,),%,创建,inline,对象,例:,5-17,f=inline(sin(x)*exp(-z*x),x,z),%,创建,inline,对象,f,class(f),%,查看,f,的类型,ans=,inline,y1=f(1,2),%,调用,inline,对象,f,y1=,0.1139,y2=feval

37、f,1,2),y2=,0.1139,.,5.5.3,函数句柄,函数句柄(,Function_Handle,)包含了函数的路径、函数名、类型以及可能存在的重载方法,,即函数是否为内部函数、,M,或,P,文件、子函数、私有函数等,。,1.,创建函数句柄,fhandle=fun,%创建函数句柄,2.,函数句柄的调用,y1,y2,=fhandle(arg1,arg2),%调用函数句柄fhandle,y1,y2,=feval(fhandle,arg1,arg2),y1,y2,=feval(fun,arg1,arg2),.,5.6 函数绘图5.6.1 fplot命令,fplot,命令可以绘制函数的曲线。

38、fplot(fun,limits,tol,Linespec),%绘制函数fun的曲线,fplot(fun,limits,n),说明:,fun是函数句柄或函数名;limits是自变量的取值范围xmin xmax或xmin xmax ymin ymax;tol是相对误差度,默认为2e-3,可省略;Linespec是线型,与plot命令的设置相同,可省略;n是绘制的点数,当n1时至少绘制n+1个点。,例:,fhnd=(x)(exp(-x).*sin(x);,fplot(fhnd,0 20,b-.*),.,5.6.2 ezplot命令,ezplot,命令也是用于绘制函数在某一自变量区域内的图形,ez

39、plot命令格式如下:,ezplot(fun,min,max),%绘制函数fun的曲线,ezplot(x,y,tmin,tmax),说明:fun是函数句柄或函数名;min,max是自变量的范围,可省略,省略时默认为-2*pi,2*pi,当fun是二元函数,则范围是xmin xmax ymin ymax;x和y是指x(t)和y(t);tmin,tmax是t的范围,可省略,省略时范围是0,2*pi。,例:,ezplot(x2+y2-1,-3,3,-3,3),.,5.7 数值分析5.7.1 求最小值和过零点,1.一元函数的最小值,fminbnd函数可以获得一元函数在给定区间内的最小值。,x=fmin

40、bnd(fun,x1,x2)%寻找最小值,2.,多元函数的最小值,fminsearch,函数可以获得多元函数的最小值。,x,fval=fminsearch(fun,x0)%,寻找最小值,3.一元函数的过零点,x=fzero(fun,x0)%,获得fun在x0附近的过零点,一元函数f(x)的过零点求解可以使用fzero函数来实现。,练习,.,5.7.2 数值积分,一元函数的数值积分,采用自适应的Simpson方法。,q=quad(fun,a,b,tol,trace),例:,fhnd=(x)(exp(-x.2);,q1=quad(fhnd,-1,1,2e-3,1)%数值积分并跟踪展示迭代过程,9

41、1.0000000000 5.43160000e-001 0.3198710950,11 -0.4568400000 9.13680000e-001 0.8538774475,13 0.4568400000 5.43160000e-001 0.3198710950,q1=,1.4936,.,5.7.3 微分方程组数值求解,MATLAB 7.3为解常微分方程提供了7种数值求解的方法,包括ode45、ode23、ode113、ode15s、ode23s、ode23t和ode23tb 函数,各函数的命令格式如下:,t,y=ode45(fun,ts,y0,options)%,解常微分方程,说明:,f

42、un,是函数句柄或函数名;,ts,是自变量范围,可以是范围,t0,tf,,也可以是向量,t0,tf,;,y0,是初始值,,y0,应该是和,y,具有同样长度的列向量;,options,是设定微分方程解法器的参数,可省略,可以由,odeset,函数来获得。,.,例5-,25,使用,ode45,函数解微分方程。,先将二阶微分方程式变换成一阶微分方程组:,创建M函数文件ex5_25.m,虽然t参数不用,但微分方程的函数必须有时间t变量:,function ex5_25(),ts=0,20;%自变量范围,y0=0;0;%初始条件,t,y=ode45(ex5_25_1,ts,y0);,plot(t,y(:

43、1),r,t,y(:,2),g-),function yp=ex5_25_1(t,y),%EX5_25 使用ode45函数解微分方程,yp=y(2);-1.414*y(2)-y(1)+1;,.,练习:,运行以下命令:,a=eye(5);,for n=a(2:end,:),则for循环的循环次数是_。,A.5 B.4,C.3 D.1,A,.,练习:,运行以下命令则_,a=1 2 3,keyboard,K a=1 2 4;,K return,A.a=1 2 3 B.a=1 2 4,C.命令窗口的提示符为“K”,D.,出错,B,.,练习:,编写M脚本文件,分别使用for和while循环语句计算 ,

44、当sum1000时终止程序。,答案:,clear,sum=0,for n=1:1000,sum=nn+sum,if sum1000,break,end,end,clear,sum=0;n=1;,while sum1000,sum=nn+sum,n=n+1,end,.,练习:,求y(x)=-e,-x,|sin(sin(x)|在x=0附近的最小值。,答案:,fhnd=(x)(-exp(-x)*abs(sin(sin(x),y=fminbnd(fhnd,0,10),.,练习:,解微分方程,y0=1,并绘制曲线,答案:,fhnd=(t,y)(y*tan(y)-cos(y);,t,y=ode45(fhnd,0,20,1);,plot(t,y),.,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服