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

上传人:b****6 文档编号:7341535 上传时间:2023-01-23 格式:DOCX 页数:11 大小:34.29KB
下载 相关 举报
实验五M文件和MATLAB程序设计.docx_第1页
第1页 / 共11页
实验五M文件和MATLAB程序设计.docx_第2页
第2页 / 共11页
实验五M文件和MATLAB程序设计.docx_第3页
第3页 / 共11页
实验五M文件和MATLAB程序设计.docx_第4页
第4页 / 共11页
实验五M文件和MATLAB程序设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

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

《实验五M文件和MATLAB程序设计.docx》由会员分享,可在线阅读,更多相关《实验五M文件和MATLAB程序设计.docx(11页珍藏版)》请在冰豆网上搜索。

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

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

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

一、实验目的

matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。

1.掌握M文件的使用方法。

2.掌握if语句和switch语句的使用

3.掌握循环语句的使用

4.通过练习理解MATLAB编程方法。

二、实验原理

1.m文件

用matlab语言编写的程序,称为m文件。

M文件根据调用方式的不同分为两类,命令文件(Scriptfile)和函数文件(Functionfile)。

区别?

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"problemfromnumbertheory.

while1

n=input('Entern,negativequits:

');

ifn<=0

break

end

a=n;

whilen>1

ifrem(n,2)==0

n=n/2;

else

n=3*n+1;

end

a=[a,n];

end

a

end

Entern,negativequits:

3

a=

3105168421

2.编程求满足

的最小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)

选择一些数据测试你编写的函数。

functiony=myfun1(x)

ifx<=0

y=sin(x);

elseifx>0&x<=3

y=x;

elseifx>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的值分别为:

3,17,113。

迭代的终止条件为

,迭代初值

迭代次数不超过100次。

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

迭代公式:

function[x,n]=sqrt_a(a)

x=1.0;

fork=1:

100

m=x;

x=x/2+a/(2*x);

ifabs(x-m)<=10^(-5)

break

end

end

x;

n=k;

s=(x-sqrt(a));

ifs<=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[elnsc]=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)=

,编写一个MATLAB函数文件fx.m,使得调用f(x)时,x可用矩阵代入,得出的f(x)为同阶矩阵。

程序设计:

函数文件fx.m:

functionA=fx(x)

A=1./((x-2).^2+0.1)+1./(((x-3).^4)+0.01)

end

调用fx.m的命令文件:

>>A=fx([12;23;43])

运行结果:

A=

0.971610.9901

10.9901100.9091

1.2340100.9091

7.已知y=

当f(n)=n+10ln(

+5)时,求y的值。

程序设计:

函数文件fn.m:

functionx=fn(n)

x=n+10*log(n^2+5)

end

调用fn.m的命令:

y=fn(40)/(fn(30)+fn(20))

运行结果:

y=

0.6390

8.将下列脚本式m文件改写成函数式m文件:

(1)输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。

c=input('请输入一个字符','s');%a是字符,'a'是字符串

ifc>='A'&c<='Z'

disp(setstr(abs(c)+abs('a')-abs('A')));%加32

elseifc>='a'&c<='z'

disp(setstr(abs(c)-(abs('a')-abs('A'))));

elseifc>='0'&c<='9'

disp(abs(c)-abs('0'));

else

disp(c);

end%必须与if配对使用

编写一个函数式m文件,实现程序的功能

c=input('请输入一个字符','s');

FunctionM=disp(c);

ifc>='A'&c<='Z'

M=setstr(abs(c)+abs('a')-abs('A'))

elseifc>='a'&c<='z'

M=setstr(abs(c)-(abs('a')-abs('A')))

elseifc>='0'&c<='9'

M=abs(c)-abs('0')

end

(2)某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):

price<200没有折扣

200≤price<5002%折扣

500≤price<10005%折扣

1000≤price<250010%折扣

2500≤price<500025%折扣

5000≤price50%折扣

输入所售商品的价格,求其实际销售价格。

程序如下:

price=input('请输入商品价格');

switchfix(price/100)%向零的方向取整

case{0,1}%价格小于200

rate=0;

case{2,3,4}%价格大于等于200但小于500

rate=2/100;

casenum2cell(5:

9)%价格大于等于500但小于1000

%为简便采用元胞数组

rate=5/100;

casenum2cell(10:

24)%价格大于等于1000但小于2500

rate=10/100;

casenum2cell(25:

49)%价格大于等于2500但小于5000

rate=25/100;

otherwise%价格大于等于5000

rate=50/100;

end

price=price*(1-rate)%输出商品实际销售价格

编写一个函数式m文件,计算顾客实际付款数目。

Functionprice=f(rate)

switchfix(price/100)

case{0,1}

rate=0;

case{2,3,4}

rate=2/100;

casenum2cell(5:

9)

rate=5/100;

casenum2cell(10:

24)

rate=10/100;

casenum2cell(25:

49)

rate=25/100;

otherwise

rate=50/100;

Price=price*(1-rate)

end

9.一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。

输出全部水仙花数。

程序如下:

•form=100:

999

m1=fix(m/100);%求m的百位数字

•m2=fix((m-m1*100)/10);%求m的十位数字

•m3=m-m1*100-m2*10;%求m的个位数字

•ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3

•disp(m)

•end

•end

编写一个函数式m文件,来判断一个三位数是不是水仙花数。

Functionm=f(Mn)

•form=100:

999

m1=fix(m/100);

•m2=fix((m-m1*100)/10);

•m3=m-m1*100-m2*10;

•ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3

•disp(m)

•end

•end

10.从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们的和。

程序如下:

sum=0;%用于存放和

n=0;%用于统计输入的数的个数

val=input(‘Enteranumber:

’);%在循环体外初始

while(val~=0)

sum=sum+val;

n=n+1;

val=input(‘Enteranumber:

’);若无此句只能输入一个数

end

if(n>0)

sum

mean=sum/n

End

改写成M文件

Functionmean=fn(n)

sum=0;

n=0;

val=input(‘Enteranumber:

’);

while(val~=0)

sum=sum+val;

n=n+1;

val=input(‘Enteranumber:

’);

if(n>0)

sum

mean=sum/n

end

5、实验心得

通过本次实验,我了解了MATLAB的工作模式和M文件的构成规则,了解了命令M文件和函数M文件的异同。

会MATLAB的M文件的创建与修改,会使用函数句柄调用函数,会运用顺序结构、循环结构和分支结构进行计算机编程。

会控制MATLAB的程序流,熟悉了应用程序设计的基本步骤。

能对文件进行简单操作,会调试和优化所设计的程序。

对应用程序接口的设计也有所了解。

MATLAB语言被称为第四代编程语言,程序简洁、可读性很强,而且调试十分容易。

它是MATLAB重要组成部分。

通过这次试验我已经对MATLAB的工作模式有一个大致的了解,并掌握如何创建M文件,包括命令文件和函数文件。

熟练地掌握MATLAB的程序设计流程和程序设计的基本结构,并能初步设计一些简单的能解决实际问题的程序。

 

实验成绩:

________________

实验日期和地点:

东港学院

实验指导教师:

宁伟

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1