MATLAB程序设计方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 1 1 1 1 Y 1 1 1 1 1
4/32
使用cylinder绘柱面
cylinder(R,N)创建单位高度绕Z轴旋转曲面,R 为母线,N表示圆圈上点数,N缺省默认值为 20。
Cylinder 二十边形柱面 [x,y,z]=cylinder([1,1],4); mesh(x,y,z) 度四边形柱面 [x,y,z]=cylinder([1,0],3); mesh(x,y,z) 的三角形锥面
坐标数据
1
line(x,y),pause(1)
0.5
线并暂停一秒
for k=1:24
0
xy=.89*xy*A’;
-0.5
并压缩
-1
-1 -0.5
x=xy(:,1);y=xy(:,2);
line(x,y),pause(1)
%创建正交
%提取 %画
%旋转
0
0.5
1
12/32
例2.6 利用帧动画方法演示马鞍面旋转过程。
k
19/32
————函数文件的编写————
function
表)
返回变量列表=函数名(输入变量列
%注解说明
输入变量检测,输出变量检测
例2.9 函杨数辉体三角形 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
球谐函数 Y31( , ) P31(cos )cos 令 Y31( , )
0 2
在球坐标系
x sin cos
数绘球谐函
y sin sin
数图
z cos
23/32
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(theta); surf(X,Y,Z),axis off
21/32
————函数文件的编写————
特例之一:无输入无输出变量的函数文件
例2.10 设地球半径6400km,以150经差绘三维地球。
function earthface()
R=6400;
[theta,fai]=meshgrid(-90:15:90,-
180:15:180);
theta=theta*pi/180;fai=fai*pi/180;
24/32
例2.11 Hanoi问题(递归算法)
%单位高度 %单位高
%单位高度
5/32
————表达式和运算符————
1 .算术运算符
2.关系运算符
+加 减
*乘 / 右除 \ 左除
-
.* 点乘 ./ 点右除 .\ 点左除
<
小于
<= 小于等于
>
大于
>= 大于等于
3^.逻矩辑阵运幂算符.^ 点幂
== 等于
&
与 ~= 不等于
(and)
|
或
(or)
6/32
10/32
————程序设计中的循环控制————
1. for 循环 语法: for 变量 =初值:步长:终
值
可执行语句
例2.4 裴波en拉d奇数列
n=input('input n:=');
f(1)=1;f(2)=1; for k=3:n
f(k)=f(k1)+f(k-2);
f(ef4n(4dn))=701408733
第二章 MATLAB程序设计方法
表达式和运算符 命令文件(程序文件) 程序设计中的流程控制 函数文件的编写格式
数学科学学院:汪小平 wxiaoping325@163.com 1
————表达式和运算符————
用赋值语句创建变量 变量名=数据
变量名=表达式
表达式——由变量、运算符、函数、数字组成
只要表达式的值(逻辑值)结果为正确(非0),循环
继
续;直到表达式值为0,循环停止。
14/32
————程序设计中的流程控制————
例2.7 3n + 1 问题.
对任一自然数n,按如下法则进行运算:若n为偶
数,
则将n除2;若n为奇数,则将n乘3加1。将运算结果按
上n面=i法np则u继t(续‘运in算p,ut重复n=若’干)次; 后结果最终% 是1.
当C向左运动时,A、C相遇时间: tk= (B –
A)/(60+10)
利用相遇时间tk、及时计算A, B的最新位置
当 (B– A)<0.2 时程序结束。
18/32
A=0; B=100;
va=10;vb=8;vc=60;
f=1;k=0;
plot(A,0,'ro',B,0,'go'),ho
wlhdiolne (B-A)>0.2
例2.8 摩托车问题 红、绿两队从相距100公里的地点同时出发相向行军 红队速度为10(公里/小时)绿队速度为8(公里/小时) 开始时,通讯员骑摩托从红队出发为行进中的两队 传递消息。摩托车的速度为60(公里/小时)往返于两 队 之间. 每遇一队,立即折回驶向另一队.当两队距离小 于0.2公里时,摩托车停止。计算通讯员驾驶摩托车跑 了多少趟(从一队驶向另一队为一趟)。
运算优先级
①函数运算 exp()、log()、sin()、abs()、 ②算术运算 fix()、···
③关系运算 .^、^、.*、./、*、/、+、–、;
④逻辑运算 <、<=、>、>=、==、~=
表达式 (1+fix(&p、i)|)*mod(2,4)+2*3^2结果为 ans=26;
三角形任意两边之和大于第三边的逻辑表达式 (A) a+b>=c | a+c>=b | b+c>=a (B) a+b<=c | a+c<=b | b+c<=a (C) a+b>c | a+c>b | b+c>a (D) a+b>c & a+c>b & b+c>a
if f= =1
tk=(B-A)/(vb+vc);
else
who
tk=(B-A)/(vc+va); Your variables are:
end
A
f
A=A+va*tk;B=B-vb*tk; tk
vb
B
k
plot(A,0,'R.',B,0,'g.'),pausvea(1)
vc
f=-f;k=k+1;
end
结果显示:
ans = 30.4878
8/32
M文件分为命令文件和函数文件两种
命令文件——MATLAB命令的有序集合。
文件执行——对文件中命令进行批处理,即从第一 条命令开始按顺序执行,直到最后一条命令。如果 中间某条命令出错,则中断并输出错误信息
①在编辑窗口中编写;
②保存并对文件命名;
③命令窗口键入文件 名运行;
20/32
————函数文件的编写————
函数文件的第一行必须按特定格式书写 函数内所有变量是局部变量,既不影响其他M文件 中同名变量,也不被其他M文件中同名变量所影响 函数文件中的输出变量要等于某个确定的表达式 输入/输出 变量检测命令:nargin 、 nargout 当函数文件被用户调用时(程序执行时) nargin返回函数被调用时输入变量的个数。 nargout返回当函数被调用时输出变量的个数。
7/32
————命令文件————
计算机程序主要功能——接收数据和处理数据,并将 处理后的数据完整有效地提供给用户
例2.3 将地球模型取为半径为R=6400(km) 的球体,计算高度为1万公里的地球同步卫 星对地面的覆盖率
在编辑窗口编写文件 planet.m
在命令窗口键入 planet
d=10000; R=6400; S0=4*pi*R*R; S=2*pi*R*R*d/(R+d); S/S0*100
输入数据
while n~=1
r=rem(n,2);
%求
n/2的余数
if r = =0
wenku.baidu.com
n=n/2
%第一
种操作
种操作
elsne=3*n+n11=5
16,
8, 4, 2,
%第二
15/32
————程序设计中的流程控制————
3. continue 命令
通常用于 for 或 while 循环语句中,与 if 语句一 起使用,跳过本次循环,去执行下一轮循环
球坐标变换
x Rcos cos
y Rcos sin
z Rsin
x=R*cos(theta)*cos(fai );
y=R*cos(theta)*sin(fai );
——纬度
——经度
2/32
例2.1 格林威治天文台建于1675 年,其经度为零,纬度为北纬510。 计算格林威治天文台在地心直角 坐标系中的坐标并在球面上标记
④观察运行结果;
·········
·········
·········
9/32
————程序设计中的流程控制————
条件控制; 循环控制; 错误控制;终止运行控制
条件控制——有选择地运行程序块
1. if / elseif 语句yne1a=ry=eianrp/u4t;('input year:='); 例2 .8 判润年程序 n2=year/100;
4. break命令 通常用于for或while循环语句中,与if语句一起使用, 中止本次循环,跳出最内层循环
If 条件表达式,break, end
5. error(‘message’) 显示文本 message,并中断程序执行
If 条件表达式, error(‘message’), end
16/32
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 off
15
22/32
球函数的图形 记勒让德多项式
令 x cos
P31( x)
3 2
0
1 x2 (5x2 3)
11/32
例2.5 程序功能如下:把边长为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);
[X,Y,Z]=sphere(24); mesh(X,Y,Z),hold on fai=0; theta=51*pi/180; x0=cos(theta)*cos(fai); y0=cos(theta)*sin(fai); z0=sin(theta); plot3(x0,y0,z0,'ro','linewidth',2) view(124,30)
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
%绘图
colormap([0 0 1]),view(AZ,20) M(:,k)=getframe;
%帧设计
润年条件有二
n3=year/400; if n1==fix(n1)&n2~=fix(n2)
①能被4整除,但
disp('是润年')
不能被100整除; elseif
②能被4整除,又 能被400整除。
n1==fix(n1)&n3==fix(n3) disp('是润年')
else
disp('不是润年')
end
AZ=AZ+15; end movie(M,2)
%
off
%旋转15O
13/32
————程序设计中的循环控制————
2. while循环
将循环体中语句循环执行直到条件不成立为止。
语法:
while 条件表达式 可执行语句
end
条件表达式一般由变量、数字、逻辑运算、关系运
算符和一般运算符组成,以判断循环的进行和停止;
3/32
例2.2 四边形柱面绘图原理和方法。
设四边形顶点为(-1, -1), (1, -1), (1, 1), (-1, 1). 设柱面高为1,创建Z坐标矩阵
0 0 0 0 0 Z 1 1 1 1 1
创建柱面的X坐标和Y矩阵
1
0.5
0 1
0
1 0
-1 -1
X
1 1
1 1
1 1
1 1
1 1
17/32
相遇问题的数学模型
将红队、绿队和摩托车假设为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)