Matlab实验三答案.docx

上传人:b****6 文档编号:4581599 上传时间:2022-12-06 格式:DOCX 页数:14 大小:19.61KB
下载 相关 举报
Matlab实验三答案.docx_第1页
第1页 / 共14页
Matlab实验三答案.docx_第2页
第2页 / 共14页
Matlab实验三答案.docx_第3页
第3页 / 共14页
Matlab实验三答案.docx_第4页
第4页 / 共14页
Matlab实验三答案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Matlab实验三答案.docx

《Matlab实验三答案.docx》由会员分享,可在线阅读,更多相关《Matlab实验三答案.docx(14页珍藏版)》请在冰豆网上搜索。

Matlab实验三答案.docx

Matlab实验三答案

 

实验三MATLAB语言的程序设计

一、实验目的:

1、熟悉MATLAB程序编辑与设计环境

2、掌握各种编程语句语法规则及程序设计方法

3、函数文件的编写和设计

4、了解和熟悉跨空间变量传递和赋值

二、实验基本知识:

1、程序流程控制语句

for循环结构

语法:

fori=初值:

增量:

终值

语句1

……

语句n

end

说明:

1.i=初值:

终值,则增量为1。

2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。

while循环结构

语法:

while逻辑表达式

循环体语句

end

说明:

1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。

若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。

若表达式的值为假,则程序执行end之后的语句。

2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位置加break语句、以便程序能正常执行。

(执行循环体的次数不确定;每一次执行循环体后,一定会改变while后面所跟关系式的值。

3、while循环也可以嵌套、其结构如下:

while逻辑表达式1

循环体语句1

while逻辑表达式2

循环体语句2

end

循环体语句3

end

if-else-end分支结构

if表达式1

语句1

elseif表达式2(可选)

语句2

else(可选)

语句3

end

end

说明:

1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。

2.elseif表达式2与else为可选项,这两条语句可依据具体情况取舍。

3.注意:

每一个if都对应一个end,即有几个if,记就应有几个end。

switch-case结构

语法:

switch表达式

case常量表达式1

语句组1

case常量表达式2

语句组2

……

otherwise

语句组n

end

说明:

1.switch后面的表达式可以是任何类型,如数字、字符串等。

2.当表达式的值与case后面常量表达式的值相等时,就执行这个case后面的语句组如果所有的常量表达式的值都与这个表达式的值不相等时,则执行otherwise后的执行语句。

程序流程控制指令

break、return、pause

2、函数文件的结构和编写方法

函数只能在函数体内对变量进行操作,也就是只能访问函数本身工作空间中的变量。

M函数文件的结构

(1)函数定义行(function)

(2)H1行(函数帮助文本的第一行)

(3)函数帮助文本

(4)函数体

(5)注释

函数文件编写后,保存时,其文件名必须与函数名相同。

注意:

函数名不要与MATLAB自身的函数命令相同。

三、实验内容:

2、用for循环语句实现求1~100的和

编程:

sum=0;

fori=1:

100

sum=sum+i;

end

sum

运行结果:

>>ljia

sum=

5050

3、用for循环语句实现编写一个求阶乘的函数文件。

编程:

functiony=jcheng(n)

y=1;

fori=1:

n

y=y*i;

end

y

运行结果:

假设n=5

>>jcheng(5)

y=

120

ans=

120

4、找到一个n!

>10100的值(利用上题的阶乘函数文件)

编程:

i=1;

while

(1)

y=jcheng(i);

ify>10^100

break;

end

i=i+1;

end

i

运行结果:

>>zhaon

y=

1

y=

2

y=

6

y=

24

y=

120

y=

720

y=

5040

y=

40320

y=

362880

y=

3628800

y=

39916800

y=

479001600

y=

6.2270e+009

y=

8.7178e+010

y=

1.3077e+012

y=

2.0923e+013

y=

3.5569e+014

y=

6.4024e+015

y=

1.2165e+017

y=

2.4329e+018

y=

5.1091e+019

y=

1.1240e+021

y=

2.5852e+022

y=

6.2045e+023

y=

1.5511e+025

y=

4.0329e+026

y=

1.0889e+028

y=

3.0489e+029

y=

8.8418e+030

y=

2.6525e+032

y=

8.2228e+033

y=

2.6313e+035

y=

8.6833e+036

y=

2.9523e+038

y=

1.0333e+040

y=

3.7199e+041

y=

1.3764e+043

y=

5.2302e+044

y=

2.0398e+046

y=

8.1592e+047

y=

3.3453e+049

y=

1.4050e+051

y=

6.0415e+052

y=

2.6583e+054

y=

1.1962e+056

y=

5.5026e+057

y=

2.5862e+059

y=

1.2414e+061

y=

6.0828e+062

y=

3.0414e+064

y=

1.5511e+066

y=

8.0658e+067

y=

4.2749e+069

y=

2.3084e+071

y=

1.2696e+073

y=

7.1100e+074

y=

4.0527e+076

y=

2.3506e+078

y=

1.3868e+080

y=

8.3210e+081

y=

5.0758e+083

y=

3.1470e+085

y=

1.9826e+087

y=

1.2689e+089

y=

8.2477e+090

y=

5.4434e+092

y=

3.6471e+094

y=

2.4800e+096

y=

1.7112e+098

y=

1.1979e+100

i=

70

5、编写一个乘法表(9×9)

编程:

fori=1:

9

A=[];

forj=1:

i;

A=[A,sprintf('%dx%d=%d',j,i,i*j)];

end

disp(A)

end

运行结果:

>>cfb

1x1=1

1x2=22x2=4

1x3=32x3=63x3=9

1x4=42x4=83x4=124x4=16

1x5=52x5=103x5=154x5=205x5=25

1x6=62x6=123x6=184x6=245x6=306x6=36

1x7=72x7=143x7=214x7=285x7=356x7=427x7=49

1x8=82x8=163x8=244x8=325x8=406x8=487x8=568x8=64

1x9=92x9=183x9=274x9=365x9=456x9=547x9=638x9=729x9=81

6、判断y向量的元素属于3n、3n+1或3n+2,设y=[3,5,7,9,11,16]。

编程:

假设:

将3n放进数组A,将3n+1放进数组B,将3n+2放进数组C。

y=[35791116;];

A=[];

B=[];

C=[];

j=1;k=1;m=1;

fori=1:

6

x=rem(y(i),3);

ifx==0

A(j)=y(i);j=j+1;

end

ifx==1

B(k)=y(i);k=k+1;

end

ifx==2

C(m)=y(i);m=m+1;

end

end

disp(A)

disp(B)

disp(C)

运行结果:

>>yush

39

716

511

7、已知一维数组A=[2,4,5,8,10]、B=[4,9,6,7,4],用for循环语句实现

求和函数可用sum().

编程:

A=[245810;];

B=[49674;];

C=[];

y=0;

fori=1:

5

C(i)=(A(i)*B(5-i+1));

y=y+C(i);

end

y

运行结果:

>>timu7

y=

178

8、

(1)编写求解一维数组平均值的函数文件。

(2)编写求解二维数组平均值的函数文件。

编程1:

functiony=ywjz(A)

x=0;

n=numel(A);

fori=1:

n

x=x+A(i);

end

v=x/n;

运行结果:

>>y=ywjz([12345])

y=

3

编程2:

functiony=ewjz(A)

x=0;

n=numel(A);

fori=1:

n

x=x+A(i);

end

y=x/n;

运行结果:

>>y=ewjz([23;45;67;])

y=

4.5000

调用验证:

A=[133;557;];

y=ewjz(A);

y

>>aa

y=

4

9、编写验证魔方矩阵的函数文件,输出要求如下:

(1)如果输入矩阵的维数小于3,输出显示’error’

(2)如果输入矩阵的不是方阵,输出显示’thesizeofmatrixXmustbeN-by-Nmatrix’

(3)显示行、列和及其对角线求和后的值,并判断其和是否相同,若不同,显示‘No’,相同显示‘Yes’

编程:

functionyanzh(x)

[r,c]=size(x);

ifr~=c

disp('thesizeofmatrixXmustbeN-by-Nmatrix')

elseifr<3

disp('eroor')

end

end

S=[sum(x,1),sum(x,2)',sum(diag(x))',sum(diag(rot90(x)))'];

ifS

(1)==S

(2)&S

(2)==S(3)&S(3)==S(4)&S

(1)==S(4)

disp('yes')

else

disp('no')

end

验证运行:

>>yanzh([816;357;492;])

yes

>>yanzh([816;357;])

thesizeofmatrixXmustbeN-by-Nmatrix

no

>>yanzh([86;35;])

eroor

no

>>yanzh([826;357;492;])

no

 

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

当前位置:首页 > 考试认证 > 财会金融考试

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

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