资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,MATLAB,的编程环境,变量与表达式,三类运算符,程序的三种结构,MATLAB,程序设计,I,MATLAB的编程环境MATLAB 程序设计 I,命令行操作方式,(,交互方式,),在命令窗口直接输入简单的命令,进行一般的数学演算或绘制图形;,程序设计方式,(,批处理方式,),编写,M,文件并在命令窗口运行,.M,文件分“,程序文件,”和“,函数文件,”两类,程序文件内容是按先后次序编写,MATLAB,命令的一个文本,(,Script-file,),函数文件在形式上只是比程序文件多一行关键字,.,两类文件都只能在,程序编辑窗口,建立。,MATLAB,两种常用的工作方式:,2/18,命令行操作方式(交互方式)MATLAB两种常用的工作方式:2,例,1.,马鞍面,z=xy,图形,r=1:20;tha=(0:72)*pi/36;,x=r*cos(tha);y=r*sin(tha);,z=x.*y,surf(x,y,z),3/18,例1.马鞍面 z=xy 图形r=1:20;tha=(0,对于需要几行,(,或几十行,),命令才能完成的作业,最好用,程序编辑器,编写程序。对该程序命名,保存在当前工作目录中,.,磁盘上会产生一个后,缀为,.M,的文件。,所谓程序,就是一个,MATLAB,的命令序列,在命令窗口键入,文件名,系统会,逐行执行该文件,中的每条命令,.,这就是“批处理”,的意义,4/18,对于需要几行(或几十行)命令才能完成的作业,所谓程序,就是,进入,MATLB,程序编辑器的三种方式,从命令窗口的菜单栏上选择,File,New M-file,鼠标单击工具栏上第一个空白图标,(,新文件,),键盘键入,edit ,文件名,5/18,进入MATLB程序编辑器的三种方式从命令窗口的菜单栏上选择,p(10)=1;,for k=10:-1:2,p(k-1)=2*(p(k)+1);,end,p(1),例,2,有一天小猴摘下若干桃子,当即吃掉了一半,还觉得不过瘾,又多吃了一个,.,第二天接着吃了剩下的一半,又多吃了一个,.,以后每天都吃掉尚存桃子的一半另加一个,.,到第十天早上,只剩 下,1,个桃子了,.,问小猴第一天摘下多少桃子?,解,:,记,p,k,为第,k,天的桃子数,递推公式,p,k-1,=2(p,k,+1),6/18,p(10)=1;例2 有一天小猴摘下若干桃子,当即吃掉了一半,变量命名规则,变量名和函数名对字母的大小写敏感;,X,,,x,Z,z,是不同变量,变量名的第一个字符必须是一个英文字母,最多可包括,31,个字符;,x1,x2,x3,变量名可由英文字母、数字和下划线混合组成,;,变量名中不得包含空格和标点,但可以由下连字符,MATLAB,的变量与表达式,7/18,变量命名规则MATLAB的变量与表达式7/18,局部变量:具有函数内部作用范围,全局变量:可在几个函数和基本工作空间之间共享,具有全局作用范围,全局变量的声明:,global,变量名,1,变量名,2,2.,局部变量和全局变量,永久变量,ans;eps;pi;i;j;,inf;NaN;,8/18,局部变量:具有函数内部作用范围2.局部变量和全局变量永久变,表达式,由变量、运算符、函数、数字组成,表达式创建常用赋值方法实现,变量,=,表达式,MATLAB,书写表达式的规则与,“,手写算式,”,几乎相同,x=(3*42+exp(sin(45)/6,y=20.3+3.9*sin(x);,z=sin(x)+cos(x);,x,y,z=peaks,4.,基本表达式,9/18,表达式由变量、运算符、函数、数字组成4.基本表达式9/,使用规则:,所有字符串都用单引号括起来;,字符串中的每个字符都是字符串变量中的一个元素;,例,a=This is a book,a=,This is a book,a(1:7),ans=,This is,字符串数组,length(a),ans=,14,将整数转换成字符命令,:int2str(),拼接字符串命令,:strcat(T1,T2,T3),10/18,使用规则:字符串数组length(a)将整数转换成字,生肖问题,今年是鸡年还是猴年?,n=input(input n:=);,S=,猴鸡狗猪鼠牛虎兔龙蛇马羊,;,k=rem(n,12)+1;,s=S(k);,s=strcat(int2str(n),年是,s,年,),input n:=,2004,s=2004,年是猴年,Input n:=,2008,s=2008,年是鼠年,11/18,生肖问题今年是鸡年还是猴年?n=input(input,+,加,.+,点加,-,减,.-,点减,矩阵幂,.,点幂,*乘,.*,点乘,/,右除,./,点右除,左除,.,点左除,.,算术运算符,.,关系运算符,小于,大于,=,大于等于,=,等于,=,不等于,.,逻辑运算符,&,与,(and),|,或,(or),非,(not),12/18,+加 .+点加.算术运算符.关,MATLAB,程序结构,1.,顺序结构,;2.,循环结构,;3,分支结构,顺序结构,依照顺序执行程序的各条语句。语句在程序文件中的位置将影响运行结果。,循环结构,按条件决定重复执行一条,(,组,),语句,分支结构,根据不同条件分别执行不同语句,三种基本结构语句可组合成结构复杂的程序,13/18,MATLAB 程序结构1.顺序结构;2.循环结构;3分,例,.,用,y,4,(,x,)=x x,3,/3!+x,5,/5!-x,7,/7!,近似正弦函数,sin,x,在区间,0,3,/2,内值并绘出逐步逼近的图形,.,x=0:0.2:3*pi/2;,y=sin(x);y1=x;,y2=y1-x.3/6;,y3=y2+x.5/120;,y4=y3-x.7/720;,plot(x,y;y1),plot(x,y;y2),plot(x,y;y3),plot(x,y;y4),14/18,例.用 y4(x)=x x3/3!+x5/5!-,for-end,循环,语法为:,for x=array,可执行语句,end,例:利用,for,循环求,1,!,+2,!,+3,!,+,+5,!的值,sum=0;,for i=1:5,pdr=1;,for k=1:i,pdr=pdr*k;,end,sum=sum+pdr;,end,15/18,for-end循环例:利用for循环求1!+2!+3!+,while-end,循环,while,循环将循环体中的语句循环执行不定次数。,语法为:,while,表达式,循环体语句,end,表达式一般是由逻辑运算和关系运算以及一般运算组成的,以判断循环的进行和停止;,只要表达式的值,(,逻辑值,),结果为正确,(,非,0),,继续循环;直到表达式值为,0,,循环停止。,6/18,while-end循环表达式一般是由逻辑运算和关系运算以及一,五个水手带了一只猴子来到太平洋一个荒岛上,发现有一大堆椰子,.,由于旅途的颠簸,大家都很,疲倦,很快入睡了,.,第一个水手醒来后,把椰子,平分成五堆,将多余的一只给了猴子,他私藏了,一堆后又去睡了,.,第二、第三、第四、第五个水,手也陆续起来,和第个水手一样,把椰子分成五,堆,恰多一只给猴子,私藏一堆,再去入睡,.,天亮以,后,大家把余下的椰子重新等分成五堆,每人分,一堆,正好余一只再给猴子,.,试问原先共有几只,椰子?,水手、猴子、椰子问题,17/18,五个水手带了一只猴子来到太平洋一个荒岛上,水手、猴子、椰子问,18/18,p=1.5;x=0;,while p=fix(p),x=x+1;p=5*x+1;,for k=1:5,p=5*p/4+1;,end,end,disp(x,p),ans=,1023 15621,设最初的椰子数为,p,0,椰子数变化规律:,五个水手最后得到椰子数为,x,试探求解计算:,P,5,=5x+1,P,k,=5P,k+1,/4+1,(,k=,4,3,2,1,0),18/18p=1.5;x=0;设最初的椰子数为p0,椰子数变,MATLAB,的函数文件,For,循环语句,While,循环语句,If,分支语句,MATLAB,程序设计,II,MATLAB的函数文件MATLAB 程序设计 II,MATLAB,的,函数文件,编写函数文件的主要目的,是为了解决某一特殊问题而扩充,MATLAB,的功能,.,函数文件名必须以,英文字母开头,并以,.m,为后缀,如,f1.m,、,f2.m,、,g1.m,、,g2.m,、,function,因变量名,函数名,(,自变量名,),函数体,注意,:,函数名应该和文件名相同,编写函数文件一定要按以下格式,2/18,MATLAB的函数文件编写函数文件的主要目的,是为了解决某一,编写函数文件,function y=h1(x),y=1./(x-.3).2+.01)+1./(x-.9).2+.04)-6;,例,1.,分析函数性质,存盘后,回到,MATLAB,命令窗口,fplot(h1,0,2),grid,3/18,编写函数文件例1.分析函数性质存盘后,回到MATLAB命令窗,for,变量,=,初值,:,步长,:,终值,语句组,end,while,条件,语句组,end,for,循环语句和,while,循环语句的结构,4/18,for 变量=初值:步长:终值while 条件f,sum=0;,i=1;,while i=100,sum=sum+i;,i=i+1;,end,sum,例,2,:用循环语句求,1100,间整数的和,例,3,Fibonacci,数列递推公式,:,F,n+,1,=F,n,+,F,n,1,(,F,0,=1,,,F,1,=1),计算前,n,项,n=input(input n:=);,f(1)=1;f(2)=2;k=2;,while kn,f(k+1)=f(k)+f(k-1);,k=k+1;,end,f,5/18,sum=0;例2:用循环语句求1100间整数的,function m=fi(n),a=1;b=1;,if n=0|n=1,m=a;,else,for k=2:n,m=a+b;,a=b;b=m;,end,end,if,表达式,语句组,end,If,条件语句的结构,if,表达式,语句组,1,Else,语句组,2,end,6/18,function m=fi(n)if 表达式If条件语句的,if,表达式,1,语句,1,else if,表达式,2,语句,2,else if,表达式,3,语句,3,else,语句,n,end,多分支语句,7/18,if 表达式1多分支语句7/18,例,4.,某学生发现一个奇妙的“定理”,请角谷教授证明,教授无能为力,于是产生了,角谷猜想,。其内容是,:,对任一自然数,n,,按如下法则进行运算,:,若,n,为偶数,则将,n,除,2;,若,n,为奇数,则将,n,乘,3,加,1,。运算结果是自然数,将新数按上面法则继续运算,重复若干次后计算结果最终是,1,。设计算法用计算机验证这一猜想。,算法,:(1),输入数,n;,(2),求,n,除,2,的余数,r;,(3),如果,r,为零,则将,n,除,2,否则将,n,乘,3,加,1;,(4),判断,:,若,n,为,1,则结束算法,否则转,2.,8/18,例4.某学生发现一个奇妙的“定理”,请角谷教授证明,教授,n=input(input n=);%,输入数据,while n=1%,循环入口,r=rem(n,2);%,求,n/2,的余数,if r=0,n=n/2%,第一种操作,else,n=3*n+1%,第二种操作,end,end,n%,显示,n,验证角谷猜想的,MATLAB,程序,:,9/18,n=input(input n=);%输入数据验证,练习,.,关于数学模型,1.,考虑抛射体的落点比发射点高的情况,(,如投蓝球、高压水龙头用于楼房灭火,),最远射程与发射角的关系。数学模型如何描述?,2.,考虑抛射体的落点比发
展开阅读全文