第5章程序设计48045课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第5章程序设计48045课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 章程 设计 48045 课件
- 资源描述:
-
1、第第5章章MATLAB程序设计程序设计 MATLAB有两种常用工作方式:(1)直接交互的指令行操作方式;(2)M文件中的编程工作方式。5.1M文件中的功能和特点文件中的功能和特点(1)MATLAB程序文件中一个ASC码文件,扩展名一律为“.m”,可用任何字处理软件进行编辑和修改。(2)MATLAB是程序性的语言是解释性语言。(3)M文件大大扩展了MATLAB的能力 5.2 M文件的建立与使用文件的建立与使用1、M文件的形式文件的形式M文件中有两种形式(1)命令文件 (Script File)也叫做脚本文件(2)函数文件(Function File)2、脚本、脚本M文件文件(1)建立 用记事本(
2、Notebook)编写程序;在MATLAB系统下选择:“file”“new”“m-file”(2)内容:按照程序的功能,依据MATLAB的程序结构,组织的合法的MATLAB命令。(4)注意注意(1)命令文件中的语句可以访问MATLAB工作区(workspace)中的所有变量。运行过程中所有产生的变量均是全局变量。(2)“%”开始的行为注释行,不予执行。(3)若将文件未存放在系统的搜索目录下时,运用该文件之前,应先进入该目录。(如cd d:mywok)在命令窗口直接键入 文件名.m(5)举例:画出函数图形举例:画出函数图形n脚本m文件的内容:y=1./(1+exp(-x),保存文件名jb1.mn
3、在工作窗口下定义:x=0:1/20:20 运行脚本文件(jb1)得到函数值yn命令窗口下,用plot(x,y)画出对应的图形 3、函数文件、函数文件(1)建立用记事本(Notebook)编写程序在MATLAB系统下选择:“file”“new”“m-file”(2)函数文件的格式 Function 输出参数=函数名(输入参数表)函数体(3)函数体的内容 函数定义行 Hi行:帮助信息的第一行,用于提示函数的功能,当用命令 Lookfor查询该函数的帮助信息时将显示该行内容。帮助体 函数体 n函数名命名规则同变量名。以字母、下划命名规则同变量名。以字母、下划线和数字线和数字 组成,不识别函数名共组成
4、,不识别函数名共3131个字符。个字符。n输入参数:用中括号:用中括号“”括起来,参数括起来,参数两两之间用逗号隔开。两两之间用逗号隔开。n输出参数:函数:函数m m文件的运算结果传到调用文件的运算结果传到调用处,当参数不只一个时,用逗号隔开。处,当参数不只一个时,用逗号隔开。n函数文件名由函数名再加后缀由函数名再加后缀“m”m”组成。组成。n函数文件中定义变量为函数文件中定义变量为局部变量局部变量,函数,函数文件命令运行结束,该类变量会自动释文件命令运行结束,该类变量会自动释放。如果变量在程序运行前就已存在的放。如果变量在程序运行前就已存在的话,程序运行后它不会受到影响话,程序运行后它不会受
5、到影响(4)注意注意(5)应用举例)应用举例n函数表示函数表示 函数m文件的内容为:function y=foft(x)y=1./(1+exp(-x)文件名为:foft fplot(foft,0 20,1e-04)n数学函数曲线的绘图数学函数曲线的绘图 fplot(fun,lims)其中:fun表示函数名,定义函数的M文件名lims=XMIN XMAX YMIN YMAXn函数的极小值点和零值点函数的极小值点和零值点l 单变量函数的局部极小值点 fmin(F,x1,x2,options)F函数名,x1,x2指定极小值区间,options第一个分量为正时,则显示函数的运行步骤。Options(1
6、)屏幕上是否显示最小值的迭代过程,非0时,显示,为0时不显示,默认为0 Options(2)迭代时自变量的误差控程限,默认为1.0e-04 Options(3)为迭代时函数值的误差控程限,函数fmins使用该参数 Options(4)为迭代时最大的迭代次数,函数fmin默认值为500,fmins为200步。举例:定义函数文件humps.mfunction y=humps(x)y=1./(x-0.3).2+0.01)+1./(x-0.9).2+0.04)-6figure(1)subplot(2,2,1),fplot(humps,-5,5),grid onsubplot(2,2,2),fplot(
7、humps,-5,5 -10 25),grid onsubplot(2,2,3),fplot(5*sin(x),-1,1),grid onsubplot(2,2,3),fplot(5*sin(x),humps,-1,1)grid onx=fmin(humps,0.3,1)极小值点 x函数的极小值为:humps(x)l 函数的零点fzero(F,猜测值)得到零点的区间l 多变量函数的局部极小值点fmins(函数名,初始极值向量,options)得到向量附近的一个极小值举例:定义函数 function b=two_var(v)x=v(1);y=v(2)b=x.2+y.2-x.2*y.2给定初始值:
8、v=-0.7 1.2调用函数:a=fmins(two_var,v)options与单变量时相同 n 数值积分数值积分l quad(F,A,B,TOL,TRACE)其中:F为函数名,A和B指定积分区间,TOL迭代误差,TRACE,采用的递归的辛浦生方法。l quad 8(F,A,B,TOL,TRACE)其中:F为函数名,A和B指定积分区间,TOL迭代误差,TRACE,采用的newton-cotes方法。l dblquad(F,inmin,inmax,outnmin,outinmax)其中:inmin与inmax,分别为内层积分的上下限,outnmin与outinmax,分别为外层积分的上下限举例
9、:定义函数 function y=ex542f(x)y=-x.*x+115 调用函数:s=quad(ex542f,0,10)例 建立一个命令文件将变量a,b的值互换,然后运行该命令文件。首先建立命令文件并以文件名exch.m存盘:clear;a=1:10;b=11,12,13,14;15,16,17,18;c=a;a=b;b=c;a b 然后在MATLAB的命令窗口中输入exch,将会执行该命令文件。例 建立一个函数文件将变量a,b的值互换,然后在命令窗口调用该函数文件。首先建立函数文件fexch.m:function a,b=exch(a,b)c=a;a=b;b=c;然后在MATLAB的命令
10、窗口调用该函数文件:clear;x=1:10;y=11,12,13,14;15,16,17,18;x,y=fexch(x,y)5.2 数据的输入输出1、input函数格式:A=input(提示信息,选项);其中:提示信息为一个字符串,用于提示用户输入什么样的数据。如果在input函数调用时采用s选项,则允许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令:xm=input(Whats your name?,s)2、disp函数函数格式格式:disp(输出项输出项)其中输出项既可以为字符串,也可以为矩阵。其中输出项既可以为字符串,也可以为矩阵。注意:注意:用用disp函数显示矩阵时函数显
11、示矩阵时将不显示矩阵将不显示矩阵的名字,而且其格式更紧密,且不留任何没的名字,而且其格式更紧密,且不留任何没有意义的空行。有意义的空行。例 1 求一元二次方程ax2+bx+c=0的根。程序如下:a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);5.3 M文件的程序结构文件的程序结构1、顺序结构顺序结构2、分支结构分支结构 (1)if (条件)(命令组)end (2)if(条件)(命令组1)e
12、lse (命令2)end当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句 例例2 删除数据中的无关数据:一般认为,误差大于倍标准差的数据项,就认为是无关项,因此可以从数据中删除,为此可删除所找列的无关项if exist(c:matlabbksj.txt)load c:matlabbksj.txt i,j=size(sj)mu=mean(sj)sigma=std(sj)outliers=abs(sj-ones(i,1)*mu)3*ones(i,1)*sigma sj(outliers)=else sj=rand(40,3)end例例3:
13、输入一个字符,若为大写字母,则输出其后继字符,若为小写输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为数字字符则输出其对应的数值,字母,则输出其前导字符,若为数字字符则输出其对应的数值,若为其他字符则原样输出。若为其他字符则原样输出。程序如下程序如下:c=input(c=input(请输入一个字符请输入一个字符,s);,s);if c=A&c=A&c=a&c=a&c=0&c=0&c1Z=0.54*exp(-0.75*X.2-3.75*Y.2-1.5*Y);elseifT-1andT=1Z=0.7575*exp(-X.2-6*Y.2);elseZ=0.5457*
14、exp(-0.75*X.2-3.75*Y.2+1.5*Y);endsurf(X,Y,Z)%plot3(X,Y,Z)%mesh(X,Y,Z)15457.0117575.0154.0),(5.175.375.065.175.375.0222222yxeyxeyxeyxpyyxyxyyx 4、switch语句格式为:switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 case 表达式m 语句组m otherwise 语句组m+1 end例例5:5:某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):price200 没有折扣 200price5
15、00 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price0 y=x.2+1 subplot(1,2,1)plot(x,y)hold on else y=x.2-1 subplot(1,2,2)plot(x,y)hold onendpauseend例例4:用循环语句编写用循环语句编写M文件计算文件计算ex的值,其中的值,其中x,n为输入变量,为输入变量,ex的近似表达式为的近似表达式为2312!3!nxxxxexn function y=e(x,n)y=1;s=1;for i=1:n s=s*i;y=y+xi/s;endyy=e(1,100)y
16、=2.7183 for语句更一般的格式:for 循环变量=矩阵表达式 循环体语句 end 执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。实际上,“表达式1:表达式2:表达式3”是一个仅为一行的矩阵(行向量),因而列向量是单个数据。例5:已知5个学生4门功课的成绩,求每名学生的总成绩。程序如下:s=0;a=65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87;for k=a s=s+k;enddisp(s);(2)While 表达式 end 其执行过程为:若条件成立,则执行循环体语句,执行后
17、再判断条件是否成立,如果不成立则跳出循环例例6:根据矩阵指数的幂级数展开式求矩阵指数。根据矩阵指数的幂级数展开式求矩阵指数。程序如下:程序如下:X=input(X=);E=zeros(size(X);F=eye(size(X);n=1;whilenorm(F,1)0E=E+F;F=F*X/n;n=n+1;endEexpm(X)%调用调用MATLAB矩阵指数函数求矩阵矩阵指数函数求矩阵指数指数 循环的嵌套n如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。可以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。n在设计多
18、重循环时,要特别注意内、外循环之间的关系,以及各语句放置的位置,不要搞错。例7 用筛选法求某自然数范围内的全部素数。程序如下:m=input(m=);p=2:m;for i=2:sqrt(m)n=find(rem(p,i)=0&p=i);p(n)=;end p综合实例综合实例 用用 MATLAB 求解问题时,一般要经历求解问题时,一般要经历建模建模和和编程编程两个过两个过程,只有在建模正确的前提下,方能得出正确的结果。程,只有在建模正确的前提下,方能得出正确的结果。n单自由度系统有阻尼自由振动单自由度系统有阻尼自由振动1.1.建立计算模型建立计算模型 由动力学可知,单自由度有阻尼自由振动的由动
展开阅读全文