当前位置:文档之家› D实验五 M文件和MATLAB程序设计

D实验五 M文件和MATLAB程序设计

实验五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。

如:
2→1
3→10→5→16→8→4→2→1
6→3→10→5→16→8→4→2→1
运行下面的程序,按程序提示输入n=1,2,3,5,7,8,9等数来验证这一结论。

%classic "3n+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:
2. 编程求满足∑=>m
i i 11000020的最小m 值。

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)
⎪⎩
⎪⎨⎧>+-≤<≤=3,630,
0,sin )(x x x x x x x y
选择一些数据测试你编写的函数。

function y=myfun1(x) if x<=0 y=sin(x); elseif x>0&x<=3 y=x; elseif x>3 y=-x+6; end 运行结果:
4. 用如下迭代公式求a ,迭代的终止条件为5n 1n 10x x -+≤-,迭代初值0.1x 0=,迭代次数不超过100次。

分别对迭代结果和准确值进行比较,并统计迭代次数。

迭代公式:11122--++=n n n x a x x
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
6. 设 f(x)=01.011.01
)3()2(4
2+++--x x ,编写一个MATLAB 函数文件fx.m ,使得调用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
7. 已知y=)
20()30()40(f f f 当f(n)=n+10ln(n 2+5)时,求y 的值。

函数文件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 的程序设计流程和程序设计的基本结构,并能初步设计一些简单的能解决实际问题的程序。

指导老师:_________________
实验时间和地点:______________
实验成绩:____________________。

相关主题