数学实验课件:数学实验第二章_第1页
数学实验课件:数学实验第二章_第2页
数学实验课件:数学实验第二章_第3页
数学实验课件:数学实验第二章_第4页
数学实验课件:数学实验第二章_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、表达式和运算符 命令文件(程序文件) 程序设计中的流程控制 函数文件的编写格式, ,数学实验第二章,表达式由变量、运算符、函数、数字组成 球坐标变换,表达式和运算符,用赋值语句创建变量 变量名=数据 变量名=表达式,x=R*cos(theta)*cos(fai); y=R*cos(theta)*sin(fai); z=R*sin(theta);,纬度 经度,例2.2 格林威治天文台建于1675年,其经度为零,纬度为北纬510。计算格林威治天文台在地心直角坐标系中的坐标并在球面上标记,X,Y,Z=sphere(24); mesh(X,Y,Z),hold on fai=0; theta=51*pi

2、/180; x0=cos(theta)*cos(fai); y0=cos(theta)*sin(fai); z0=sin(theta); plot3(x0,y0,z0,ro,linewidth,2) view(124,30),例2.3 四边形柱面绘图原理和方法。,设四边形顶点为(-1, -1), (1, -1), (1, 1), (-1, 1). 设柱面高为1,创建Z坐标矩阵,创建柱面的X坐标和Y矩阵,cylinder(R,N)创建单位高度绕Z轴旋转曲面,R为母线,N表示圆圈上点数,N缺省默认值为 20。 Cylinder %单位高度二十边形柱面 x,y,z=cylinder(1,1,4);

3、mesh(x,y,z) %单位高度四边形柱面 x,y,z=cylinder(1,0,3); mesh(x,y,z) %单位高度的三角形锥面,使用cylinder绘柱面,+ 加 - 减 * 乘 .* 点乘 / 右除 ./ 点右除 左除 . 点左除 矩阵幂 . 点幂,1 .算术运算符,2.关系运算符 大于 = 大于等于 = 等于 = 不等于,3.逻辑运算符 R=6400; S0=4*pi*R*R; S=2*pi*R*R*d/(R+d); S/S0*100,命令文件MATLAB命令的有序集合。 文件执行对文件中命令进行批处理,即从第一 条命令开始按顺序执行,直到最后一条命令。如果 中间某条命令出错,

4、则中断并输出错误信息,M文件分为命令文件和函数文件两种,在编辑窗口中编写; 保存并对文件命名; 命令窗口键入文件名运行; 观察运行结果; ,条件控制; 循环控制; 错误控制;终止运行控制,条件控制有选择地运行程序块 1. if / elseif 语句 例2 .8 判润年程序,程序设计中的流程控制,year=input(input year:=); n1=year/4; n2=year/100; n3=year/400; if n1=fix(n1) f(1)=1;f(2)=1; for k=3:n f(k)=f(k-1)+f(k-2); end f(n),f(44)=701408733,1,1,

5、2,3,5,8,13,21,,例2.11 程序功能如下:把边长为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,例 利用帧动画方

6、法演示马鞍面旋转过程。,M = moviein(24); x,y=meshgrid(-6:.5:6); z=x.2-y.2; %创建马鞍面坐标数据 AZ=-30; for k=1:24 mesh(x,y,z),axis off %绘图 colormap(0 0 1),view(AZ,20) %旋转15O M(:,k)=getframe; %帧设计 AZ=AZ+15; end movie(M,2) %帧播放,2. while循环 将循环体中语句循环执行直到条件不成立为止。 语法: while 条件表达式 可执行语句 end,条件表达式一般由变量、数字、逻辑运算、关系运 算符和一般运算符组成,以判

7、断循环的进行和停止; 只要表达式的值(逻辑值)结果为正确(非0),循环继 续;直到表达式值为0,循环停止。,程序设计中的循环控制,例2.14 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 %第二种操作 end end,对任一自然数n,按如下法则进行运算:若n为偶数, 则将n除2;若n为奇数,则将n乘3加1。将运算结果按 上面法则继续运算, 重复若干次后结果最终是1.,n=5 16, 8, 4, 2, 1,程序设计中的流程控制,3. co

8、ntinue 命令,通常用于 for 或 while 循环语句中,与 if 语句一起使用,跳过本次循环,去执行下一轮循环 4. break命令 通常用于for或while循环语句中,与if语句一起使用,中止本次循环,跳出最内层循环 If 条件表达式,break, end 5. error(message) 显示文本 message,并中断程序执行 If 条件表达式, error(message), end,程序设计中的流程控制,红、绿两队从相距100公里的地点同时出发相向行军 红队速度为10(公里/小时)绿队速度为8(公里/小时) 开始时,通讯员骑摩托从红队出发为行进中的两队 传递消息。摩托车

9、的速度为60(公里/小时)往返于两队 之间. 每遇一队,立即折回驶向另一队.当两队距离小 于0.2公里时,摩托车停止。计算通讯员驾驶摩托车跑 了多少趟(从一队驶向另一队为一趟)。,例2.15 摩托车问题,将红队、绿队和摩托车假设为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的最新

10、位置 当 (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; end k,who Your 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,function 返回变量列表函数名(输入

11、变量列表) %注解说明 输入变量检测,输出变量检测 函数体,函数文件的编写,function Y=young(n) if nargin=0,n=3;end Y=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.18 杨辉三角形,函数内所有变量是局部变量,既不影响其他M文件 中同名变量,也不被其他M文件中同名变量所影响 函数文件中的输出变量要等于某个确定的表达式,函数文件的第一行必须按特定格式书写,函数文件的编写,输入/输出 变量检测命令:nargin 、 nargout 当函数文件被用

12、户调用时(程序执行时),nargin返回函数被调用时输入变量的个数。 nargout返回当函数被调用时输出变量的个数。,例2.19 设地球半径6400km,以150经差绘三维地球。,function earthface() R=6400; theta,fai=meshgrid(-90:15:90,-180:15:180); theta=theta*pi/180;fai=fai*pi/180; X=R*cos(theta).*cos(fai); Y=R*cos(theta).*sin(fai); Z=R*sin(theta); colormap(0 0 1) mesh(X,Y,Z),axis o

13、ff,特例之一:无输入无输出变量的函数文件,函数文件的编写,球函数的图形: 拉普拉斯方程的解,记勒让德多项式,令,球谐函数,令,在球坐标系数绘球谐函数图,function sphefun() t=linspace(0,pi,40);s=linspace(0,2*pi,60); theta,fai=meshgrid(t,s); x=cos(theta);w=sqrt(1-x.2); P31=3*(5*x.2-1)/2; YR=w.*P31.*cos(fai); X=YR.*sin(theta).*cos(fai); Y=YR.*sin(theta).*sin(fai); Z=YR.*cos(th

14、eta); surf(X,Y,Z),axis off,例2.24 Hanoi问题(递归算法),有A、B、C三个塔柱。柱A上n个有孔圆盘,由上而下由小到大叠放。要将柱A上圆盘移到柱C上,并仍按同样顺序叠放。移动圆盘过程中,不允许大圆盘压小圆盘,可将圆盘移至A,B,C中任何一柱上。,汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。,问题分析:n张盘片,A、

15、B、C三根柱子,将A做为开始塔柱,C为目标塔柱,B为中间塔柱。要列出整个转移的操作过程,应用递归技术。 将A上的n-1个盘转移到B上 将A上第n号盘转移到C上 将B上的n-1个盘转移到C上。h(n)=2h(n-1)+1, h(n)=2n-1 第一步是n-1个盘问题(A开始, C中间, B目标); 第二步是1个盘问题; 第三步是n-1个盘问题(B开始, A中间, C目标)。,将三步操作按次序编写函数文件,第一步操作和第三步操作需要调用函数本身,即自己调用自己。,if nargin=1, A= A;B= B;C= C;end if n=1 disp(strcat(No,int2str(n),:,A

16、, - ,C) else hanoi(n-1,A,C,B); disp( strcat(No,int2str(n),:,A, - ,C) hanoi(n-1,B,A,C); end,递归技术实现的关键是设置边界条件(即一个盘的情况)。程序运行结果表明,三个盘的汉诺塔问题需要七步操作。,function hanoi(n,A,B,C) %n-圆盘数,A-开始,B-中间,C-目标,No1: A - C No2: A - B No1: C - B No3: A - C No1: B - A No2: B - C No1: A - C,No1: A - B No4: A - C No1: B - C N

17、o2: B - A No1: C - A No3: B - C No1: A - B No2: A - C No1: B - C,hanoi(3),hanoi(4),No1: A - B No2: A - C No1: B - C No3: A - B No1: C - A No2: C - B,数据文件的输入方法,对于大型矩阵,用文本文件录入数据,并用load命令将数据载入。具体使用格式为,load(filename.txt) 或load filename.txt,其中,filename是文件名,如data.txt。如果数据文件上载成功,则文件名就成为变量名。,例 某数学课成绩由三部分构成:

18、平时10%,期中30%,期末60%。一个行政班学生成绩数据如下,将成绩输入数据文件,按成绩构成比例计算每位同学的最后成绩,并统计出各分数段的人数及百分比。,用记事本将成绩录入,存为文本文件datas.txt 将该文件拷贝到MATLAB 工作目录(work)下; 在命令窗口用命令load datas.txt将数据文件装入内存,处理数据程序如下:,score=0.1*datas(:,1)+0.3*datas(:,2)+0.6*datas(:,3); N=length(score); %统计总人数,II=find(score=60 fensu=F0,F1,F2,F3,F4 %显示各分数段人数 format bank

温馨提示

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

评论

0/150

提交评论