搜索
您的当前位置:首页正文

MATLAB 数学实验 实验课件备注3_4

来源:六九路网
《数学实验》3、4备课注记

第一章III(余下部分)内容不足以用两小时上课,将这一部分与第二章I的内容合在一起完成第四和第五周数学实验课堂教学。

第一章III:数据显示格式、字符串、图形文件输出(宝石切割内容给学生自学)。

一、数据显示格式

科技文献常使用浮点数形式表示实数,浮点数由两部分组成,即尾数部和阶码部。将一个数的小数点向左移动至数的左第一位,形成尾数部分;同时将移动的位数做为10的阶码,形成阶码部。浮点数的最大优点是用阶码部使一个数的数量级一目了然。对于MATLAB系统,需要熟悉两种最基本的数据显示格式,即短格式和长格式。短格式只显示十进数到小数点后四位,长格式则显示十进数到小数点后十四位。其它的格式只需要用时再作了解。

6.378137×10,2.99792458×10

是两个常用的常数(以公里为单位的地球长半轴和以公里/秒为单位的光速),由阶码知第一个数的第一位是千,第二数的第一位是十万。在MATLAB系统中10的阶码用e后跟一个整数表示,地球半径和光速分别表示为

6.378137 e +004、2.99792458e +005

例题1.24计算地球表面积,我们有这一常识:地球表面积大约5亿平方公里。 Eps 在MATLAB的英文帮助信息中解释为1到最接近1且大于1的浮点数的间距。 VPA显示格式可以用尽可能多的十进制位显示数据。 立方倍积问题是古希腊三大几何难题之一,在编程练习中用该问题做误差估计实验。这是神向古代人类的智力提出的挑战。无论用多少位十进制数都无法精确。 二、字符串变量的操作

字符串变量不同于数值变量,但数值变量一样不用定义,直接赋值就行。但字符串以数组方式存放,一个字符就是一个数组中的元素。两个关于字符串操作的命令:strcat()和int2str()在两个例子中要用到,用于实现字符串的输出操作很方便。

两个例子中例1.27生肖问题比较有意思,12生肖系列为“鼠牛虎兔龙蛇马羊猴鸡狗猪”。用年份除以12的余数做12生肖系列中的定位肯定不对,如果某一年的年份除12的余数为0,就无法定位。2009是牛年(在生肖系列中是第二位),用2009除12 的余数5,将错误定位到龙年。定位计算方法需修正为(年份 – 4 )求12的余数后加1。改用2009 – 4 =2005除12 的余数为2,就得到正确定位。课堂上在MATLAB系统中运行程序演示,修改输入数据,观察,增加学生兴趣。演示程序时注意,程序拷贝到MATLAB的程序编辑窗口中,存盘并运行。如果有错,可能是因为有中文字符引起的错,将引号或逗号换为英文字符就可以了。还可以向学生提问关于星座的知识,学生应该有人知道。

关于字符串操作的例题有很多,最后的练习题中有农历年的计算问题,与生肖问题类似。下面农历年问题程序仅供老师参考,用于对学生的程序设计指导。如果用于课堂教学,效果可能不如生肖问题。

year=input('input year:='); S1='辛壬癸甲乙丙丁戊己庚'

S2='酉戍亥子丑寅卯辰巳午未申'; %创建字符串数组 k1=mod(year,10); %年份除10的余数 if k1==0,k1=10;end

s1=S1(k1); %准确定位 k2=mod(year,12);

3

5

if k2==0,k2=12;end

s2=S2(k2)

results=strcat(int2str(year),'年是', s1,s2,'年') 三、图形文件输出

图像文件输出可以直接在图形窗口操作.将MATLAB图形窗口的图形以文件形式输出(生成数码照片)。请注意机房现在安装的MATLAB是7.1版本,与讲义中有区别。 在下拉菜单中选择“Export”是6.5版本操作,MATLAB的高版本中应选择“Save As”。

例题复变函数图是一个斜放的圆盘,讲义封面的图形给学生自学。

第二章I:表达式和运算符、命令文件、程序设计中的流程控制

MATLAB本身是一种交互式语言,它的程序实际上是将命令或表达式语句编排到一起可进行批处理的文件。通常说的计算机程序是指令的有序集合,程序设计是一种目标明确的智力活动,是包括设计、编制、调试的一个过程。所以要在命令窗口和程序编辑窗口之间多次切换。在程序设计教学中,普遍认为案例方法是较为成功的一种方法,对典型案例的学习比对程序语言语法的记忆更具体或更直接。

一、表达式和运算符

球坐标变换是用了经纬度表示法,与微积分中球坐标略为不同(经纬度变化的区间在数学教科书中取为从0开始,与东经西经,北纬南纬不一致)。例题2.2中表达式实现对数据的逐步处理,以大地经纬度转换为空间直角坐标系数据为例,介绍球坐标的数学原理(空间点在各坐标轴上的投影),获得直角坐标数据是手段。目的是获取向量间夹角(弧度制)。 算术运算符号主要用于数学表达式构造,关系运算符号主要用于条件表达式构造,条件表达式的结果是逻辑值,所以逻辑运算符号也可用于对条件表达式的复合。

在一个表达式中,各种运算的优先级别必须要搞清楚(考试必考),否则程序设计要出错,得不到正确的数据结果。将运算分为四类:

函数运算、算术运算、关系运算、逻辑运算

每一类运算中还有优先级别。三角形三边之和的关系运算是非常典型的条件表达式。 二、命令文件

例题2.1的教学作用是示范一个程序文件的录入保存运行过程。例题2.1是球冠面积计算公式的应用,假设地球是半径为R=6400(km)的球,这样人造卫星的信号对地球表面的覆盖面积就是球冠面积,但不可以直接应用球冠面积公式。必须用卫星高程d来计算出球冠的高度h。这里的d=10000(km)是一般卫星的高程。这两个变量的关系可以做为思考题给学生。以下推导供参考。

将地球设为球体,以球心为原点建立直角坐标系,此时,有

Rcos

Rd所以,球冠的高度

hRRcosRR2Rd

d 故

Rd代入球冠面积公式即得

hRd

R α 地球 Rd例题2.3的教学目的是利用矩阵描述四边形柱面的数据,用mesh绘图时由于矩阵只有两行,网面成为最简形式。如果使用MATLAB的柱面命令,取四个点半径为1也可以形成四边形

S2R2d

柱面图,而命令

[x,y,z]=cylinder([1,1],4)

可提取数如下

x =

1.0000 0.0000 -1.0000 -0.0000 1.0000 1.0000 0.0000 -1.0000 -0.0000 1.0000 y =

0 1.0000 0.0000 -1.0000 0 0 1.0000 0.0000 -1.0000 0 z =

0 0 0 0 0 1 1 1 1 1 这样可以快速创建柱面。

例题2.7中角度计算公式结合了向量内积的计算公式和向量内积的几何意义所导出。即

op1op2|op1||op2|cosx1x2y1y2z1z2

而|op1||op2|R2。

以上三个例题作为顺序结构的程序例子。顺序结构是程序三种结构之一。另外两种分别是分支结构和循环结构。注意:

程序文件名不可以用数字,也不可以用中文符号;

要纠正学生将程序编辑器中内容粘贴到命令窗口的不良习惯;

程序文件中每一个变量都会在运行结束后保存在内存中(用who命令可以看到)。

三、程序设计中的流程控制

前面已经介绍顺序结构程序例子不用重复,循环结构和分支结构用于程序设计中的流程控制。即条件控制和循环控制。

条件控制——使程序有条件的去运行某一个程序块,有条件语句,分支语句,多分支语句。

循环控制——有条件的重复运行同一个程序块。有条件控制的循环语句,数控制的循环语句两类(即for-end语句和while-end语句)。程序运行时,每运行一次程序块(循环体),控制变量会改变,从而循环条件也会发生改变,当不满足循环控制的条件时,循环将结束。 例题2.8判润年程序,输出数据是字符串,也可以输出数据是逻辑值,以逻辑值为输出,当逻辑值为真。这样可以编写为一个子程序(函数)用于多次调用。是典型的条件语句应用题。其中有简单的数学原理,因为润年是处理历法中数据不精确的手段,400年需要有97个润年,才与天体运行相合。如果四年一润就会有100个润年,去掉四个百年中的三个百年保留第四个百年就刚好是97个润年了。所以就有了本题中的两个润年判别原则。

例题2.10,比较简单,裴波拉奇数列的递推实现介绍数控制的循环语句,这种语句在数值计算中使用很频繁。

例题2.11是正交变换的应用。

将正方形逆时针旋转 角度并嵌套,需要旋转和压缩操作。外正方形的对角线半长为R1,内正方形的对角线半长为R2,R2/R1的压缩系数用如下公式计算

r1cossin

例题2.12请各位老师自行处理,是细讲还是粗讲或不讲(建议演示而不细讲)。教学难点不是帧动画,而是第二条语句应用。语句[x,y,z]=cylinder([1,0],3)产生的数据如下

x =

1.0000 -0.5000 -0.5000 1.0000 0 0 0 0 y =

0 0.8660 -0.8660 0 0 0 0 0 z =

0 0 0 0 1 1 1 1

例题2.14是比较经典的算法实现程序。

最后对流程控制中的错误控制和结束控制,引导学生用帮助命令获取更多信息。 例题2.6是使用break中断循环的例子

例题2.7是使用error中断循环的例子

最后的立方倍积实验是介绍让小数点浮动的技术实现。目的是提取误差。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top