D实验五 M文件和MATLAB程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五M文件和MATLAB程序设计
一、实验目的
matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。
1.掌握M文件的使用方法。
2.掌握if语句和switch语句的使用
3. 掌握循环语句的使用
4. 通过练习理解MATLAB编程方法。
二、实验原理
1.m文件
用matlab语言编写的程序,称为m文件。
M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。
区别?
2.程序控制结构
1)顺序结构
2)选择结构
(1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句
(2)switch 语句
(3)try语句
3)循环结构
(1)for 语句
(2)while语句
(3)break语句、continue语句、return使用,区别?
3.函数文件
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
注意事项?
三、实验要求
1.首先上机练习PPT中各种流程控制语句的有关实例。
2.然后上机练习下面的实验习题。
四、实验习题
1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:
21
23410851 16210851
16643运行下面的程序,按程序提示输入n=1,2,3,5,7,8,9等数来验证这一结论。
%classic n+1 problem from number theory.
while 1
n=input('Enter n,negative quits:');
if n<=0
break
end
a=n;
while n>1
if rem(n,2)==0
n=n/2;
else
n=3*n+1;
end
a=[a,n];
end
a
end
Enter n,negative quits:
m?i100002? m值。
编程求满足0的最小.2 1?i a=0;
i=1;
while (a<100000) a=a+pow2(i); i=i+1; end m=i-1
3.编写一个函数,计算下面函数的值,给出x的值,调用该函数后,返回
y的值。
function [y]=myfun1(x)
0?x sin x,??3??)x,0?xy(x??3?x?x?6,?
选择一些数据测试你编写的函数。
y=myfun1(x) function if x<=0
y=sin(x); elseif x>0&x<=3 y=x; elseif x>3 y=-x+6; end :
运行结果?510?x?x a,迭代初值用如下迭代公式求4.,迭代的终止条件为nn?1x?1.0,
迭代次数不超过100次。
分别对迭代结果和准确值进行比较,并统计迭代次数。
0xa1?n??x迭
代公式:1?n x221?n function [x, n]=sqrt_a(a)
x=1.0;
for k=1:100 m=x;
x=x/2+a/(2*x);
if abs(x-m)<=10^(-5) break end end x; n=k;
s=(x-sqrt(a)); if abs(s)<=10^(-5) disp('正确'); else
disp('错误'); end 下面调用举例:运行结果:
>> [x ,n]=sqrt_a(3) 正确x =
1.7321 n = 5
>> [x, n]=sqrt_a(17) 正确
x =
4.1231 n = 6
>> [x,n]=sqrt_a(113) 正确x =
10.6301
n =
8
5.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。
程序设计:
function [e ln s c]=num(x)
e=exp(x)
ln=log(x)
s=sin(x)
c=cos(x)
end
运行结果:
>> num(5i)
e =
0.2837 - 0.9589i
ln =
1.6094 + 1.5708i
s =
0 +74.2032i
c =
74.2099
ans =
0.2837 - 0.9589i
11,编写一个MATLAB函数文件fx.mf(x)=6.设,?
42)?3x(?2)(x010..?01?使得调用f(x)时,x可用矩阵代入,得出的f(x)为同阶矩阵。
程序设计:
函数文件fx.m:
function A=fx(x)
A=1./((x-2).^2+0.1)+1./(((x-3).^4)+0.01)
end
调用fx.m的命令文件:
>> A=fx([1 2;2 3;4 3])
运行结果:
A =
0.9716 10.9901
10.9901 100.9091
1.2340 100.9091
f(40)y=已知.7f(30) f(20)当f(n)=n+10ln(+5)时,求y 的值。
2n函数文件fn.m:
function x=fn(n)
x=n+10*log(n^2+5)
end
调用fn.m的命令:
y=fn(40)/(fn(30)+fn(20))
运行结果:
y =
0.6390
五、实验小结和心得
通过本次实验,我了解了MATLAB的工作模式和M文件的构成规则,了解了命令M文件和函数M文件的异同。
会MATLAB的M文件的创建与修改,会使用函数句柄调用函数,会运用顺序结构、循环结构和分支结构进行计算机编程。
会控制MATLAB的程序流,熟悉了应用程序设计的基本步骤。
能对文件进行简单操作,会调试和优化所设计的程序。
对应用程序接口的设计也有所了解。
MATLAB语言被称为第四代编程语言,程序简洁、可读性很强,而且调试十分容易。
它是MATLAB重要组成部分。
通过这次试验我已经对MATLAB的工作模式有一个大致的了解,并掌握如何创建M文件,包括命令文件和函数文件。
熟练地掌握MATLAB的程序设计流程和程序设计的基本结构,并能初步设计一些简单的能解决实际问题的程序。
指导老师:_________________
实验时间和地点:______________
实验成绩:____________________。