搜档网
当前位置:搜档网 › MATLAB第五章作业

MATLAB第五章作业

MATLAB第五章作业
MATLAB第五章作业

第五章作业

1.选择题

(1)if结构的开始是“if”命令,结束是C命令。

A. End if

B. end

C. End

D. else

(2)下面的switch结构,正确的是C。

A. >>switch a case a>1

B. >>switch a

case a=1

C. >>switch a

case 1

D. >>switch a

case =1

(3)运行以下命令:

>>a=eye(5);

>>for n=a(2:end,:)

则for循环的循环次数是B。

A. 5

B. 4

C. 3

D. 1

(4)运行以下命令,则for循环的循环次数是C。

>>x=0:10;

>>for n=x

if n==5

continue

end

end

A. 10

B. 5

C. 11

D. 10

(5)运行以下命令则B。

>>a=[1 2 3]

>>keyboard

K>>a=[1 2 4];

K>>return

A. a=[1 2 3]

B. a=[1 2 4]

C. 命令窗口的提示符为“K>>”

D. 出错

(6)关于主函数,以下说法正确的是D。

A. 主函数名必须与文件名相同

B. 主函数的工作空间与子函数的工作空间是嵌套的

C. 主函数中不能定义其他函数

D. 每个函数文件中都必须有主函数

(7)当在命令窗口中输入“sin(a)”时,则对“a”的搜索顺序是D。

A. 是否内部函数→是否变量→是否私有函数

B. 是否内部函数→是否搜索路径中函数→是否私有函数

C. 是否内部函数→是否搜索路径中函数→是否当前路径中函数

D. 是否变量→是否私有函数→是否当前路径中函数

2.求分段函数

2

2

2

6,03

56,0<523

1

x x x x

y x x x x x

x x

?+-<≠-

?

=-+≠≠

?

?--

?

≤且及

,其他

的值。用if语句实现,分别输出x

=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。

解:首先编写分段函数的函数m文件:

function y=myfun(x)

if x==2||abs(x)==3||x>=5

y=x^2-x-1;

elseif x<0

y=x^2+x-6;

else

y=x^2-5*x+6;

end

然后计算分段函数的值:

x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];

l=length(x);

y=zeros(1,l);

for k=1:l

y(k)=myfun(x(k));

end

[x;y]

plot(x,y)

ans =

-5.0000 -3.0000 1.0000 2.0000 2.5000 3.0000 5.0000

14.0000 11.0000 2.0000 1.0000 -0.2500 5.0000

此题也可以采用逻辑表达式定义分段函数,做法更简单。编程如下:

x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];

y1=(x==2|abs(x)==3|x>=5).*(x.^2-x-1)

y2=(x<0&x~=-3).*(x.^2+x-6);

y3=(x>=0&x<5&x~=2&x~=3).*(x.^2-5*x+6);

y=y1+y2+y3;

[x;y]

y1 =

0 11 0 1 0 5 19

ans =

-5.0000 -3.0000 1.0000 2.0000 2.5000 3.0000 5.0000

14.0000 11.0000 2.0000 1.0000 -0.2500 5.0000 19.0000

当然,本题主要是考查if结构的应用。

3.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。要求:

(1)分别用if语句和switch语句实现。

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

解:第一种方法:用if结构实现。编程如下:

x=input('输入一个百分制成绩(0~100):');

if x<0||x>100

error('成绩输入错误!');

elseif x<60

disp('你的成绩为E');

elseif x<70

disp('你的成绩为D');

elseif x<80

disp('你的成绩为C');

elseif x<90

disp('你的成绩为B');

else

disp('你的成绩为A');

end

第二种方法:用switch结构实现。编程如下:

x=input('输入一个百分制成绩(0~100):');

xd=fix(x/10);

switch xd

case {0,1,2,3,4,5}

disp('你的成绩为E');

case 6

disp('你的成绩为D');

case 7

disp('你的成绩为C');

case 8

disp('你的成绩为B');

case {9,10}

disp('你的成绩为A');

otherwise

error('成绩输入错误!');

end

注:此题建议编写两个M脚本文件,然后在MATLAB命令窗口运行。如果在Notebook中直接运行input指令会产生错误。

4.根据

2

2222

1111

6123n

π

=++++

,求π的近似值。当n分别取100、1000、10000时,结

果是多少?要求:分别用循环结构和向量运算(使用sum函数)来实现。

解:第一种方法:使用循环结构。编程如下:

s=0;

for n=1:100

s=s+1/n^2;

end

pai=sqrt(6*s)

pai =

3.1321

s=0;

for n=1:1000

s=s+1/n^2;

end

pai=sqrt(6*s)

pai =

3.1406

s=0;

for n=1:10000

s=s+1/n^2;

end

pai=sqrt(6*s)

pai =

3.1415

第二种方法:使用向量运算。编程如下:

n=1:100;

s=sum(1./n.^2);

pai=sqrt(6*s)

pai =

3.1321

n=1:1000;

s=sum(1./n.^2);

pai=sqrt(6*s)

pai =

3.1406

n=1:10000;

s=sum(1./n.^2);

pai=sqrt(6*s)

pai =

3.1415

5.若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对。该素数是亲密素数。例如2×3-1=5,由于5是素数,所以2和3是亲密数对,5是亲密素数。求[2,50]区间内:

(1)亲密数对的对数。

(2)与上述亲密数对对应的所有亲密素数之和。

提示:在MATLAB中,判断一个正整数是否为素数的函数为isprime(n)。

解:首先编写判断亲密数的函数:

function [flag,k]=qms(n)

k1=n*(n+1)-1;

if isprime(k1)

flag=1;

k=[n,n+1,k1];

else

flag=0;

k=[];

end

然后计算亲密数对的对数和所有亲密素数的和:

clear

clc

k=[];

for n=2:50

[flag,k1]=qms(n);

k=[k;k1];

end

k

S=size(k);

disp(['亲密数对的对数为' num2str(S(1))])

SUM=sum(k(:,3));

disp(['所有亲密素数的和为' num2str(SUM)])

k =

2 3 5

3 4 11

4 5 19

5 6 29

6 7 41

8 9 71

9 10 89

10 11 109

11 12 131

13 14 181

15 16 239

16 17 271

19 20 379

20 21 419

21 22 461

24 25 599

26 27 701

28 29 811

30 31 929

31 32 991

35 36 1259

38 39 1481

39 40 1559

41 42 1721

44 45 1979

45 46 2069

46 47 2161

48 49 2351

50 51 2549

亲密数对的对数为29

所有亲密素数的和为23615

6.编写M 函数文件,输入参数为t 和ω,计算函数sin()y t ω=的值并将变量t 和y 放在同一矩阵z 的两行中,输出参数为z 。

解:函数文件为:

function z=mysin(t,w)

%MYSIN

%计算不同频率、不同时刻的正弦函数值

%输入参数:

% t :时刻,取值可以为标量或向量

% w :频率,取值为标量,缺省为1时可以省略

%输出参数:

% z :两行数组,第一行存放不同时刻t 值,第二行存放对应的正弦函数值

%调用格式:

% z=mysin(t):计算函数y=sin(t)的值

% z=mysin(t,w):计算函数y=sin(w*t)的值

%湖北工业大学左惟炜编写

%2011-01-20

if nargin<1||nargin>2

error('输入参数个数错误!');

end

switch nargin

case 1

w=1;

end

y=sin(w*t);

z=[t;y];

运行过程如下:

t=0:0.1*pi:2*pi;

w=1.5;

z1=mysin(t)

z2=mysin(t,w)

z1 =

Columns 1 through 9

0 0.3142 0.6283 0.9425 1.2566 1.5708

1.8850

2.1991 2.5133

0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878

Columns 10 through 18

2.8274

3.1416 3.4558 3.7699

4.0841 4.3982 4.7124

5.0265 5.3407

0.3090 0.0000 -0.3090 -0.5878 -0.8090 -0.9511 -

1.0000 -0.9511 -0.8090

Columns 19 through 21

5.6549 5.9690

6.2832

-0.5878 -0.3090 -0.0000

z2 =

Columns 1 through 9

0 0.3142 0.6283 0.9425 1.2566 1.5708

1.8850

2.1991 2.5133

0 0.4540 0.8090 0.9877 0.9511 0.7071 0.3090 -0.1564 -0.5878

Columns 10 through 18

2.8274

3.1416 3.4558 3.7699

4.0841 4.3982 4.7124

5.0265 5.3407

-0.8910 -1.0000 -0.8910 -0.5878 -0.1564 0.3090 0.7071 0.9511 0.9877

Columns 19 through 21

5.6549 5.9690

6.2832

0.8090 0.4540 0.0000

最后说明一下,所有M函数文件都应该在M文件编辑器中编写并与Notebook文档保存在同一个文件夹中才能正常运行。

matlab第三章习题解答

3-1 >> N=[1 2 3 4 5] N = 1 2 3 4 5 (1) >> N1=2*N N1 = 2 4 6 8 10 (2) >> N2=N/2 N2 = 0.5000 1.0000 1.5000 2.0000 2.5000 (3) >> N3=1./N N3 = 1.0000 0.5000 0.3333 0.2500 0.2000 (4) >> N4=1./(N.*N) N4 = 1.0000 0.2500 0.1111 0.0625 0.0400 3-2 m=input('请输入一个三位整数'); i=fix(m/100); j=mod(fix(m/10),10); k=mod(m,10); n=100*k+10*j+i; disp('反向输出的数为'); disp(n); 3-3 用if来实现 score=input('请输入成绩'); if score>100|score<0 disp('成绩必须>=0且<=100'); elseif score>=90&score<=100 disp('A');

elseif score>=80&score<=89 disp('B'); elseif score>=70&score<=79 disp('C'); elseif score>=60&score<=69 disp('D'); else disp('E'); end 用switch来实现 score=input('请输入成绩'); switch score case num2cell(90:100) disp('A'); case num2cell(80:89) disp('B'); case num2cell(70:79) disp('C'); case num2cell(60:69) disp('D'); case num2cell(0:59)%case{0,1,2,3,4,5}也可以 disp('E'); otherwise disp('成绩必须>=0且<=100'); end 注意:以下程序是错的 score=input('请输入成绩'); switch fix(score/10) case {9,10} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D'); case num2cell(0:5)%case{0,1,2,3,4,5}也可以

matlab课后答案完整版

ones表示1矩阵 zeros表示0矩阵 ones(4)表示4x4的1矩阵 zeros(4)表示4x4的0矩阵 zeros(4,5)表示4x5的矩阵 eye(10,10)表示10x10的单位矩阵rand(4,5)表示4x5的伴随矩阵 det(a)表示计算a的行列式 inv(a)表示计算a的逆矩阵 Jordan(a)表示求a矩阵的约当标准块rank(a)表示求矩阵a的秩 [v,d]=eig(a)对角矩阵 b=a’表示求a矩阵的转置矩阵 sqrt表示求平方根 exp表示自然指数函数 log自然对数函数 abs绝对值 第一章 一、5(1) b=[97 67 34 10;-78 75 65 5;32 5 -23 -59]; >> c=[97 67;-78 75;32 5;0 -12]; >> d=[65 5;-23 -59;54 7]; >> e=b*c e = 5271 11574 -11336 664 1978 3112 (2)a=50:1:100 二、1 、x=-74; y=-27; z=(sin(x.^2+y.^2))/(sqrt(tan(abs(x+y)))+pi) z = 2、a=::; >> b=exp*a).*sin(a+ 3、x=[2 4; 5]; y=log(x+sqrt(1+x.^2))/2 y =4、a*b表示a矩阵和b矩阵相乘 a.*b表示a矩阵和b矩阵单个元素相乘A(m,n)表示取a矩阵第m行,第n列 A(m,:)表示取a矩阵第m行的全部元素 A(:,n)表示取a矩阵的第n列全部元素 A./B表示a矩阵除以b矩阵的对应元素, B.\A等价于A./B A.^B表示两个矩阵对应元素进行乘方运算A.^2表示a中的每个元素的平方 A^2表示A*A 例:x=[1,2,3]; y=[4,5,6]; z=x.^y z= 1 3 2 729 指数可以是标量(如y=2).底数也可以是标量(如x=2) 5、a=1+2i; >> b=3+4i; >> c=exp((pi*i)/6) c = + d=c+a*b/(a+b) d = + 第二章 二、4、(1) y=0;k=0; >> while y<3 k=k+1; y=y+1/(2*k-1); end >> display([k-1,y-1/(2*k-1)]) ans = 第三章 二1(1)

MATLAB第一章作业答案

第一章 M A T L A B 概况与基本操作 1.选择题(每题2分,共20分): (1)最初的MATLAB 核心程序是采用D 语言编写的。 (2)即将于2011年9月发布的MATLAB 新版本的编号为C 。 2011Ra 2011Rb R2011b R2011a (3)在默认设置中,MATLAB 中的注释语句显示的颜色是B 。 A.黑色 B.绿色 C.红色 D.蓝色 (4)如果要以科学计数法显示15位有效数字,使用的命令是A 。 long e long long g long d (5)在命令窗口新建变量a 、b ,如果只查看变量a 的详细信息,使用的命令为A 。 a a (6)如果要清除工作空间的所有变量,使用的命令为C 。 all C.两者都可 D.两者都不可 (7)在创建变量时,如果不想立即在命令窗口中输出结果,可以在命令后加上B 。 A.冒号 B.分号 C.空格 D.逗号 (8)如果要重新执行以前输入的命令,可以使用D 键。 A.下箭头↓ B.右箭头→ C.左箭头← D.上箭头↑ (9)如果要查询函数det 的功能和用法,并显示在命令窗口,应使用命令C 。 D.三者均可 (10)如果要启动Notebook 文档,下列D 操作是可行的。 A.在命令窗口输入notebook 命令 B.在命令窗口输入notebook filename 命令 C.在Word 中启动M-book 文档 D.三者均可 2.填空题(每空1分,共20分): (1)MATLAB 是matrix 和laboratory 两个单词前三个字母的组合,意为“矩阵实验室”,它的创始人是Cleve Moler 和Jack Little 。 (2)在MATLAB 的默认设置中,关键字显示的字体为蓝色,命令、表达式、计算结果显示的字体为黑色,字符串显示的字体为褐红色,注释显示的字体为绿色,错误信息显示的字体为红色。 (3)在命令窗口中,输出结果显示为各行之间添加空行的命令为format loose ,各行之间不添加空行的命令为format compact 。 (4)在MATLAB 中,各种标点符号的作用是不同的。例如,空格的作用是分隔数组每行各个元素,逗号的作用是分隔数组每行各个元素或函数的各个输入参数,分号的作用是作为不显示命令结果的命令行的结尾或分隔数组各列,冒号的作用是生成一维数组或表示数组全部元素,百分号的作用是引导一行注释,…的作用是连接相邻两行,感叹号的作用是调用操作系统命令。 3.程序设计题(每题10分,共40分) (1)以25m/s 的初速度向正上方投球(g=s 2 ),计算到达最高点的时间tp 以及球从出发点到最高点的距离hp 。 解:根据物理学知识,物体上抛运动的速度与经过的时间之间的关系为0p p v v gt =-,因此所需要的时间为0p p v v t g -= 。而到达最高点时的速度0p v =,因此可根据此公式求出tp : v0=25;g=;vp=0; tp=(v0-vp)/g tp =

MATLAB基础教程 薛山第二版 课后习题答案

《MATLAB及应用》实验指导书《MATLAB及应用》实验指导书 班级:T1243-7 姓名:柏元强 学号:20120430724 总评成绩: 汽车工程学院 电测与汽车数字应用中心

目录 实验04051001 MATLAB语言基础 (1) 实验04051002 MATLAB科学计算及绘图 (18) 实验04051003 MATLAB综合实例编程 (31)

实验04051001 MATLAB语言基础 1实验目的 1)熟悉MATLAB的运行环境 2)掌握MATLAB的矩阵和数组的运算 3)掌握MATLAB符号表达式的创建 4)熟悉符号方程的求解 2实验内容 第二章 1.创建double的变量,并进行计算。 (1)a=87,b=190,计算 a+b、a-b、a*b。 clear,clc a=double(87); b=double(190); a+b,a-b,a*b (2)创建 uint8 类型的变量,数值与(1)中相同,进行相同的计算。 clear,clc a=uint8(87); b=uint8(190); a+b,a-b,a*b 2.计算:

(1) () sin 60 (2) e3 (3) 3cos 4??π ??? clear,clc a=sind(60) b=exp(3) c=cos(3*pi/4) 3.设2u =,3v =,计算: (1) 4 log uv v (2) () 2 2 e u v v u +- (3) clear,clc u=2;v=3; a=(4*u*v)/log(v) b=((exp(u)+v)^2)/(v^2-u) c=(sqrt(u-3*v))/(u*v) 4.计算如下表达式: (1) ()() 3542i i -+ (2) () sin 28i - clear,clc (3-5*i)*(4+2*i) sin(2-8*i)

matlab课后习题及答案详解

第1章 MATLAB概论 1.1与其他计算机语言相比较,MATLAB语言突出的特点是什么? MATLAB具有功能强大、使用方便、输入简捷、库函数丰富、开放性强等特点。 1.2 MATLAB系统由那些部分组成? MATLAB系统主要由开发环境、MATLAB数学函数库、MATLAB语言、图形功能和应用程序接口五个部分组成。 1.3 安装MATLAB时,在选择组件窗口中哪些部分必须勾选,没有勾选的部分以后如何补安装? 在安装MATLAB时,安装内容由选择组件窗口中个复选框是否被勾选来决定,可以根据自己的需要选择安装内容,但基本平台(即MATLAB选项)必须安装。第一次安装没有选择的内容在补安装时只需按照安装的过程进行,只是在选择组件时只勾选要补装的组件或工具箱即可。 1.4 MATLAB操作桌面有几个窗口?如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出去的窗口重新放置到桌面上? 在MATLAB操作桌面上有五个窗口,在每个窗口的右上角有两个小按钮,一个是关闭窗口的Close按钮,一个是可以使窗口成为独立窗口的Undock按钮,点击Undock按钮就可以使该窗口脱离桌面成为独立窗口,在独立窗口的view菜单中选择Dock ……菜单项就可以将独立的窗口重新防止的桌面上。 1.5 如何启动M文件编辑/调试器? 在操作桌面上选择“建立新文件”或“打开文件”操作时,M文件编辑/调试器将被启动。在命令窗口中键入edit命令时也可以启动M文件编辑/调试器。 1.6 存储在工作空间中的数组能编辑吗?如何操作? 存储在工作空间的数组可以通过数组编辑器进行编辑:在工作空间浏览器中双击要编辑的数组名打开数组编辑器,再选中要修改的数据单元,输入修改内容即可。 1.7 命令历史窗口除了可以观察前面键入的命令外,还有什么用途? 命令历史窗口除了用于查询以前键入的命令外,还可以直接执行命令历史窗口中选定的内容、将选定的内容拷贝到剪贴板中、将选定内容直接拷贝到M文件中。 1.8 如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有什么区别? 当前目录可以在当前目录浏览器窗口左上方的输入栏中设置,搜索路径可以通过选择操作桌面的file 菜单中的Set Path菜单项来完成。在没有特别说明的情况下,只有当前目录和搜索路径上的函数和文件能够被MATLAB运行和调用,如果在当前目录上有与搜索路径上相同文件名的文件时则优先执行当前目录上的文件,如果没有特别说明,数据文件将存储在当前目录上。 1.9 在MATLAB中有几种获得帮助的途径?

Matlab 第三章 习题 答案

第三章 3.5计算多项式乘法()()222254x x x x ++++ >> a=[1 2 2]; >> b=[1 5 4]; >> c=conv(a,b) c = 1 7 16 18 8 poly2sym(c) ans = x^4 + 7*x^3 + 16*x^2 + 18*x + 8 3.6计算多项式的除法()()3231368/4x x x x ++++ >> a=[3 13 6 8]; >> b=[1 4]; >> [q r]=deconv(a,b) q = 3 1 2 r = 0 0 0 0 >> poly2sym(q) ans = 3*x^2 + x + 2 3.8求多项式4324121459x x x x --++的微分和积分 (1)微分:>> a=[4 -12 -14 5 9]; >> b=polyder(a) b = 16 -36 -28 5 >> poly2sym(b) ans = 16*x^3 - 36*x^2 - 28*x + 5 (2)积分:polyint(a) ans = 0.8000 -3.0000 -4.6667 2.5000 9.0000 0 >> poly2sym(ans) ans = (4*x^5)/5 - 3*x^4 - (14*x^3)/3 + (5*x^2)/2 + 9*x

3.9求代数方程32349x x x +-+=0的解。 >> [x]=solve('x^3+3*x^2-4*x+9') x = - 7/(3*(15/2 - (108^(1/2)*4703^(1/2))/108)^(1/3)) - (15/2 - 1/108*108^(1/2)*4703^(1/2))^(1/3) - 1 7/(6*(15/2 - (108^(1/2)*4703^(1/2))/108)^(1/3)) + (15/2 - (108^(1/2)*4703^(1/2))/108)^(1/3)/2 - (3^(1/2)*i*(7/(3*(15/2 - (108^(1/2)*4703^(1/2))/108)^(1/3)) - (15/2 - 1/108*108^(1/2)*4703^(1/2))^(1/3)))/2 - 1 7/(6*(15/2 - (108^(1/2)*4703^(1/2))/108)^(1/3)) + (15/2 - (108^(1/2)*4703^(1/2))/108)^(1/3)/2 + (3^(1/2)*i*(7/(3*(15/2 - (108^(1/2)*4703^(1/2))/108)^(1/3)) - (15/2 - 1/108*108^(1/2)*4703^(1/2))^(1/3)))/2 – 1 3.10求线性方程组223430 x xy y x x ?++=??-+=??的解 eqn1='x^2+x*y+y=3'; >> eqn2='x^2-4*x+3=0'; [x,y]=solve(eqn1,eqn2) x = 1 3 y = 1 -3/2 3.11求微分方程64dy y x dx =+的通解。 >> y=dsolve('Dy=6*y+4*x','x') y = (C3*exp(6*x))/9 - (2*x)/3 - 1/9 3.14求微分方程组2543dy x dt dx y dt ?=+????=-??在y(0)=3,x(0)=1时的特解。 >> eqn1='Dy=2*x+5'; >> eqn2='Dx=4*y-3'; >> [x y]=dsolve(eqn1,eqn2,'y(0)=3,x(0)=1') x = (2^(1/2)*(7*2^(1/2) - 9))/(8*exp(2*2^(1/2)*t)) + (2^(1/2)*exp(2*2^(1/2)*t)*(7*2^(1/2) +

matlab第八章

第8章M文件函数 使用MATLAB函数时,例如inv, abs, angle和sqrt,MATLAB获取传递给它的变量,利用所给的输入,计算所要求的结果。然后,把这些结果返回。由函数执行的命令,以及由这些命令所创建的中间变量,都是隐含的。所有可见的东西是输入和输出,也就是说函数是一个黑箱。 这些属性使得函数成为强有力的工具,用以计算命令。这些命令包括在求解一些大的问题时,经常出现的有用的数学函数或命令序列。由于这个强大的功能,MATLAB提供了一个创建用户函数的结构,并以M文件的文本形式存储在计算机上。MATLAB函数fliplr 是一个M文件函数良好的例子。 function y = fliplr(x) % FLIPLR Flip matrix in the left/right direction. % FLIPLR(X) returns X with row preserved and columns flipped % in the left/right direction. % % X = 1 2 3 becomes 3 2 1 % 4 5 6 6 5 4 % % See also FLIPUD, ROT90. % Copyright (c) 1984-94 by The MathWorks, Inc. [m, n] = size(x); y = x(: , n : -1 : 1); 一个函数M文件与脚本文件类似之处在于它们都是一个有.m扩展名的文本文件。如同脚本M文件一样,函数M文件不进入命令窗口,而是由文本编辑器所创建的外部文本文件。一个函数的M文件与脚本文件在通信方面是不同的。函数与MATLAB工作空间之间的通信,只通过传递给它的变量和通过它所创建的输出变量。在函数内中间变量不出现在MATLAB工作空间,或与MATLAB工作空间不交互。正如上面的例子所看到的,一个函数的M文件的第一行把M文件定义为一个函数,并指定它的名字。它与文件名相同,但没有.m扩展名。它也定义了它的输入和输出变量。接下来的注释行是所展示的文本,它与帮助命令:? help fliplr相对应。第一行帮助行称为H1 行,是由lookfor命令所搜索的行。最后,M文件的其余部分包含了MATLAB创建输出变量的命令。 8.1 规则和属性

matlab课后习题答案第四章

第4章数值运算 习题 4 及解答 1 根据题给的模拟实际测量数据的一组t和)(t y试用数值差分 diff或数值梯度gradient指令计算)(t y'曲线 y',然后把)(t y和)(t 绘制在同一图上,观察数值求导的后果。(模拟数据从prob_data401.mat获得) 〖目的〗 ●强调:要非常慎用数值导数计算。 ●练习mat数据文件中数据的获取。 ●实验数据求导的后果 ●把两条曲线绘制在同一图上的一种方法。 〖解答〗 (1)从数据文件获得数据的指令 假如prob_data401.mat文件在当前目录或搜索路径上 clear load prob_data401.mat (2)用diff求导的指令 dt=t(2)-t(1); yc=diff(y)/dt; %注意yc的长度将比y短1 plot(t,y,'b',t(2:end),yc,'r') (3)用gradent求导的指令(图形与上相似) dt=t(2)-t(1);

yc=gradient(y)/dt; plot(t,y,'b',t,yc,'r') grid on 〖说明〗 ● 不到万不得已,不要进行数值求导。 ● 假若一定要计算数值导数,自变量增量dt 要取得比原有数据相对误差高1、2个量级 以上。 ● 求导会使数据中原有的噪声放大。 2 采用数值计算方法,画出dt t t x y x ? =0sin )(在]10 ,0[区间曲线,并计算)5.4(y 。 〖提示〗 ● 指定区间的积分函数可用cumtrapz 指令给出。 ● )5.4(y 在计算要求不太高的地方可用find 指令算得。 〖目的〗 ● 指定区间的积分函数的数值计算法和cumtrapz 指令。 ● find 指令的应用。 〖解答〗 dt=1e-4; t=0:dt:10; t=t+(t==0)*eps; f=sin(t)./t; s=cumtrapz(f)*dt; plot(t,s,'LineWidth',3) ii=find(t==4.5); s45=s(ii) s45 =

Matlab习题

习题 1 1. 执行下列指令,观察其运算结果, 理解其意义: (1) [1 2;3 4]+10-2i (2) [1 2; 3 4].*[0.1 0.2; 0.3 0.4] (3) [1 2; 3 4].\[20 10;9 2] (4) [1 2; 3 4].^2 (5) exp([1 2; 3 4]) (6)log([1 10 100]) (7)prod([1 2;3 4]) (8)[a,b]=min([10 20;30 40]) (9)abs([1 2;3 4]-pi) (10) [1 2;3 4]>=[4,3;2 1] (11)find([10 20;30 40]>=[40,30;20 10]) (12) [a,b]=find([10 20;30 40]>=[40,30;20 10]) (提示:a 为行号,b 为列号) (13) all([1 2;3 4]>1) (14) any([1 2;3 4]>1) (15) linspace(3,4,5) (16) A=[1 2;3 4];A(:,2) 2. 执行下列指令,观察其运算结果、变量类型和字节数,理解其意义: (1) clear; a=1,b=num2str(a),c=a>0, a= =b, a= =c, b= =c (2) clear; fun='abs(x)',x=-2,eval(fun),double(fun) 3. 本金K 以每年n 次,每次p %的增值率(n 与p 的乘积为每年增值额的百分比)增加,当增加到rK 时所花费的时间为 ) 01.01ln(ln p n r T += (单位:年) 用MA TLAB 表达式写出该公式并用下列数据计算:r =2, p =0.5, n =12. 4.已知函数f (x )=x 4 -2x 在(-2, 2)内有两个根。取步长h =0.05, 通过计算函数值求得函数的最小值点和两个根的近似解。(提示:求近似根等价于求函数绝对值的最小值点) ? 5. (1) 用z=magic(10)得到10阶魔方矩阵; (2) 求z 的各列元素之和; (3) 求z 的对角线元素之和(提示:先用diag(z)提取z 的对角线); (4) 将z 的第二列除以3;

matlab作业第10章

10-2建立一个图形窗口,使之背景颜色为红色,并在窗口上保留原有的菜单项,而且在按下鼠标左键之后显示出Left Button Pressed 字样。 >> hf=figure('color','r','windowbuttondownfcn','axis off;text(0.1,0.5,''Left Button Pressed'',''fontsize'',30)') hf = 1 10-3利用图形对象绘制下列曲线,要求先利用缺省属性绘制曲线,然后通过图形句柄操作来改变曲线的颜色、线型和线宽,并利用文字对象给曲线添加文字标注。 (1)4 2 11x x y ++= x=0:0.1:10; y=((1+x.^2)/(1+x.^4)); hf=plot(x,y); >> set(hf,'color','r','linestyle',':','marker','*','linewidth',1);

(4)?????==325t y t x >> t=0:2:100; >> x=t.*t; >> y=5*t.^3; >> hf=plot(x,y); >>set(hf,'color','b','linestyle',':','marker','p','linewidth',0.3);

10-4利用图形对象绘制下列三维图形,要求与上题相同。 (1)?? ???===t z t y t x sin cos >> t=0:0.1:2*pi; >> x=cos(t); >> y=sin(t); >> z=t; >> hf=plot3(x,y,z);

matlab第三章答案

第1题: 从键盘输入一个3位数,将它反向输出。如输入639输出936、 n1=fix(n/100); n2=rem(fix(n/10),10); n3=rem(n,10); m=n3*100+n2*10+n1; disp(m) 请输入一个三位数:489 984 第2题: 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90~100分为A,80~89分为B、70~79分为C、60~69分为D,60分以下为E。 要求:(1)分别用if语句与switch语句实现。 (2)输入百分制成绩后要判断成绩的合理性,对不合理的成绩应输出错信息。 If语句: >> s=input('请输入成绩分数:'); if s>=90&s<=100 disp('A'); elseif s>=80&s<=89 disp('B'); elseif s>=70&s<=79 disp('C'); elseif s>=60&s<=69 disp('D'); elseif s>=0&s<60 disp('E'); else disp('false'); end 请输入成绩分数:89 B Switch语句: >> s=input('请输入成绩分数:'); switch fix(s/10) case {9,10} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D'); case {5,4,3,2,1,0} disp('E');

otherwise disp('false'); end 请输入成绩分数:88 B 第3题 输入20个数,求其中最大数与最小数。要求分别用循环结构与调用MA TLAB的max函数、min函数来实现。 1循序结构 A=[1 2 3 4 5 6 7 23 32 12 53 1 23 53 5 235 31 8888 33 3 21]; %还可用A=input('ENTER A:'); min=A(1); max=A(1); for i=1:19 if A(i+1)>max max=A(i+1); end if A(i+1)f; f=m; end end end funtion f=min(A) f=A(1); for i=1:20; %还可用A=input('ENTER A:'); m=A(i); if m

matlab第三章答案

第1题: 从键盘输入一个3位数,将它反向输出。如输入639输出936. n1=fix(n/100); n2=rem(fix(n/10),10); n3=rem(n,10); m=n3*100+n2*10+n1; disp(m) 请输入一个三位数:489 984 第2题: 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90~100分为A,80~89分为B、70~79分为C、60~69分为D,60分以下为E。 要求:(1)分别用if语句和switch语句实现。 (2)输入百分制成绩后要判断成绩的合理性,对不合理的成绩应输出错信息。 If语句: >> s=input('请输入成绩分数:'); if s>=90&s<=100 disp('A'); elseif s>=80&s<=89 disp('B'); elseif s>=70&s<=79 disp('C'); elseif s>=60&s<=69 disp('D'); elseif s>=0&s<60 disp('E'); else disp('false'); end 请输入成绩分数:89 B Switch语句: >> s=input('请输入成绩分数:'); switch fix(s/10) case {9,10} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D'); case {5,4,3,2,1,0} disp('E');

otherwise disp('false'); end 请输入成绩分数:88 B 第3题 输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。 1循序结构 A=[1 2 3 4 5 6 7 23 32 12 53 1 23 53 5 235 31 8888 33 3 21]; %还可用A=input('ENTER A:'); min=A(1); max=A(1); for i=1:19 if A(i+1)>max max=A(i+1); end if A(i+1)f; f=m; end end end funtion f=min(A) f=A(1); for i=1:20; %还可用A=input('ENTER A:'); m=A(i); if m

matlab作业题

第一章 MATLAB环境 1、MATLAB通用操作界面窗口包括哪些?命令窗口、历史命令窗口、当前目录窗口、工作空间窗口各有哪些功能? 答:MATLAB通用操作界面窗口包括:命令窗口、历史命令窗口、当前目录浏览器窗口、工作空间窗口、变量编辑器窗口、M文件编辑/调试器窗口、程序性能剖析窗口、MATLAB 帮助。 命令窗口是MATLAB命令操作的最主要窗口,可以把命令窗口当做高级的“草稿纸”。 在命令窗口中可以输入各种MATLAB的命令、函数和表达式,并显示除图形外的所有运算结果。 历史命令窗口用来记录并显示已经运行过的命令、函数和表达式,并允许用户对它们进行选择、复制和重运行,用户可以方便地输入和修改命令,选择多行命令以产生M文件。 当前目录窗口用来设置当前目录,可以随时显示当前目录下的M、MKL等文件的信息,扬文件类型、文件名、最后个修改时间和文件的说明信息等,并可以复制、编辑和运行M 文件及装载MAT数据文件。 工作空间窗口用来显示所有MATLAB工作空间中的变量名、数据结构、类型、大小和字节数。 2、熟悉课本中表格1.4、1.5、1.6、1.7、1.8的内容。 3、如何生成数据文件?如何把数据文件中的相关内容输入到工作空间中,用实例进行操作。

4、在工作空间中可以通过哪些命令管理变量,写出每种语法的具体操作过程。 答:(1)把工作空间中的数据存放到MAT数据文件。 语法:save filename 变量1 变量2 ……参数。 (2)从数据文件中取出变量存放到工作空间。 语法: load filename 变量1 变量2 ……。 (3)查阅MATLAB内存变量名。 语法:who (4)、查阅MATLAB内存变量变量名、大小、类型和字节数。 语法:whos (5)、删除工作空间中的变量。 语法:clear (6)查询工作空间中是否存在某个变量。 语法:i=exist(‘X’) 5、MATLAB用户文件格式有几哪种?扩展名各是什么? 答:MATLAB的用户文件格式通常有以下几种: (1)程序文件,扩展名为.m。 (2)数据文件,扩展名为.mat。 (3)可执行文件,扩展名为.mex。 (4)图形文件,扩展名为.fig。 (5)模型文件,扩展名为.mdl。 6、熟悉文件管理命令的语法,特别是命令type 作用。 7、详细操作课本26页例题1.3。

第4章matlab程序流程控制_习题答案

第4章 MATLAB程序流程控制 习题4 一、选择题 1.下列关于脚本文件和函数文件的描述中不正确的是()。 A A.函数文件可以在命令行窗口直接运行 B.去掉函数文件第一行的定义行可转变成脚本文件 C.脚本文件可以调用函数文件 D.函数文件中的第一行必须以function开始 2.下列程序的输出结果是()。D y=10; if y==10 y=20; elseif y>0 y=30 end disp(y) A.1 B.30 C.10 D.20 3.有以下语句: a=eye(5); for n=a(2:end,:) for循环的循环次数是()。C A.3 B.4 C.5 D.10 4.设有程序段 k=10; while k k=k-1 end 则下面描述中正确的是()。A A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次5.有以下程序段: x=reshape(1:12,3,4); m=0;

n=0; for k=1:4 if x(:,k)<=6 m=m+1; else n=n+1; end end 则m和n的值分别是()。C A.6 6 B.2 1 C.2 2 D.1 2 6.调用函数时,如果函数文件名与函数名不一致,则使用()。A A.函数文件名 B.函数名 C.函数文件名或函数名均可 D.@函数名 7.如果有函数声明行为“function [x,y,z]=f1(a,b,c)”,则下述函数调用格式中错误的是()。B A.x=f1(a,b,c) B.[x,y,z,w]=f1(a,b,c) C.[x,b,z]=f1(a,y,c) D.[a,b]=f1(x,y,z) 8.执行语句“fn=@(x) 10*x;”,则 fn是()。A A.匿名函数 B.函数句柄 C.字符串 D.普通函数 9.执行下列语句后,变量A的值是()。D >> f=@(x,y) log(exp(x+y)); >> A=f(22,3); A.22,3 B.22 C.3 D.25 10.程序调试时用于设置断点的函数是()。A A.dbstop B.dbclear C.dbcont D.dbstack 二、填空题 1.将有关MATLAB命令编成程序存储在一个扩展名为.m的文件中,该文件称为。M文件 2.有语句“for k=[12;34]”引导的循环结构,其循环体执行的次数为。1 3.MATLAB中用于控制不确定重复次数的循环语句为,若在循环执行过程中需要终止该循环时采用的语句为。while…end,break 4.函数文件由语句引导。在函数定义时,函数的输入输出参数称为参数,简称。在调用函数时,输入输出参数称为参数,简称。 function,形式,形参,实际,实参 5.在MATLAB中,函数文件中的变量是变量。定义变量是函数间传递信息的一种手段,可以用命令定义。局部,全局,global 6.应用程序的错误有两类,一类是错误,另一类是运行时的错误,即错

MATLAB第一章作业答案

第一章M A T L A B概况与基本操作 1.选择题: (1)最初的MATLAB核心程序是采用A语言编写的。 A.FORTRAN B.C C.BASIC D.PASCAL (2)即将于2011年9月发布的MATLAB新版本的编号为D。 A.MATLAB 2011Ra B.MATLAB 2011Rb C.MATLAB R2011a D.MATLAB R2011b (3)在默认设置中,MATLAB中的注释语句显示的颜色是D。 A.黑色 B.蓝色 C.红色 D.绿色 (4)如果要以科学计数法显示15位有效数字,使用的命令是B。 A.format long B.format long e C.format long g D.format long d (5)在命令窗口新建变量a、b,如果只查看变量a的详细信息,使用的命令为B。 A.who a B.whos a C.who D.whos (6)如果要清除工作空间的所有变量,使用的命令为 C 。 A.clear B.clear all C.两者都可 D.两者都不可 (7)在创建变量时,如果不想立即在命令窗口中输出结果,可以在命令后加上D。 A.冒号 B.逗号 C.空格 D.分号 (8)如果要重新执行以前输入的命令,可以使用B键。 A.下箭头↓ B.上箭头↑ C.左箭头← D.右箭头→ (9)如果要查询函数inv的相关信息,并显示在命令窗口,应使用命令A。 A.help B.lookfor C.doc D.三者均可 (10)如果要启动Notebook文档,下列D操作是可行的。 A.在命令窗口输入notebook命令 B.在命令窗口输入notebook filename命令 C.在Word中启动M-book文档 D.三者均可 2.填空题: (1)MATLAB是MATrix和LABoratory两个单词前三个字母的组合,意为“矩阵实验室”,它的创始人是Cleve Moler和Jack Little。 (2)在MATLAB的默认设置中,关键字显示的字体为蓝色,命令、表达式、计算结果显示的字体为黑色,字符串显示的字体为紫色,注释显示的字体为绿色,错误信息显示的字体为红色。 (3)在命令窗口中,输出结果显示为各行之间添加空行的命令为format compact,各行之间不添加空行的命令为format compact。 备注:本题布置给大家时有一点小错误,现在予以更正。 (4)在MATLAB中,各种标点符号的作用是不同的。例如,空格的作用是分隔数组中每一行的各个元素,逗号的作用是分隔数组中每一行的各个元素或不同的命令,分号的作用是分隔数组中的各行或控制命令执行结果是否在命令窗口显示,冒号的作用是生成一维数组或显示全部元素,百分号的作用是注释行的开头,…的作用是把相邻两行的语句连接为一个命令,感叹号的作用是执行操作系统命令。 3.先建立自己的工作目录,再将自己的工作目录设置到MATLAB搜索路径下。请写出操作步骤或用Matlab命令实现。用help命令能查询到自己的工作目录吗? 解:操作步骤: (1)在Windows环境中建立一个工作目录,如:c:\mywork; (2)启动MATLAB,在File菜单中选择Set Path…命令,显示出如下图的对话框:

MATLAB 第三章习题

第三章 2,0[ 上产生具有10个等距采样点的一维数组。试用两种不同的指令实1.要求在闭区间] 现。 方法一 t1=linspace(0,2*pi,10) t1 = 0 0.6981 1.3963 2.0944 2.7925 3.4907 4.1888 4.8869 5.5851 6.2832 方法二 t2=0:2*pi/9:2*pi 结果与t1相同 2.由指令rand('state',0),A=rand(3,5)生成二维数组A,试求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。 rand('state',0),A=rand(3,5) [ri,cj]=find(A>0.5); id=sub2ind(size(A),ri,cj); ri=ri'; cj=cj'; disp(' ') disp('大于0.5的元素的全下标') disp(['行号 ',int2str(ri)]) disp(['列号 ',int2str(cj)]) disp(' ') disp('大于0.5的元素的单下标') disp(id') A = 0.9501 0.4860 0.4565 0.4447 0.9218 0.2311 0.8913 0.0185 0.6154 0.7382 0.6068 0.7621 0.8214 0.7919 0.1763 大于0.5的元素的全下标 行号 1 3 2 3 3 2 3 1 2 列号 1 1 2 2 3 4 4 5 5 大于0.5的元素的单下标 1 3 5 6 9 11 1 2 1 3 14

3. 已知矩阵?? ? ? ??=4321A ,运行指令B1=A.^(0.5), B2=A^(0.5), 可以观察到不同运算方法所得结果不同。(1)请分别写出根据B1, B2恢复原矩阵A 的程序。(2)用指令检验所得的两个恢复矩阵是否相等。 A=[1,2;3,4]; B1=A.^0.5 B2=A^0.5 A1=B1.*B1; A2=B2*B2; norm(A1-A2,'fro') B1 = 1.0000 1.4142 1.7321 2.0000 B2 = 0.5537 + 0.4644i 0.8070 - 0.2124i 1.2104 - 0.3186i 1.7641 + 0.1458i ans = 1.8505e-015 4. 在时间区间 [0,10]中,绘制t e y t 2cos 15.0--=曲线。要求分别采取“标量循环运算法” 和“数组运算法”编写两段程序绘图。 %标量循环运算法 t=linspace(0,10,200); N=length(t); y1=zeros(size(t)); for k=1:N y1(k)=1-exp(-0.5*t(k))*cos(2*t(k)); end subplot(1,2,1), plot(t,y1), xlabel('t'), ylabel('y1'), grid on %数组运算法 y2=1-exp(-0.5*t).*cos(2*t);

matlab第四章作业

matlab 第四章作业 4.2编写函数文件求半径为r 的圆的面积和周长 步骤:1.首先建立函数文件,命名为Abb.m 程序如下: function [s,c]=Abb(r) s=pi*r*r;%求圆的面积 c=2*pi*r;%求圆的周长 end 在工作空间中调用Abb 求圆的面积和周长(将半径设为3) 程序结果如下 [s c]=Abb(3) s = 28.2743 c = 18.8496 4.3已知y=2 2221312111n ++++ 。当n=100时,求y 的值 步骤:建立函数,命名为Cbb.m 求平方倒数的和。其程序如下 function F=Cbb(n) F=0;k=1; while k<=n F=F+(1/k)/k; k=k+1; end end 在工作空间中求y 值 y= Cbb(100) y= 1.6350 4.5编制程序,计算1+2+ +n<2000时的最大n 值 步骤:建立函数文件Dbb.m,求累加和小于n 的最大数,使n=2000程序如下 function k=Dbb(n) k=1; f=0; while f

k=k-2; end 将2000作为输入值,求n.在工作空间中输入如下: Dbb(2000) ans = 62 4.6分别用for 和while 循环结构编写程序,求出K=∑=6302 i i 分别用for 和while 循环结构编写命令文件Ebb,Fbb.并在工作空间中求K Ebb 程序如下 f=1; J(1)=1; for i=1:63 J(i+1)=J(i)*2; f=f+J(i+1); End 求K 程序: Ebb.m f f = 1.8447e+019 Fbb 程序如下 I=1; H=1; i=1; while i<=63 H=H*2; I=I+H; i=i+1; end 在工作空间中求K Fbb.m I I = 1.8447e+019

相关主题