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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。如:

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等数来验证这一结论。

%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:3

a =

3 10 5 16 8

4 2 1

2. 编程求满足∑=>m i i 1100002的最小m 值。 a=0;

i=1; while (a<10000) a=a+pow2(i); i=i+1; end m=i-1; m 13 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>3 y=-x+6; end 运行结果: >> y=myfun1(-pi/2) y = -1 >> y=myfun1(0)y = 0 >> y=myfun1(2) y = 2 >> y=myfun1(4) y = 2

4. 用如下迭代公式求a ,a 的值分别为:3,17,113。迭代的终止条件为

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 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 =

正确

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

相关文档
最新文档