《MATLAB简单程序设计.ppt》由会员分享,可在线阅读,更多相关《MATLAB简单程序设计.ppt(22页珍藏版)》请在课桌文档上搜索。
1、MATLAB 程序设计方法,表达式和运算符命令文件(程序文件)程序设计中的流程控制练习与思考题,表达式由变量、运算符、函数、数字组成球坐标变换,表达式和运算符,用赋值语句创建变量 变量名=数据 变量名=表达式,x=R*cos(theta)*cos(fai);y=R*cos(theta)*sin(fai);z=R*sin(theta);,纬度经度,例2.1 格林威治天文台建于1675年,其经度为零,纬度为北纬510。计算格林威治天文台在地心直角坐标系中的坐标并在球面上标记,X,Y,Z=sphere(24);mesh(X,Y,Z),hold onfai=0;theta=51*pi/180;x0=c
2、os(theta)*cos(fai);y0=cos(theta)*sin(fai);z0=sin(theta);th=linspace(-pi/2,pi/2,100);x=cos(th);y=zeros(size(x);z=sin(th);plot3(x,y,z,b,x0,y0,z0,ro,linewidth,2)view(124,30),+加-减*乘.*点乘/右除./点右除 左除.点左除 矩阵幂.点幂,1.算术运算符,2.关系运算符 大于=大于等于=等于=不等于,3.逻辑运算符&与(and)|或(or)非(not),表达式和运算符,运算优先级,函数运算算术运算关系运算逻辑运算,exp()、l
3、og()、sin()、abs()、fix()、.、.*、./、*、/、+、;、=、=、=&、|,表达式(1+fix(pi)*mod(2,4)+2*32结果为ans=26;三角形任意两边之和大于第三边的逻辑表达式(A)a+b=c|a+c=b|b+c=a(B)a+bc|a+cb|b+ca(D)a+bc&a+cb&b+ca,命令文件MATLAB命令的有序集合。文件执行对文件中命令进行批处理,即从第一条命令开始按顺序执行,直到最后一条命令。如果中间某条命令出错,则中断并输出错误信息,M文件分为命令文件和函数文件两种,在编辑窗口中编写;保存并对文件命名;命令窗口键入文件名运行;观察运行结果;,例2.2
4、成都地理位置:北纬30o,东经104o;北京地理位置:北纬40o,东经116o。计算两城市距离近似值。,由两城市经纬度可计算出地心直角坐标系的坐标P1(x1,y1,z1),P2(x2,y2,z2),向径之间的角度,球面短程线计算公式,输入经纬度数据和地球半径;转换两城市的经纬度为地心直角坐标数据;提取两个点的向径坐标;计算向径间的夹角和短程线长度并输出计算结果。,datas=30,104;40,116;%经纬度数据R=6400;theta=datas(:,1)*pi/180;%弧度制fai=datas(:,2)*pi/180;x=R*cos(theta).*cos(fai);%直角坐标转换y=
5、R*cos(theta).*sin(fai);z=R*sin(theta);Op1=x(1),y(1),z(1);%第一城市坐标Op2=x(2),y(2),z(2);%第二城市坐标d=R*acos(Op1*Op2/(R*R)%计算并显示距离,按顺序录入程序文件(文件名:distance.m),在命令窗口运行程序distance,屏幕将显示:d=1563.42,条件控制;循环控制;错误控制;终止运行控制,条件控制有选择地运行程序块1.if/elseif 语句例2.8 判润年程序,程序设计中的流程控制,year=input(input year:=);n1=year/4;n2=year/100;n
6、3=year/400;if n1=fix(n1)&n2=fix(n2)disp(是润年)elseif n1=fix(n1)&n3=fix(n3)disp(是润年)else disp(不是润年)end,润年条件有二能被4整除,但不能被100整除;能被4整除,又能被400整除。,1.for 循环语法:for 变量=初值:步长:终值 可执行语句 end,程序设计中的循环控制,例2.3 裴波拉奇数列 n=input(input n:=);f(1)=1;f(2)=1;for k=3:n f(k)=f(k-1)+f(k-2);end f(n),f(44)=701408733,例2.3 程序功能如下:把边长
7、为2以原点为中心的正方形旋转pi/24,将其压缩(r=0.89),重复24次并绘图,xy=-1-1;1-1;1 1;-1 1;-1-1;A=cos(pi/24)-sin(pi/24);%创建正交矩阵 sin(pi/24)cos(pi/24);x=xy(:,1);y=xy(:,2);%提取坐标数据line(x,y),pause(1)%画线并暂停一秒for k=1:24 xy=.89*xy*A;%旋转并压缩 x=xy(:,1);y=xy(:,2);line(x,y),pause(1)end,例2.4空间四面体底面是一三角形,将三角形三个顶点与四面体顶部的顶点相连接就形成三角形锥面。利用MATLAB
8、的帧动画方法演示一个四面体旋转过程。,M=moviein(16);X,Y,Z=cylinder(1,0,3);%创建四面体坐标A=cos(pi/8)-sin(pi/8);sin(pi/8)cos(pi/8);for k=1:16 mesh(X,Y,Z),axis off%绘图 colormap(0 0 1),view(-30,40)M(:,k)=getframe;%帧设计 xy=A*X(1,:);Y(1,:);%旋转 x=xy(1,:);X=1;0*x;%坐标提取扩充矩阵 y=xy(2,:);Y=1;0*y;endmovie(M,5)%帧播放,2.while循环 将循环体中语句循环执行直到条件
9、不成立为止。语法:while 条件表达式 可执行语句 end,条件表达式一般由变量、数字、逻辑运算、关系运算符和一般运算符组成,以判断循环的进行和停止;只要表达式的值(逻辑值)结果为正确(非0),循环继续;直到表达式值为0,循环停止。,程序设计中的循环控制,例2.5 3n+1 问题.,n=input(input n=);%输入数据while n=1 r=rem(n,2);%求n/2的余数 if r=0 n=n/2%第一种操作 else n=3*n+1%第二种操作 endend,对任一自然数n,按如下法则进行运算:若n为偶数,则将n除2;若n为奇数,则将n乘3加1。将运算结果按上面法则继续运算,
10、重复若干次后结果最终是1.,n=5 16,8,4,2,1,程序设计中的流程控制,3.continue 命令,通常用于 for 或 while 循环语句中,与 if 语句一起使用,跳过本次循环,去执行下一轮循环4.break命令通常用于for或while循环语句中,与if语句一起使用,中止本次循环,跳出最内层循环If 条件表达式,break,end5.error(message)显示文本 message,并中断程序执行If 条件表达式,error(message),end,程序设计中的流程控制,如果一个正整数 n 只能被1和它自身整除,则称这个数为素数(或质数)。例如:2、3、5、7、11、,例
11、2.6用试商法判别素数n=input(input n:=);for k=2:n-1 if mod(n,k)=0,break,end%中止循环endif k n-1 disp(不是素数)else disp(是素数)end,程序设计中的流程控制,例2.7海伦公式,其中,p=(a+b+c)/2,其中,a,b,c分别为三条边长。,heroinput a:=3input b:=4input c:=8?Error using=hero输入错误,三角形两边之和大于第三边,if a+bc|a+cb|b+ca error(输入错误,三角形两边之和大于第三边)end,function 返回变量列表函数名(输入变量
12、列表)%注解说明 输入变量检测,输出变量检测 函数体,函数文件的编写,function Y=young(n)if nargin=0,n=3;endY=eye(n);Y(:,1)=ones(n,1);for k=3:n Y(k,2:k-1)=Y(k-1,1:k-2)+Y(k-1,2:k-1);end,例2.8 杨辉三角形,红、绿两队从相距100公里的地点同时出发相向行军红队速度为10(公里/小时)绿队速度为8(公里/小时)开始时,通讯员骑摩托从红队出发为行进中的两队传递消息。摩托车的速度为60(公里/小时)往返于两队之间.每遇一队,立即折回驶向另一队.当两队距离小于0.2公里时,摩托车停止。计算
13、通讯员驾驶摩托车跑了多少趟(从一队驶向另一队为一趟)。,例2.8 摩托车问题,将红队、绿队和摩托车假设为A、B、C三个点.A点初始位置A=0,速度va=10(运动向右);B点初始位置B=100,速度vb=8(运动向左);C点初始位置C=0,速度vc=60(f=1表示运动方向)当C向右运动时,C、B相遇时间:tk=(B A)/(8+60)当C向左运动时,A、C相遇时间:tk=(B A)/(60+10)利用相遇时间tk、及时计算A,B的最新位置当(B A)0.2 时程序结束。,相遇问题的数学模型,while(B-A)0.2 if f=1 tk=(B-A)/(vb+vc);else tk=(B-A)/(vc+va);end A=A+va*tk;B=B-vb*tk;plot(A,0,R.,B,0,g.),pause(1)f=-f;k=k+1;endk,A,B,whoYour variables are:A f tk vb B k va vc,A=0;B=100;va=10;vb=8;vc=60;f=1;k=0;plot(A,0,ro,B,0,go),hold on,练习与思考题,1.用一句话说明循环控制语句的特点。2.说明for循环while循环语句的相同和不同之处。3.修改“试商法判断素数”的程序,产生100以内的全部素数。,
链接地址:https://www.desk33.com/p-242039.html