admin 管理员组文章数量: 887021
2024年2月25日发(作者:java软件如何配置环境变量)
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 =
0.8660
>> exp(3)
ans =
20.0855
>> cos(3*pi/4)
ans =
-0.7071
3.设u=2,v=3,计算:
(1)
(2)
(3)
>> u=2;
>> v=3;
>> 4*u*v/log(v)
ans =
21.8457
>> (exp(u)+v)^2/(v^2-u)
ans =
15.4189
>> sqrt(u-3*v)/(u*v)
ans =
0 + 0.4410i
4.计算如下表达式:
(1)
(2)
>> (3-5*i)*(4+2*i)
ans =
22.0000 -14.0000i
>> sin(2-8*i)
ans =
1.3553e+003 +6.2026e+002i
5.判断下面语句的运算结果。
(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 = [ 9 3 0 6 3] >> y = mod((sqrt(length(((x+5).*[1 2 3 4 5]))*5)),3) 求y值为多少? x = 9 3 0 6 3 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 = 0 7 2 0 0 4 0 6 >> e e = 12 14 11 >> f f = 1 9 25 36 49 3.向量操作时Matlab的主要部分,使用给出的向量来做下面的练习. Vec=[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 -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 = 4 5 2 7 >> vec2=vec(14:26) vec2 = Columns 1 through 8 43 6253 3 Columns 9 through 13 4 >> vecB=[vec2 vec1] vecB = Columns 1 through 8 43 6253 3 Columns 9 through 16 4 5 2 Columns 17 through 24 8 57 2 Columns 25 through 26 8 4 2 3 2 3 4 7 2 64 5 7 0 -65 5 7 0 -65 7 2 2 57 3 -34 3 -34 64 2 45 3 3 4 2 45 7 >> small=vec<45 small = Columns 1 through 17 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 Columns 18 through 26 1 1 0 1 1 1 1 1 1 >> vecS=vec(small) vecS = Columns 1 through 17 4 5 2 8 4 5 7 3 3 3 Columns 18 through 22 4 3 0 -65 -34 >> vec3R=vec(end:-3:1) vec3R = Columns 1 through 8 -34 3 64 4 Column 9 5 >> vecN=find(vec==2|vec==4) vecN = 1 3 5 7 9 >> [value]=vecN(find(mod(vecN,2))) value = 1 3 5 7 9 >> vec(value)=0 vec = Columns 1 through 8 0 5 0 64 Columns 9 through 16 0 57 0 5 Columns 17 through 24 7 3 3 0 Columns 25 through 26 -65 -34 >> vec(vec==0)=[] vec = Columns 1 through 8 7 2 2 6253 7 11 15 22 11 15 0 8 0 45 3 6253 2 7 43 0 7 3 43 2 2 7 43 4 5 8 7 43 Columns 9 through 16 5 7 4 3 Columns 17 through 18 -65 -34 >> vecG=vec vecG = Columns 1 through 8 5 8 7 43 Columns 9 through 16 5 7 4 3 Columns 17 through 18 -65 -34 7 64 57 45 3 3 6253 3 7 64 57 45 3 3 6253 3 4.给定一下3个向量: nums1=[7 1 3 5 32 12 1 99 10 24] nums2=[54 1 456 9 20 45 48 72 61 32 10 94 11] nums3=[44 11 25 41 84 77 998 85 2 3 15] 编写脚本文件创建相应的3个向量,newNum1、newNum2、newNum3,分别包含以上3个向量中从第一个元素开始且间隔取值的元素。 %取向量索引为奇数的值 clear clc nums1=[7 1 3 5 32 12 1 99 10 24]; nums2=[54 1 456 9 20 45 48 72 61 32 10 94 11]; nums3=[44 11 25 41 84 77 998 85 2 3 15]; 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 1.1 1.2 1.3 y 1.00000 1.23368 1.55271 1.99372 利用本章介绍的几种插值方法对其进行插值,得到每隔0.05的结果。%4种插值方法 x=[1 1.1 1.2 1.3 1.4]; y=[1.00000 1.23368 1.55271 1.99372 2.61170]; length_of_x=length(x); scalar_x=[x(1):0.05:x(length_of_x)]; length_of_sx=length(scalar_x); for i=1:length_of_sx 法 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,'*'),hold on,plot(scalar_x,y_nearest),title('nearest'); subplot(2,2,2),plot(x,y,'*'),hold on,plot(scalar_x,y_liner),title('linear'); subplot(2,2,3),plot(x,y,'*'),hold on,plot(scalar_x,y_spline),title('spline'); subplot(2,2,4),plot(x,y,'*'),hold on,plot(scalar_x,y_cubic),title('cubic'); 2. 2. 求下列函数的解,并绘制图形。 (1) y=ex-x5,初始点为x=8. (2) y=xsin(x) >> y=@(x)exp(x)-x^5; >> x=fzero(y,8) x = 12.7132 >> fplot(y,[10,14]); >> hold on >> plot(x,y(x),'r*') 1.4 2.61170 %x与y的值 %定义4种方%输出 >>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: Maximum number of function evaluations has been exceeded - increase MaxFunEvals option. Current function value: -29278786696692.000000 x = 1.0e+043 * 1.1138 1.2383 fvalue = -2.9279e+085 >> z = @(x)(x(1)-x(2)+1)^2; >> [x,fvalue]=fminsearch(z,[-1,1]) x = -1.2073 -0.2073 fvalue = 1.9045e-022 4.计算下列积分。 (1) (2) >> f = @(x)x+x.^3+x.^5; >> q = quad(f,-1,1) q = 2.2204e-016 >> f= @(x,y)sin(y).*(x+y)./(x.^2+4); >> q = dblquad(f,1,10,1,10) q = 5.5254 Matlab第五章 1.编制一个脚本,查找给定字符串中指定字符出现的次数和位置. %查找给定字符串中指定字符出现的次数和位置 letter='a'; %指定字符 string='I have a long string'; %给定字符串 places=findstr(string,letter); %位置 times=length(places); %次数 disp('places are :'); disp(places); disp('times are :'); disp(times); 2.编写一个脚本,判断输入字符串中每个单词的首字母是否为大写,若不是则将其修改为大写,其他字母为小写. %将每个单词首字母变为大写 str = 'I have a long string'; disp(str); nlength = length(str); for k=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 = 1x3 struct array with fields: 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 = 78.3333 >> [new,index]=sort([],'descend') new = 90 85 60 index = 1 3 2 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 = -3 0 0 2 5 8 >> y = [-5, -2,0, 3, 4, 10] y = -5 -2 0 3 4 10 >> z1 = y<~x z1 = 1 1 1 0 0 0 >> z2 = x&y z2 = 1 0 0 1 1 1 >> z3 = x|y z3 = 1 1 0 1 1 1 >> z4 = xor(x,y) z4 = 0 1 0 0 0 0 2. 在MATLAB中使用一个循环确定:如果用户最初在一个银行帐户中存储$10000,并且在每年的年终再存储$10000(银行每年支付6%的利息),那么账户上要积累$1000000要需要多长时间。 %银行存款计算 a=10000;%本金 b=10000;%每年新增存款 sum=0;%存款总和 i=1; sum=sum+a; while sum<1000000 i=i+1; sum=sum*(1+0.06)+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 50 2 55 3 60 4 70 5 70 6 75 7 80 8 80 9 90 10 55 假设每周的产量都基于前一周的销售额,所以有P(k) = S(k - 1)。假设第一周的产量为50辆手推车:即,P(1) = 50。编写一个MATLAB程序计算:10周之内每周库存之中的手推车数量或者计算手推车库存数量减少到0为止的时间,并同时绘制图形。针对以下两种情况运行该程序: (1)初始库存为50辆手推车,所以I(1)= 50; (2)初始库存为30辆手推车,所以I (1) = 30。 >> s=[50 55 60 70 70 75 80 80 90 55] s = 50 55 60 70 70 75 80 80 90 55 >> for i=2:1:10 p(i)=s(i-1); end >> p p = 0 50 55 60 70 70 75 80 80 90 >> l=[50 0 0 0 0 0 0 0 0 0] l = 50 0 0 0 0 0 0 0 0 0 >> for n=2:1:10 l(n)=l(n-1)+p(n)-s(n); end >> l l = 50 45 40 30 30 25 20 20 10 45 >> l=[30 0 0 0 0 0 0 0 0 0] l = 30 0 0 0 0 0 0 0 0 0 >> for n=2:1:10 l(n)=l(n-1)+p(n)-s(n); end >> l l = 30 25 20 10 10 5 0 0 -10 25 周 库存量(1) 库存量(2) 周 库存量(1) 库存量(2) 1 50 30 6 30 10 2 50 25 7 30 5 3 45 20 8 25 0 4 40 20 9 20 0 30 10 10 10 (<0) 5 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 = 1.0 >> digits(3) >> vpa(subs(f,pi/6)) ans = 1.02 >> digits(6) >> vpa(subs(f,pi/6)) ans = 1.0236 >> digits(11) >> vpa(subs(f,pi/6)) ans = 1. >> digits(21) >> vpa(subs(f,pi/6)) ans = 1.29870464 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: Functional inverse is not unique. > In D:Program FilesMATLABR2011atoolboxsymbolicsymbolicsymengine.p>symengine at 52 In se at 41 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 >> syms x >> 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 >> sym 779866 ans = 779866 >> factor(779866) ans = 2 149 2617 >> 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.对符号表达式z=xe-x2-y2,进行如下变换 (1)关于的傅立叶变换 (2)关于的拉普拉斯变换 的 Z 变换 (3)分别关于和>> syms x y >> z=x*exp(-(x^2)+y^2) z = x*exp(y^2 - x^2) >> syms u v >> fourier(z,x,u) ans = -(pi^(1/2)*u*exp(y^2 - u^2/4)*i)/2 >> laplace(z,y,v) ans = x*laplace(exp(y^2 - x^2), y, v) >> ztrans(z,y,v) ans = x*ztrans(exp(y^2 - x^2), y, v) 11.绘制函数在,上的表面图 >> syms x y >> z = 1/(2*pi)*exp(-(x^2+y^2)) z = 57349/(36968*exp(x^2 + y^2)) >> ezsurf(x,y,z,[-3,3,-3,3]) Matlab 第八章 1.编写程序,该程序在同一窗口中绘制函数在 之间的正弦曲线和余弦曲线,步长为 ,线宽为 4 个象素,正弦曲线设置为蓝色实线,余弦曲线颜色设置为红色虚线,两条曲线交点处,用红色星号标记。 >>x=[0:pi/100:2*pi]; >>sinx=round(1000*sin(x))/1000; >>cosx=round(1000*cos(x))/1000; >>plot(x,sinx) >>hold on >>plot(x,cosx,'r--') >>hold on >>plot(x(find(sinx==cosx)),sinx(find(sinx==cosx)),'r*') 注:步长为pi/10时无法找到对应点。。。 2.绘制下列图像 (1), ,, (2)三维曲线:(3)双曲抛物面:,, >>x = 0:pi/10:10*pi; >>y=x.*sin(x); >>plot(x,y) >> [X,Y] = meshgrid(-10:0.5:10); >> Z=X.^2+6*X*Y+Y.^2+6*X+2*Y-1; >> plot3(X,Y,Z) >> [X,Y] = meshgrid(-16:0.4:16,-4:0.1:4); >> Z=X.^2/16-Y.^2/4; >> plot3(X,Y,Z) 3.绘制下列图像 (1)绘制电脑磁盘使用情况的饼状图 (2)生成 100 个从 0 到 10 之间的随机整数,绘制其直方图 (3)生成 10个从 0 到 10 之间的随机整数,绘制其阶跃图 >> x=[7.84 24.4]; >> pie(x,{'可用空间','已用空间'}) >>hist(round(rand(100,1)*10)) >> X = round(rand(10,1)*10); >> stairs(X) 4.分别通过界面交互方式和函数方式在第 1 题生成的图形中添加 注释,至少应包括:标题,文本注释,图例。 函数方式: >> title('正弦曲线和余弦曲线'); >> gtext('sin(x)') >> gtext('cos(x)') >> legend('sin(x)','cos(x)') 5.对第 2 题中绘制的双曲抛物面尝试进行视点控制和颜色控制。 >>title('azimuth=0,elevation=180'); >>view(0,180) >>title('azimuth=50,elevation=150'); >>colormap(gray); >> view(50,150)
版权声明:本文标题:matlab1-8章课后作业 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1708855350h532789.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论