matlab章课后作业.docx
- 文档编号:27095326
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:31
- 大小:120.89KB
matlab章课后作业.docx
《matlab章课后作业.docx》由会员分享,可在线阅读,更多相关《matlab章课后作业.docx(31页珍藏版)》请在冰豆网上搜索。
matlab章课后作业
MATLAB基础教程1~8章作业
Matlab第一章
1.阐述Matlab的功能
Matlab作为一种高级计算软件,是进行算法开发、数据可视化、数据分析以及数值计算的交互式应用开发环境,已被广泛应用于不同领域。
Matlab的基本功能包括:
数学计算功能、图形化显示功能、M语言编程功能、编译功能、图形用户界面开发功能、Simulink建模仿真功能、自动代码生成功能。
Matlab第二章
1.创建double的变量,并进行计算。
(1)a=87,b=190,计算a+b、a-b、a*b。
(2)创建uint8类型的变量,数值与
(1)中相同,进行相同的计算。
>>a=87,b=190
a=
87
b=
190
>>a+b
ans=
277
>>a-b
ans=
-103
>>a*b
ans=
16530
>>c=uint8(87),d=uint8(190)
c=
87
d=
190
>>c+d
ans=
255
>>c-d
ans=
0
>>c*d
ans=
255
2.计算
(1)sin(60)
(2)e^3
(3)cos(3π/4)
>>sind(60)
ans=
>>exp(3)
ans=
>>cos(3*pi/4)
ans=
3.设u=2,v=3,计算:
(1)
(2)
(3)
>>u=2;
>>v=3;
>>4*u*v/log(v)
ans=
>>(exp(u)+v)^2/(v^2-u)
ans=
>>sqrt(u-3*v)/(u*v)
ans=
0+
4.计算如下表达式:
(1)
(2)
>>(3-5*i)*(4+2*i)
ans=
判断下面语句的运算结果。
(1)4<20
(2)4<=20
(3)4==20
(4)4~=20
(5)'b'<'B'
>>4<20
ans=
1
>>4<=20
ans=
1
>>4==20
ans=
0
>>4~=20
ans=
1
>>'b'<'B'
ans=
0
6.设a=39,b=58,c=3,d=7判断下面表达式的值。
(1)a>b
(2)a (3)a>b&&b>c (4)a==d (5)a|b>c (6)~~d >>a=39,b=58,c=3,d=7 a= 39 b= 58 c= 3 d= 7 >>a>b ans= 0 >>a ans= 0 >>a>b&&b>c ans= 0 >>a==d ans= 0 >>a|b>c ans= 1 >>~~d ans= 1 7.编写脚本,计算上面第2题中的表达式。 %计算表达式的值并显示 disp('sin(60)='); disp(sind(60)); disp('exp(3)='); disp(exp(3)); disp('cos(3*pi/4)='); disp(cos(3*pi/4)); 8.编写脚本,输出上面第6题中的表达式的值。 %计算表达式的值并显示 a=39; b=58; c=3; d=7; disp('a>b'),disp(a>b); disp('a disp('a>b&&b>c'),disp(a>b&&b>c) disp('a==d'),disp(a==d); disp('a|b>c'),disp(a|b>c); disp('~~d'),disp(~~d); Matlab第三章 1.在命令提示符下输入以下两条命令: >>x=[93063] >>y=mod((sqrt(length(((x+5).*[12345]))*5)),3) 求y值为多少? x= 93063 y= 2 2.在MATLAB中运行以下命令: a=[3,7,2,7,9,3,4,1,6]; b=[7]; a(4)=[]; vec1=a==b; vec2=mod(a,2)==0; c=sum(vec1); vec3=vec1+vec2; d=vec3.*a; vec4=find(a>5); e=a(vec4)+5; vec5=find(a<5); f=vec5.^2;求c、d、e、f的值。 >>c c= 1 >>d d= 07200406 >>e e= 121411 >>f f= 3.向量操作时Matlab的主要部分,使用给出的向量来做下面的练习. Vec=[2533430-65-343] (1)创建一个新的向量vecR,使其成为vec的转置. (2)创建一个新的向量vecB,使其成为vec前半部分与后半部分对换的结果. (3)创建一个新的向量vecS,使其包含vec中所有小于45的元素,且按vec中的顺序排列. (4)创建一个新的向量vec3R,使其从vec中最后一个元素开始,间隔3个元素取一个元素,直到第一个元素为止. (5)创建一个新的向量vecN,使其包含vec中所有等于2或4的元素的索引值. (6)创建一个新的向量vecG,使其包含vec中去掉索引值为奇数且取值为2或4的元素后的所有元素. >>vecR=vec' vecR= 4 5 2 8 4 7 2 64 2 57 2 45 7 43 2 5 7 3 3 6253 3 4 3 0 -65 -34 >>vec1=vec(1: 13) vec1= >>vec2=vec(14: 26) vec2= Columns1through8 2533 Columns9through13 430-65-34 >>vecB=[vec2vec1] vecB= Columns1through8 2533 Columns9through16 430-65-34452 Columns17through24 72 Columns25through26 457 >>small=vec<45 small= Columns1through17 1111 Columns18through26 1 >>vecS=vec(small) vecS= Columns1through17 33 Columns18through22 430-65-34 >>vec3R=vec(end: -3: 1) vec3R= Columns1through8 -432644 Column9 5 >>vecN=find(vec==2|vec==4) vecN= >>[value]=vecN(find(mod(vecN,2))) value= 5 >>vec(value)=0 vec= Columns1through8 0 Columns9through16 005 Columns17through24 430 Columns25through26 -65-34 >>vec(vec==0)=[] vec= Columns1through8 5743 Columns9through16 343 Columns17through18 -65-34 >>vecG=vec vecG= Columns1through8 5743 Columns9through16 343 Columns17through18 -65-34 4.给定一下3个向量: nums1=[74] nums2=[9411] nums3=[] 编写脚本文件创建相应的3个向量,newNum1、newNum2、newNum3,分别包含以上3个向量中从第一个元素开始且间隔取值的元素。 %取向量索引为奇数的值 clear clc nums1=[74]; nums2=[9411]; nums3=[]; x1=find(mod(find(nums1),2)==1);%向量1 [values1]=nums1(x1); newNums1=values1; disp('nums1='); disp(nums1); disp('newNums1='); disp(newNums1); x2=find(mod(find(nums2),2)==1);%向量2 [values2]=nums2(x2); newNums2=values2; disp('nums2='); disp(nums2); disp('newNums2='); disp(newNums2); x3=find(mod(find(nums3),2)==1);%向量3 [values3]=nums3(x3); newNums3=values3; disp('nums3='); disp(nums3); disp('newNums3='); disp(newNums3); Matlab第四章 1.有如下数据: X 1 y 利用本章介绍的几种插值方法对其进行插值,得到每隔的结果。 %4种插值方法 x=[与y的值 y=[定义4种方法 y_nearest(i)=interp1(x,y,scalar_x(i),'nearest'); y_liner(i)=interp1(x,y,scalar_x(i),'liner'); y_spline(i)=interp1(x,y,scalar_x(i),'spline'); y_cubic(i)=interp1(x,y,scalar_x(i),'cubic'); end subplot(2,2,1),plot(x,y,'*'),holdon,plot(scalar_x,y_nearest),title('nearest');%输出 subplot(2,2,2),plot(x,y,'*'),holdon,plot(scalar_x,y_liner),title('linear'); subplot(2,2,3),plot(x,y,'*'),holdon,plot(scalar_x,y_spline),title('spline'); subplot(2,2,4),plot(x,y,'*'),holdon,plot(scalar_x,y_cubic),title('cubic'); .求下列函数的解,并绘制图形。 (1)y=ex-x5,初始点为x=8. (2)y=xsin(x) >>y=@(x)exp(x)-x^5; >>x=fzero(y,8) x= >>fplot(y,[10,14]); >>holdon >>plot(x,y(x),'r*') >>y=@(x)x*sin(x); >>x=fzero(y,0) x= 0 3.求下列函数的极值。 (1)z=x2-(y-1)2 (2)z=(x-y+1)2 >>z=@(x)x (1)^2-(x (2)-1)^2; >>[x,fvalue]=fminsearch(z,[-1,1]) Exiting: Maximumnumberoffunctionevaluationshasbeenexceeded -increaseMaxFunEvalsoption. Currentfunctionvalue: x= +043* 计算下列积分。 (1) (2) >>f=@(x)x+x.^3+x.^5; >>q=quad(f,-1,1) q= >>f=@(x,y)sin(y).*(x+y)./(x.^2+4); >>q=dblquad(f,1,10,1,10) q= Matlab第五章 1.编制一个脚本,查找给定字符串中指定字符出现的次数和位置. %查找给定字符串中指定字符出现的次数和位置 letter='a';%指定字符 string='Ihavealongstring';%给定字符串 places=findstr(string,letter);%位置 times=length(places);%次数 disp('placesare: '); disp(places); disp('timesare: '); disp(times); 2.编写一个脚本,判断输入字符串中每个单词的首字母是否为大写,若不是则将其修改为大写,其他字母为小写. %将每个单词首字母变为大写 str='Ihavealongstring'; disp(str); nlength=length(str); fork=1: nlength if(k==1||isspace(str(k-1)))&&(str(k)<='z'&&str(k)>='a') str(k)=char(double(str(k))-32); end end disp(str); 3.创建2×2单元数组,第1、2个元素为字符串,第三个元素为整型变量,第四个元素为双精度(double)类型,并将其用图形表示. >>A=cell(2,2) A= [][] [][] >>A(1,1)={'string1'}; >>A(1,2)={'string2'}; >>A(2,1)={uint8(100)}; >>A(2,2)={double(60)}; >>cellplot(A) 4.创建一个结构体,用于统计学生的情况,包括学生的姓名、学号、各科成绩等。 然后使用该结构体对一个班级的学生成绩进行管理,如计算总分、平均分、排列名次等. >>student=struct('name',{'Ann','Bob','Cilly'},'number',{1,2,3},'grade',{90,60,85}) student= 1x3structarraywithfields: name number grade >>student (1) ans= name: 'Ann' number: 1 grade: 90 >>student (2) ans= name: 'Bob' number: 2 grade: 60 >>student(3) ans= name: 'Cilly' number: 3 grade: 85 >>total=student (1).grade+student (2).grade+student(3).grade total= 235 >>average=total/3 average= >>[new,index]=sort([],'descend') new= 908560 index= 132 Matlab第六章 1.假设x=[-3,0,0,2,5,8]且y=[-5,-2,0,3,4,10]。 通过手算得到以下运算的结果,并使用MATLAB检验计算的结果。 (1)z=y<~x (2)z=x&y (3)z=x|y (4).z=xor(x,y) >>x=[-3,0,0,2,5,8] x= -300258 >>y=[-5,-2,0,3,4,10] y= -5-203410 >>z1=y<~x z1= 111000 >>z2=x&y z2= 100111 >>z3=x|y z3= 110111 >>z4=xor(x,y) z4= 010000 2.在MATLAB中使用一个循环确定: 如果用户最初在一个银行帐户中存储$10000,并且在每年的年终再存储$10000(银行每年支付6%的利息),那么账户上要积累$1000000要需要多长时间。 %银行存款计算 a=10000;%本金 b=10000;%每年新增存款 sum=0;%存款总和 i=1; sum=sum+a; whilesum<1000000 i=i+1; sum=sum*(1++b; end disp('year=') disp(i) near= 34 3.某个特定的公司生产和销售高尔夫手推车。 每周周末,公司都将那一周所生产的手推车转移到仓库(库存)之中。 卖出的所有手推车都是从库存中提取。 这个过程的一个简单模型为: I(k+1)=P(k)+I(k)-S(k) 其中: P(k)=第k周所生产的手推车数量; I(k)=第k周库存中的手推车数量; S(k)=第k周所卖出的手推车数量; 以下为10周计划中的每周销售额; 周 1 2 3 4 5 6 7 8 9 10 销售额 50 55 60 70 70 75 80 80 90 55 假设每周的产量都基于前一周的销售额,所以有P(k)=S(k-1)。 假设第一周的产量为50辆手推车: 即,P (1)=50。 编写一个MATLAB程序计算: 10周之内每周库存之中的手推车数量或者计算手推车库存数量减少到0为止的时间,并同时绘制图形。 针对以下两种情况运行该程序: (1)初始库存为50辆手推车,所以I (1)=50; (2)初始库存为30辆手推车,所以I (1)=30。 >>s=[50556070707580809055] s= 9055 >>fori=2: 1: 10 p(i)=s(i-1); end >>p p= 090 >>l=[000] l= 000 >>forn=2: 1: 10 l(n)=l(n-1)+p(n)-s(n); end >>l l= 1045 >>l=[000] l= 000 >>forn=2: 1: 10 l(n)=l(n-1)+p(n)-s(n); end >>l l= 302520 周 1 2 3 4 5 库存量 (1) 50 50 45 40 30 库存量 (2) 30 25 20 20 10 周 6 7 8 9 10 库存量 (1) 30 30 25 20 10 库存量 (2) 10 5 0 0 (<0) Matlab第七章 1.创建符号表达式f(X)=sinx+x。 >>f=sym('sin(x)+x'); 2.计算习题1中表达式在 处的值,并将结果设置为以下5种精度: 小数点之后1位、2位、5位、10位和20位有效数字。 >>digits (2) >>vpa(subs(f,pi/6)) ans= >>digits(3) >>vpa(subs(f,pi/6)) ans= >>digits(6) >>vpa(subs(f,pi/6)) ans= >>digits(11) >>vpa(subs(f,pi/6)) ans= >>digits(21) >>vpa(subs(f,pi/6)) ans= 3.设x为符号变量,f(x)=x4+x2+1,g(x)=x3+4x2+5x+8,试进行如下运算: (1)f(x)+g(x) (2)f(x)*g(x) (3)求g(x)的反函数 (4)求g以f(x)为自变量的复合函数 >>f=sym('x^4+x^2+1'); g=sym('x^3+4*x^2+5*x+8'); >>f+g ans= x^4+x^3+5*x^2+5*x+9 >>f*g ans= (x^4+x^2+1)*(x^3+4*x^2+5*x+8) >>finverse(g) Warning: Functionalinverseisnotunique. >InD: \ProgramFiles\MATLAB\R2011a\toolbox\symbolic\symbolic\>symengineat52 ans= 1/(9*(x/2+((x/2-82/27)^2-1/729)^(1/2)-82/27)^(1/3))+(x/2+((x/2-82/27)^2-1/729)^(1/2)-82/27)^(1/3)-4/3 >>symsx >>compose(g,f,x) ans= 4*(x^4+x^2+1)^2+(x^4+x^2+1)^3+5*x^2+5*x^4+13 4.合并同类项 (1)3x-2x2+5+3x3-2x-5 (2)2x2-3xy+y2-2xy-2x2+5xy-2y+1 >>f=sym('3*x-2*x^2+5+3*x^2-2*x-5'); >>collect(f) ans= x^2+x >>f=sym('2*x^2-3*x*y+y^2-2*x*y-2*x^2+5*x*y-2*y+1'); >>collect(f) ans= y^2-2*y+1 5.因式分解 (1)7798666进行因数分解,分解为素数乘积的形式 (2)-2m8+512 (3)3a2(x-y)2-4b2(y-x)2 >>sym779866 ans= 779866 >>factor(779866) ans= >>f=sym('-2*m^8+512') f= 512-2*m^8 >>factor(f) ans= -2*(m-2)*(m+2)*(m^2+4)*(m^4+16) >>g=sym('3*a^3*(x-y)^3-4*b^2*(y-x)^2') g= 3*a^3*(x-y)^3-4*b^2*(x-y)^2 >>factor(g) ans= (x-y)^2*(3*a^3*x-3*a^3*y-4*b^2) 6.绘制下列函数的图像 (1) , (2) , >>f=sym('sin(x)+x^2') f= sin(x)+x^2 >>ezplot(f,[0,2*pi]) >>g=sym('x^3+2*x^2+1') g= x^3+2*x^2+1 >>ezplot(g,[-2,2]) 7.计算下列各式 (1) (2) ,求 (3) ,求 , , (4) , >>limit(sym('(tan(x)-sin(x))/(1-cos(2*x))')) ans= 0 >>y=sym('x^3-2*x^2+sin(x)') y= sin(x)-2*x^2+x^3 >>diff(y) ans= cos(x)-4*x+3*x^2 >>f=sym('x*y*log(x+y)') f= x*y*log(x+y) >>diff(f,'x') ans= y*log(x+y)+(x*y)/(x+y) >>diff(f,'y') ans= x*log(x+y)+(x*y)/(x+y) >>y=sym('ln(1+t)') y= log(t+1) >>int(y) ans= (log(t+1)-1)*(t+1) >>int(y,0,27) ans= 28*log(28)-27 8.计算下列各式 (1) (2) (3) 在0附近的Taylor展开 >>symsum(sym('(3/n)^n'),1,inf) ans= sum(3^n/n^n,n=1..Inf) >>symsum(sym('2^n*sin(pi/(3^n))'),1,inf) ans= sum(2^n*sin(pi/3^n),n=1..Inf) >>taylor(sym('sin(x)')) ans= x^5/120-x^3/6+x 9.求解线性方程组 >>[x,y]=solve(sym('2*x+3*y=1'),sym('3*x+2*y=-1')) x= -1 y= 1 10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 课后 作业