2. MATLAB程序设计方法ppt课件.ppt_第1页
2. MATLAB程序设计方法ppt课件.ppt_第2页
2. MATLAB程序设计方法ppt课件.ppt_第3页
2. MATLAB程序设计方法ppt课件.ppt_第4页
2. MATLAB程序设计方法ppt课件.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

数学科学学院 汪小平wxiaoping325 第二章MATLAB程序设计方法 表达式和运算符命令文件 程序文件 程序设计中的流程控制函数文件的编写格式 1 表达式 由变量 运算符 函数 数字组成球坐标变换 表达式和运算符 用赋值语句创建变量变量名 数据变量名 表达式 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 holdonfai 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 例2 2四边形柱面绘图原理和方法 设四边形顶点为 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 mesh x y z 单位高度四边形柱面 x y z cylinder 1 0 3 mesh x y z 单位高度的三角形锥面 使用cylinder绘柱面 加 减 乘 点乘 右除 点右除 左除 点左除 矩阵幂 点幂 1 算术运算符 2 关系运算符大于 大于等于 等于 不等于 3 逻辑运算符 与 and 或 or 非 not 表达式和运算符 运算优先级 函数运算 算术运算 关系运算 逻辑运算 exp log sin abs fix 表达式 1 fix pi mod 2 4 2 3 2结果为ans 26 三角形任意两边之和大于第三边的逻辑表达式 A a b c a c b b c a B a bc a c b b c a D a b c a c b b c a 命令文件 计算机程序主要功能 接收数据和处理数据 并将处理后的数据完整有效地提供给用户 例2 3将地球模型取为半径为R 6400 km 的球体 计算高度为1万公里的地球同步卫星对地面的覆盖率 在编辑窗口编写文件planet m在命令窗口键入planet结果显示 ans 30 4878 d 10000 R 6400 S0 4 pi R R S 2 pi R R d R d S S0 100 命令文件 MATLAB命令的有序集合 文件执行 对文件中命令进行批处理 即从第一条命令开始按顺序执行 直到最后一条命令 如果中间某条命令出错 则中断并输出错误信息 M文件分为命令文件和函数文件两种 在编辑窗口中编写 保存并对文件命名 命令窗口键入文件名运行 观察运行结果 条件控制 循环控制 错误控制 终止运行控制 条件控制 有选择地运行程序块1 if elseif语句例2 8判润年程序 程序设计中的流程控制 year input inputyear n1 year 4 n2 year 100 n3 year 400 ifn1 fix n1 n2 fix n2 disp 是润年 elseifn1 fix n1 n3 fix n3 disp 是润年 elsedisp 不是润年 end 润年条件有二 能被4整除 但不能被100整除 能被4整除 又能被400整除 1 for循环语法 for变量 初值 步长 终值可执行语句end 程序设计中的循环控制 例2 4裴波拉奇数列n input inputn f 1 1 f 2 1 fork 3 nf k f k 1 f k 2 endf n f 44 701408733 例2 5程序功能如下 把边长为2以原点为中心的正方形旋转pi 24 将其压缩 r 0 89 重复24次并绘图 xy 1 1 1 1 11 11 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 画线并暂停一秒fork 1 24xy 89 xy A 旋转并压缩x xy 1 y xy 2 line x y pause 1 end 例2 6利用帧动画方法演示马鞍面旋转过程 M moviein 24 x y meshgrid 6 5 6 z x 2 y 2 创建马鞍面坐标数据AZ 30 fork 1 24mesh x y z axisoff 绘图colormap 001 view AZ 20 旋转15OM k getframe 帧设计AZ AZ 15 endmovie M 2 帧播放 2 while循环将循环体中语句循环执行直到条件不成立为止 语法 while条件表达式可执行语句end 条件表达式一般由变量 数字 逻辑运算 关系运算符和一般运算符组成 以判断循环的进行和停止 只要表达式的值 逻辑值 结果为正确 非0 循环继续 直到表达式值为0 循环停止 程序设计中的循环控制 例2 73n 1问题 n input inputn 输入数据whilen 1r rem n 2 求n 2的余数ifr 0n n 2 第一种操作elsen 3 n 1 第二种操作endend 对任一自然数n 按如下法则进行运算 若n为偶数 则将n除2 若n为奇数 则将n乘3加1 将运算结果按上面法则继续运算 重复若干次后结果最终是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 程序设计中的流程控制 红 绿两队从相距100公里的地点同时出发相向行军红队速度为10 公里 小时 绿队速度为8 公里 小时 开始时 通讯员骑摩托从红队出发为行进中的两队传递消息 摩托车的速度为60 公里 小时 往返于两队之间 每遇一队 立即折回驶向另一队 当两队距离小于0 2公里时 摩托车停止 计算通讯员驾驶摩托车跑了多少趟 从一队驶向另一队为一趟 例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 2iff 1tk B A vb vc elsetk B A vc va endA A va tk B B vb tk plot A 0 R B 0 g pause 1 f f k k 1 endk whoYourvariablesare AftkvbBkvavc A 0 B 100 va 10 vb 8 vc 60 f 1 k 0 plot A 0 ro B 0 go holdon function返回变量列表 函数名 输入变量列表 注解说明输入变量检测 输出变量检测函数体 函数文件的编写 functionY young n ifnargin 0 n 3 endY eye n Y 1 ones n 1 fork 3 nY k 2 k 1 Y k 1 1 k 2 Y k 1 2 k 1 end 例2 9杨辉三角形 函数内所有变量是局部变量 既不影响其他M文件中同名变量 也不被其他M文件中同名变量所影响函数文件中的输出变量要等于某个确定的表达式 函数文件的第一行必须按特定格式书写 函数文件的编写 输入 输出变量检测命令 nargin nargout当函数文件被用户调用时 程序执行时 nargin返回函数被调用时输入变量的个数 nargout返回当函数被调用时输出变量的个数 例2 10设地球半径6400km 以150经差绘三维地球 functionearthface 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 001 mesh X Y Z axisoff 特例之一 无输入无输出变量的函数文件 函数文件的编写 球函数的图形 记勒让德多项式 令 球谐函数 令 在球坐标系数绘球谐函数图 functionsphefun 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 axisoff 例2 11Hanoi问题 递归算法 有A B C三个塔柱 柱A上n个有孔圆盘 由上而下由小到大叠放 要将柱A上圆盘移到柱C上 并仍按同样顺序叠放 移动圆盘过程中 不允许大圆盘压小圆盘 可将圆盘移至A B C中任何一柱上 问题分析 n张盘片 A B C三根柱子 将A做为开始塔柱 C为目标塔柱 B为中间塔柱 要列出整个转移的操作过程 应用递归技术 将A上的n 1个盘转移到B上 将A上第n号盘转移到C上 将B上的n 1个盘转移到C上 第一步是n 1个盘问题 A开始 C中间 B目标 第二步是1个盘问题 第三步是n 1个盘问题 B开始 A中间 C目标 将三步操作按次序编写函数文件 第一步操作和第三步操作需要调用函数本身 即自己调用自己 ifnargin 1 A A B B C C endifn 1disp strcat No int2str n A C elsehanoi n 1 A C B disp strcat No int2str n A C hanoi n 1 B A C end 递归技术实现的关键是设置边界条件 即一个盘的情况 程序运行结果表明 三个盘的汉诺塔问题需要七步操作 functionhanoi n A B C n 圆盘数 A 开始 B 中间 C 目标 No1 A CNo2 A BNo1 C BNo3 A CNo1 B ANo2 B CNo1 A C No1 A BNo4 A CNo1 B CNo2 B ANo1 C ANo3 B CNo1 A BNo2 A CNo1 B C hanoi 3 hanoi 4 No1 A BNo2 A CNo1 B CNo3 A BNo1 C ANo2 C B 数据文件的输入方法 对于大型矩阵 用文本文件录入数据 并用load命令将数据载入 具体使用格式为 load filename txt 或loadfilename txt 其中 filename是文件名 如data txt 如果数据文件上载成功 则文件名就成为变量名 例2 12某数学课成绩由三部分构成 平时10 期中30 期末60 一个行政班学生成绩数据如下 将成绩输入数据文件 按成绩构成比例计算每位同学的最后成绩 并统计出各分数段的人数及百分比 用记事本将成绩录入 存为文本文件datas txt 将该文件拷贝到MATLAB工作目录 work 下 在命令窗口用命令loaddatas txt将数据文件装入内存 处理数据程序如下 score 0 1 datas 1 0 3 datas 2 0 6 datas 3 N length score 统计总人数 II find score 60fansu F0 F1 F2 F3 F4 显示各分数段人数formatbankR fansu N 显示各百分比 牟合方盖的几何图形 绘制柱面x2 y2 R2与柱面x2 z2 R2所围立体在x y平面上半部分曲面 由第二个方程解出z 得 利用极坐标变换 h 2 pi 100 t 0 h 2 pi r 0 0 05 1 x r cos t y r sin t z sqrt 1 x 2 meshz x y z 练习与思考题 1 叙述古希腊三大难题之一的化圆为方问题 并用实验数据显示误差 2 用一句话说明循环控制语句的特点 3 说明for循环while循环语句的相同和不同之处 4

温馨提示

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

评论

0/150

提交评论