文档库 最新最全的文档下载
当前位置:文档库 › matlab第七次作业

matlab第七次作业

matlab第七次作业
matlab第七次作业

兔子繁殖问题3

如果一对兔子每一个月可以生一对兔子,并且兔子在出生二个月以后就具有繁殖后代的能力,三个月后就离开群体。由一对兔子开始,一年可以繁殖成多少对兔子?求这个种群的稳定分布。

假设:

1、一个月生一对兔子;

2、幼兔经过两个月之后成为成兔;

3、成兔在生了兔子之后离开这个群体

变量:

一月兔——a1(n)

二月兔——a2(n)

三月兔——a3(n)

a1(n)=a2(n-1)+a3(n-1)

a2(n)=a1(n-1)

a3(n)=a2(n-1)

推知,a(n)=A*a(n-1)

A =

0 1 1

1 0 0

0 1 0

a=A^12*a

得到:

a =

12

9

7

结论:得到的一月兔是12对,二月兔是9对,三月兔是7对。

[v,d]=eig(A)

得到的是:

v =

-0.7265 0.0804 - 0.4885i 0.0804 + 0.4885i -0.5484 -0.4344 + 0.3688i -0.4344 - 0.3688i -0.4140 0.6559 0.6559

d =

1.3247 0 0

0 -0.6624 + 0.5623i 0

0 0 -0.6624 - 0.5623i

t(:,1)=v(:,1)/sum(v(:,1))

得到的是:

t =

0.4302

0.3247

0.2451

得出结论:

一月兔在年底占43.02%;

二月兔在年底占32.47%;

三月兔在年底占24.51%;

一群动物最高年龄为15岁(年),繁殖周期为5年,因此每5岁一组分成3个年龄组,各组繁殖率为0, 4, 3,存活率为1/2,1/4。建立种群增长模型。

(1)开始每组各有1000只,求30年后各组分别有多少只; 并确定种群的固有增长率和

稳定分布。

(2)如果饲养者每5年出售一次动物,出售量为龄组i在这5年的增量,记出售量与该

龄组存量之比为本时段收获系数H,即hi(n)xi (n)=xi (n)-xi (n-1),H(n)=diag(h1(n), h2 (n), h3(n)) 。建立收获模型。

(3)如果饲养者只出售幼龄组动物,即h2 =h3 =0。求稳定收获的收获系数,该种群的

稳定分布和收获量。(所谓稳定收获指收获量不变,这时收获系数和收获后的种群数量与时间n无关)

解:

(1)

假设:

每个年龄组的个体独立,且不受外界影响;

变量:

幼龄兔——a0(n)

中龄兔——a1(n)

老龄兔——a2(n)

按年龄分组的种群增长(Leslie矩阵)模型

可知,a(n)=A*a(n-1)

A =

0 4.0000 3.0000

0.5000 0 0

0 0.2500 0

[v, d]=eig(A)

得到:

v =

-0.9474 0.9320 0.2259

-0.3158 -0.3560 -0.5914

-0.0526 0.0680 0.7741

d =

1.5000 0 0

0 -1.3090 0

0 0 -0.1910

由b=A^30*a

可得:

b =

1.0e+008 *

5.3810

1.8429

0.2977

即在30年后,幼龄兔的数量是5.3810*10^8只,中龄兔的数量是1.8429*10^8只,老龄兔的数量是0.2977*10^8只。

由m=v(:,1)/sum(v(:,1))

可得:

m =

0.7200

0.2400

0.0400

幼龄兔、中龄兔、老龄兔所占的比率是:72%、24%、4%。

(2)如果饲养者每5年出售一次动物,出售量为龄组i在这5年的增量,记出售量与该龄组存量之比为本时段收获系数H,即hi(n)xi (n)=xi (n)-xi (n-1),H(n)=diag(h1(n), h2 (n), h3(n)) 。建立收获模型。

因为每五年出售的仅仅是5年里的增量,所以,幼龄兔的数量保持不变

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-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课后习题解答第二章doc

第2章符号运算 习题2及解答 1 说出以下四条指令产生的结果各属于哪种数据类型,是“双精度” 对象,还是“符号”符号对象? 3/7+0.1; sym(3/7+0.1); sym('3/7+0.1'); vpa(sym(3/7+0.1)) 〖目的〗 ●不能从显示形式判断数据类型,而必须依靠class指令。 〖解答〗 c1=3/7+0.1 c2=sym(3/7+0.1) c3=sym('3/7+0.1') c4=vpa(sym(3/7+0.1)) Cs1=class(c1) Cs2=class(c2) Cs3=class(c3) Cs4=class(c4) c1 = 0.5286 c2 = 37/70 c3 = 0.52857142857142857142857142857143 c4 = 0.52857142857142857142857142857143 Cs1 = double Cs2 = sym Cs3 = sym Cs4 = sym 2 在不加专门指定的情况下,以下符号表达式中的哪一个变量被认 为是自由符号变量. sym('sin(w*t)'),sym('a*exp(-X)'),sym('z*exp(j*th)') 〖目的〗 ●理解自由符号变量的确认规则。 〖解答〗 symvar(sym('sin(w*t)'),1) ans = w symvar(sym('a*exp(-X)'),1) ans = a

symvar(sym('z*exp(j*th)'),1) ans = z 3 求以下两个方程的解 (1)试写出求三阶方程05.443 =-x 正实根的程序。注意:只要正实根,不要出现其他根。 (2)试求二阶方程022=+-a ax x 在0>a 时的根。 〖目的〗 ● 体验变量限定假设的影响 〖解答〗 (1)求三阶方程05.443 =-x 正实根 reset(symengine) %确保下面操作不受前面指令运作的影响 syms x positive solve(x^3-44.5) ans = (2^(2/3)*89^(1/3))/2 (2)求五阶方程02 2 =+-a ax x 的实根 syms a positive %注意:关于x 的假设没有去除 solve(x^2-a*x+a^2) Warning: Explicit solution could not be found. > In solve at 83 ans = [ empty sym ] syms x clear syms a positive solve(x^2-a*x+a^2) ans = a/2 + (3^(1/2)*a*i)/2 a/2 - (3^(1/2)*a*i)/2 4 观察一个数(在此用@记述)在以下四条不同指令作用下的异同。 a =@, b = sym( @ ), c = sym( @ ,' d ' ), d = sym( '@ ' ) 在此,@ 分别代表具体数值 7/3 , pi/3 , pi*3^(1/3) ;而异同通过vpa(abs(a-d)) , vpa(abs(b-d)) , vpa(abs(c-d))等来观察。 〖目的〗 ● 理解准确符号数值的创建法。 ● 高精度误差的观察。 〖解答〗 (1)x=7/3 x=7/3;a=x,b=sym(x),c=sym(x,'d'),d=sym('7/3'), a =

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 第三章 习题 答案

第三章 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习题

习题 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课后习题答案第四章

第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题: 从键盘输入一个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。

中南大学matlab课后习题

第二章 1·求下列表达式的值。 (1)w=sqrt(2)*(1+*10^-6) w = (2)a=;b=5;c=; x=(2*pi*a+(c+b)/(pi+a*b*c)-exp(2))/(tan(b+c)+a); x x = (3)a=;b=; y=2*pi*a^2*[(1-pi/4)*b-4)*a]; y y = (4)t=[2,1-3i;5,]; z=1/2*exp(2*t)*log(t+sqrt(1+t^2)); z z = +004 * - - - - 2,已知a,b,求下列表达式的值。 a=[-1,5,-4;0,7,8;3,61,7];b=[8,3,-1;2,5,3;-3,2,0];(1)a+6*b ans = 47 23 -10

12 37 26 -15 73 7 a^2-b+eye(3) ans = -18 -217 17 22 533 109 21 867 526(2)a*b ans = 14 14 16 -10 51 21 125 328 180 a.*b ans = -8 15 4 0 35 24 -9 122 0 b*a ans = -11 0 -15 7 228 53 3 -1 28(3)a/b ans = b\a

ans = (4)[a,b] ans = -1 5 -4 8 3 -1 0 7 8 2 5 3 3 61 7 -3 2 0 [a([1,3],:);b^2] ans = -1 5 -4 3 61 7 73 37 1 17 37 13 -20 1 9 3.已知a,完成下列操作。 a=[23,10,,0;41,-45,65,5;32,5,0,32;6,,54,]; (1)输出a在[10,25]范围内的全部元素。 k=find(a>10&a<25) a(k) k = 1 ans = 23 (2)取出a前3行构成矩阵b,前两列构成矩阵c,右下角3*2子矩阵构成矩阵d,b与c的乘积构成矩阵e。 b=a(1:3,:)

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 实用教程 课后习题答案

第二章 1.计算复数3+4i与5-6i的乘积。 a=3+4i b=5-6i c=a*b 2.构建结构体Students,属性包含Name、age和Email,数据包括{’Zhang’,18,*‘Zhang@16 https://www.wendangku.net/doc/014249277.html,’,’Zhang@https://www.wendangku.net/doc/014249277.html,’+}、{’Wang’,21,[]}和{’Li’,[],[]},构建后读取所有Name属性值,并且修改’Zhang’的Age属性值为19。 Students(1).Age=18 Students(1).Email='zhang@https://www.wendangku.net/doc/014249277.html,','zhang@https://www.wendangku.net/doc/014249277.html,' Students(2).Name='Wang' Students(2).Age=21 Students(2).Email=[] Students(3).Name='Li' Students(3).Age=[] Students(3).Email=[] https://www.wendangku.net/doc/014249277.html, Student(1).Age(1)=19 Student.Age 3.用满矩阵和稀疏矩阵存储方式分别构造下属矩阵: A=[0 1 0 0 0;1 0 0 0 0;0 0 0 0 0;0 0 0 1 0] A=[0 1 0 0 0;1 0 0 0 0;0 0 0 0 0;0 0 0 1 0] S=sparse(A) S=sparse([2,1,4],[1,2,4],[1,1,1],4,5) 4.采用向量构造符得到向量[1,5,9....,41]. A=1:4:41 5.按水平和竖直方向分别合并下述两个矩阵:A=[1 0 0;1 1 0;0 0 1],B=[2 3 4;5 6 7;8 9 10] A=[1 0 0;1 1 0;0 0 1] B=[2 3 4;5 6 7;8 9 10] C=[A B] D=[A;B] 6.分别删除第五题两个结果的第2行。 A=[1 0 0;1 1 0;0 0 1] B=[2 3 4;5 6 7;8 9 10] C=[A B] D=[A;B] C(2,:)=[] D(2,:)=[] 7.分别将第5题两个结果的第2行最后3列的数值改为[11 12 13]。 A=[1 0 0;1 1 0;0 0 1] B=[2 3 4;5 6 7;8 9 10] C=[A B] D=[A;B]

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);

相关文档