(20##—2012 学年第1学期)
课程号: B410030-1 课程名称: 创新与整合设计 学分: 3
一、作品成绩统计
二、作品分析
(一)作品总体分析
1、作业内容及要求
课程作业以“文具+功能=时尚”为命题设计,并且与潘天寿设计比赛结合,要求有设计说明和六视图。
2、作业难易度分析
版面表达是否清楚,是否有创意,功能是否可行性,是否具有环保性是本课程的重点作业,主要考查学生的构图和对创意理解能力。
3、相对于教学大纲的作品内容覆盖面分析
基本覆盖教学大纲所要求知识点
4、作品创意能力分析
每次作业均要求包含一定的创意,想法较新颖且作品表达充分可获高分
(二)高分、低分分析
(三)学生掌握知识点和综合运用能力情况分析,以及学生学习上存在的薄弱环节分析(100~150字)
本课程通过训练使工业设计专业的学生具备了基本的创意设计自我评价能力,但部分学生对设计思维的理解还需要深入,尤其对人与自然、人与行为之间的关系理解不够明确,今后的课程教学中要特别注重学生对设计思维的理解。
三、试卷的命题及阅卷方式
(一)试卷命题方式 □集体 ■个人
(二)阅卷组织方式 □集体 ■个人
四、本课程教学拟改进措施及建议(150~200字)
在课程教学中多布置些资料收集的作业,让学生尽早了解专业设计的主要内容,通过讲解一些创意设计实例激发学生的学习热情和创作欲望。针对部分学生对设计思维理解上存在的问题,要特别加强专业上是如何思考的内容,要增加相关的案例分析内容。建议课程理论教学中多使用多媒体教学,最好直接在专业教室中配置相关设备,可以使学生边听讲解边做设计,效果会更好。
作品分析人(签字): 日期:
系(教研室)主任(签字): 日期:
浙江大学城市学院实验报告
课程名称 数学建模(II)
实验项目名称 实验三 Matlab程序设计
学生姓名 专业班级 学号
实验成绩 指导老师(签名) 日期
一. 实验目的和要求
1、掌握M atlab特有的M文件的设计;
2、掌握并能熟练应用关系运算、逻辑运算、程序的控制结构;
二. 实验预备知识
利用MATLAB的命令窗口,可以完成较为简单的运算,但遇到较为复杂的问题时,仅靠命令窗口来解决可能会非常繁琐,这时我们就要考虑使用MATLAB的程序设计。MATLAB提供了一个完善的程序设计语言环境,使我们能方便地编写复杂的程序,完成各种复杂的计算。MATLAB语言在形式上与C语言相似,但它的编程效率比C语言高得多,因为用MATLAB语言编程,不需要事先定义变量,不需要考虑数据类型,系统会自动把所有的数据,包括标量、向量、字符、字符串等统一处理成矩阵,矩阵的大小是根据需要动态变化。本实验中我们主要介绍MATLAB类似于其它高级语言的关系运算、逻辑运算、程序的控制结构,以及MATLAB特有的M-文件。
关系运算是指对两个量之间的大小比较,MATLAB提供了6个关系运算符,如表3.1所示
。 表3.1
若关系运算比较两个数值,则当关系成立时,结果为1(表示真),否则为0(表示假)。进行关系运算的两个量也可以是具有相同格式的矩阵(事实上,若比较的是两个数,这两个数可以看作为两个1×1矩阵),此时两矩阵的所有对应位置的元素作关系运算,最终的结果是由各对应元素进行关系运算后的结果“0”和“1”组成的矩阵,格式与比较矩阵相同。
>> a1=5>8
a1 =
0
>> a2=[1 2 3;4 5 6];a3=[6 5 4;3 2 1];
>> a4=a2<=a3 %两矩阵进行关系运算。
a4 =
1 1 1
0 0 0
>> a5=a2>=3 %矩阵与标量间的关系运算是指矩阵的每个元素与该标量进行关系运算。
a5 =
0 0 1
1 1 1
MATLAB提供了3各逻辑运算符,如下表3.2所示:
表3.2
逻辑运算将每个非零元素当作1(真)来处理。同关系运算一样,它也可以作用于格式相同的矩阵,运算结果为由“0”和“1”组成的矩阵。
>> b1=3&0,b2=3|0,b3=~(2>=3) %数值的逻辑运算。
b1 =
0
b2 =
1
b3 =
1
>> b4=[-2 -1 0;1 2 3];b5=[1 3 5;-1 -3 -5];
>> b6=(b4>-2)&(b5<=3),b7=~(b5>=b4|b4<0) %矩阵间的逻辑运算。
b6 =
0 1 0
1 1 1
b7 =
0 0 0
1 1 1
除上述的关系运算符和逻辑运算符之外,MATLAB还提供了大量的关系和逻辑函数,最常见的有函数any(A)、all(A)以及异或运算函数xor(A,B)。若矩阵A的某列中有非零元素, 则any(A) 的关于此列的值为1,否则为0。若矩阵A的某列中所有元素非零,all(A) 的关于此列的值为1,否则为0。
>> c=[1 2 3;0 1 0];
>> c1=any(c),c2=all(c)
c1 =
1 1 1 %矩阵c的每一列中都有非零元素。
c2 =
0 1 0 %矩阵c中只有第二列中所有元素非零。
MATLAB程序的控制结构有顺序结构、循环结构和选择结构三种。顺序结构较为简单,即根据语句的书写顺序,从上到下按行执行,执行完所有语句后结束程序运行。我们这里主要介绍循环结构的控制流语句for、while和选择结构的控制流语句if、switch,这四个语句均以end结束。
for循环语句的一般格式为:
for 循环变量=冒号表达式
循环体
end
其中的循环体可以是一条语句或命令,也可以是由逗号、分号隔开的若干语句或命令。冒号表达式用来控制循环的次数,对于由冒号表达式确定的每一个循环变量的值,循环体中的所有语句都被重复执行。
我们利用for循环来计算自然数1~5的阶乘。
>> d=zeros(1,5); %开辟存放各阶乘的地址, MATLAB可动态调节矩阵的格式,故只使用后面的语句结果也是将各阶乘存放到矩阵d中,但预先开辟空间可节约运行时间。
>> e=1; %对乘积因子变量e赋初值。
>> for i=1:5 %循环变量i从1一直到5,步长为1。
d(i)=e*i; %此for循环的循环体包含两个语句,此句作用是求i的阶乘并存放在d(i)处且结果不显示(不显示可节约运行时间)。
e=d(i); %改变e的值且结果不显示。
end %结束for循环。
>> disp(d) %显示各阶乘。
1 2 6 24 120
前述for语句一般格式中的“冒号表达式”部分也可以是任意的向量或矩阵的变量名,此时,循环变量依次取向量的值或按矩阵的列依次取值。
>> f1=[1 3 5];f2=[1 3 5;4 6 8]; i=1;j=1;
>> for g=f1
f3(i)=g;i=i+1; %取出f1的各分量的值。
end
>> for h=f2
f4(j)=h(2)*h(1);j=j+1; %求各列元素的乘积。
end
>> disp(f3)
1 3 5
>> disp(f4)
4 18 40
for循环可以嵌套使用,如以下程序可以生成3×5Hilbert矩阵。
>> k=zeros(3,5);
>> for i=1:3
for j=1:5
k(i,j)=1/(i+j-1);
end
end
>> format rat %改变显示格式。
>> k
k =
1 1/2 1/3 1/4 1/5
1/2 1/3 1/4 1/5 1/6
1/3 1/4 1/5 1/6 1/7
>> format %恢复显示格式。
for循环主要用于循环次数固定的情形,而很多实际计算中循环次数往往并不能预先确定,此时我们可以使用while循环语句。
while循环语句的一般格式为:
while 条件
循环体
end
“条件”即执行循环的条件,用来控制循环的次数,它可以是关系表达式或逻辑表达式。当条件成立(即为1)时,循环体被执行,直到条件不成立(即为0)时,结束循环。
我们利用while循环来寻找阶乘小于100万的最大的自然数。
>> m=1;
>> while prod(1:m)<1000000 %prod为向量的连乘函数。
m=m+1;
end
>> m=m-1 %结束循环的条件为阶乘大于100万,故最终的结果需减1。
m =
9
选择结构的if语句的格式主要有以下三种:
格式1:if 条件
语句组
end
当条件成立时,执行语句组,否则执行end的后续语句。
格式2:if 条件
语句组1
else
语句组2
end
当条件成立时,执行语句组1,否则执行语句组2。执行完成之后,执行end的后续语句。
格式3:if 条件1
语句组1
elseif 条件2
语句组2
……
elseif 条件n
语句组n
else
语句组n+1
end
当条件1成立时,执行语句组1,执行完成后,执行end的后续语句;当条件1不成立时,判断条件2,若其成立,执行语句组2,执行完成后,执行end的后续语句;依次类推,若所有条件均不成立,则执行语句组n+1,执行完成后,执行end的后续语句。
我们可以利用上述3种格式的if语句自定义符号函数。若用格式1,需分别调用3次;若用格式2,则需使用嵌套;下面是用格式3书写的程序。
>> if x>0
y=1;
elseif x<0
y=-1;
else
y=0;
end
无论是for循环还是while循环,break语句可以强行退出循环,立即执行此循环end的后续语句。一般我们用if语句与break语句组合使用来中断循环。
我们用while循环来统计由MATLAB产生的100个随机数中介于0.5到1的随机数个数,并使用break语句来中断循环。事实上,本例通过简单的循环语句即可实现,下列程序仅为说明break语句的用法。
>>p=rand(1,100);i=1;s=0; %生成随机数,循环变量、计数器赋初值。
>>while 1 %该条件总为真,如无中断语句break,循环将无休止地运行。
if p(i)>=0.5
s=s+1;
end
i=i+1;
if i>100 %设置循环中断条件。
break %该条件总为真,如无中断语句break,循环将无休止地运行。
end
end
>> s
s =
54 %换新的100个随机数得到的统计个数可能不同。
选择结构的switch语句根据表达式的值来选择执行相应的语句组。switch的格式为:
switch 表达式
case 值1
语句组1
case 值2
语句组2
……
case 值n
语句组n
otherwise
语句组n+1
end
当表达式的值为值1时,执行语句组1,执行完成后,执行end的后续语句;当表达式的值为值2时,执行语句组2,执行完成后,执行end的后续语句;依次类推,若以上均不满足,执行语句组n+1,执行完成后,执行end的后续语句。
到目前为止,我们仍然一直在命令窗口逐行输入数据和命令来实现计算等功能。这种方法对于较为简单的问题还可以接受,一旦问题较为复杂,这种方法就显得相当麻烦,这时MATLAB提供的以m为扩展名的M文件的作用就突显出来了。M 文件有两种类型:文本M文件和函数M文件。
建立M文件可以在MATLAB的主窗口的File下拉式菜单中选择New,再选择M-file,此时MATLAB将打开一个文本编辑窗口,在此窗口中输入一系列的命令和数据。编辑结束后,在此窗口的File下拉式菜单中选择Save,将弹出保存对话框,选择文件的保存位置并键入文件名称(需遵循变量的命名规则)和“.m”,单击保存按钮即完成M文件的建立。已经建立好的M文件可以随时打开、编辑、修改,方法同Windows操作系统。
文本M文件就是命令行的简单叠加,调用文本M文件时,MATLAB会自动按顺序执行文件中的命令行。以下是我们自己编写的命名为Fibo.m的一个文本M文件,它的功能是产生前n个Fibonnaci数。
f=[1 1];i=1;
if n= =1
f(2)=[ ];
elseif n==2 %如果n为2,不执行任何语句
else
while i<n-1
f(i+2)=f(i)+f(i+1);
i=i+1;
end
end
f
这里要注意的是,文本M文件中所定义和使用的变量均为全局变量,如本例中的f、i及n,它们不仅在本程序的运行过程中有效,程序运行完成之后仍然有效。我们在编辑程序时,要尽量避免使用全局变量。
运行文本M文件,只需在MATLAB的命令窗口中直接键入该文本M文件的文件名即可。
>> n=10;Fibo %产生前10个Fibonnaci数;文件中未指定n的大小,需事先指定。
f =
1 1 2 3 5 8 13 21 34 55
函数M文件是另一类M文件。MATLAB所提供的绝大多数功能函数都是由函数M文件实现的,可见函数M文件的重要性。我们可以根据需要建立自己的函数M文件,它能够像系统中的功能函数一样方便地调用,从而极大地扩展了MATLAB的功能。
函数M文件的第一行有特殊的格式,必须以function开头。函数M文件的一般格式为:
function [输出参数表]=函数名(形式参数)
语句组
end
这里的输出参数表可以是一个变量,也可以是多个变量,他们表示要计算的量。如果是一个参数,双括号可以去掉;如果是多个变量,两两之间用逗号隔开。这里的函数名必须与该文件的文件名一致,这样才能保证成功调用。形式参数是一组形式变量,本身没有任何意义,只有在调用时赋予它们实际值才有意义。
我们编写一个命名为Fibon.m的函数M文件,它的功能是产生前n个Fibonnaci数,并计算这n个数之和。
function [f,s]=fibon(n) %返回两个量f、s,n为形式参数。
f=[1 1];i=1;
if n==1
f(2)=[ ];
elseif n==2 %如果n为2,不执行任何语句。
else
while i<n-1
f(i+2)=f(i)+f(i+1);
i=i+1;
end
end
s=sum(f);
函数M文件的调用格式为:[输出参数表]=函数名(实际参数)。若我们想知道前10个Fibonnaci数及这10个之和,只需在MATLAB的命令窗口中键入:
>> [fib,fibs]=Fibon(10) %返回值分别赋予fib和fibs
fib =
1 1 2 3 5 8 13 21 34 55
fibs =
143
与文本M文件不同的是,函数M文件中定义和使用的变量为局部变量,如本例中的f、s、n、i,它们仅在本程序的运行过程中有效,程序运行完成之后就不再存在。
自定义的M文件,不管是文本M文件还是函数M文件,均应该存放在MATLAB当前目录下或MATLAB搜索路径下,以使系统能够找到该M文件并执行。当然,你也可以使用cd命令确定和改变当前目录,用path命令确定MATLAB的搜索路径。
三、实验内容
1.1在例3.3中我们编写了一个程序用以计算f(x,y)的值。这个函数的定义如下
在这里我们要求用if的嵌套结构来编写这个程序。
1.2.分别利用for循环和while循环求的值。
1.3.编写函数M文件mysign.m实现符号函数sign的功能。
2、填写实验报告,实验报告文件取名为report3.doc。
3、上传实验报告文件report3.doc 、源程序文件到Ftp服务器上( ftp://10.66.28.22:22 )自己的文件夹下。
四. 实验结果与分析
(包括运行结果截图、结果分析等)
五. 心得体会
(记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。)
【附录----源程序】
昆明理工大学课程考核分析报告学年第学期填表时间年月日二试题卷面质量注通过率PR为60分以上学生总人数N为参加考试的学生总人数
20xx-20xx学年第二学期课程考核结果分析报告评述20xx-20xx年第二学期课程考核结果分析报告已抽查完毕。根据已检查的课程…
填表说明(填表前认真阅读,此说明无需打印)期末课程考核,是学科教学的综合性测试,对学生考核成绩进行分析,一般可以从以下几个方面进行…
填表说明(填表前认真阅读,此说明无需打印)期末课程考核,是学科教学的综合性测试,对学生考核成绩进行分析,一般可以从以下几个方面进行…
东北师范大学(_______年_______学期)学院______________________年级、专业___________…
20xx-20xx学年第二学期课程考核结果分析报告评述20xx-20xx年第二学期课程考核结果分析报告已抽查完毕。根据已检查的课程…
秦淮中学20xx年高二下期中考试英语科质量分析报告高二英语备课组一试卷分析20xx年高二下期中考试英语试卷本着教考分离的原则由外校…
黑龙江科技大学课程考试成绩分析报告学年学期20xx20xx学年第二学期开课学院课程名称考试年级201级填表说明一本表使用计算机填写…
关于校本课程实施状况的调查报告政治教育学院08级四班20xx150431施芬一、调查概况我于20xx年x月份,对我实习的一所省重点…