《Matlab编程与应用习题和一些参考答案版.doc》由会员分享,可在线阅读,更多相关《Matlab编程与应用习题和一些参考答案版.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 Matlab上机实验一、二1 安装Matlab软件。2 验证所学内容和教材上的例子。3.求下列联立方程的解 a=3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10; b=4;4;9;4; c=abc = 5.2226 4.4570 1.4718 1.59944设,求C1=A*B;C2=A*B;C3=A.*B,并求上述所有方阵的逆阵。 A=1 4 8 13;-3 6 -5 -9;2 -7 -12 -8; B=5 4 3 -2;6 -2 3 -8;-1 3 -9 7; C1=A*BC1 = 19 -82 30 12 27 3 -38 54 29 C2=A*BC2 =
2、-15 16 -24 36 63 -17 93 -105 22 6 117 -60 19 46 84 -10 C3=A.*BC3 = 5 16 24 -26 -18 -12 -15 72 -2 -21 108 -56 inv(C1)ans = 0.0062 0.0400 -0.0106 -0.0046 0.0169 0.0030 0.0168 0.0209 0.0150 inv(C2)Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 8.997019e-019.ans
3、 = 1.0e+015 * -0.9553 -0.2391 -0.1997 0.2700 0.9667 0.2420 0.2021 -0.2732 -0.4473 -0.1120 -0.0935 0.1264 -1.1259 -0.2818 -0.2353 0.3182 inv(C3)? Error using = invMatrix must be square.5设 ,把x=02间分为101点,画出以x为横坐标,y为纵坐标的曲线。 x=linspace(0,2*pi,101); y=cos(x)*(0.5+(1+x.2)3*sin(x); plot(x,y,r)6产生86阶的正态分布随机数
4、矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var)a=randn(8,6)mean(a)var(a)k=mean(a)k1=mean(k)i=ones(8,6)i1=i*k1i2=a-i1i3=i2.*i2g=mean(i3)g2=mean(g)或者u=reshape(a,1,48);p1=mean(u)p2=var(u)7.设x=rcost+3t,y=rsint+3,分别令r=2,3,4,画出参数t=010区间生成的xy曲线。 t=linspace(0,10); r1=2; x1=(r1*cos(t)+3*t); y1=r1*sin(t)+3; r
5、2=3; x2=(r2*cos(t)+3*t); y2=r2*sin(t)+3; r3=4; x3=(r3*cos(t)+3*t); y3=r3*sin(t)+3; plot(x1,y1,r,x2,y2,b,x3,y3,m)8.设f(x)=x5- 4x4 +3x2- 2x+ 6(1) 在x=-2,8之间取100个点,画出曲线,看它有几个过零点。(提示:用polyval 函数) x=linspace(2,8,100); y=polyval(1 0 -4 3 -2 6,x); plot(x,y,b,x,0,y)(2) 用roots函数求此多项式的根。t=1 0 -4 3 -2 6p=roots(t
6、)9.建立一个字符串向量,然后对该向量做如下处理:(1) 取第15个字符组成的子字符串。(2) 将字符串倒过来重新排列。(3) 统计字符串中小写字母的个数。10.利用帮助查找limit函数的用法,并自己编写,验证几个函数极限的例子。Matlab上机实验二1.验证所授课程的课件。2.设x=sint, y=sin(nt+a),(1) 若a=1,令n =1,2,3,4,在四个子图中分别画出其曲线。(2) 若n=2,取a=0,/3,/2,及,在四个子图中分别画出其曲线。(1)a=1; x=sin(t);y1=sin(1*t+a);y2=sin(2*t+a);y3=sin(3*t+a);y4=sin(4
7、*t+a); subplot(2,2,1);plot(x,y1);subplot(2,2,2);plot(x,y2);subplot(2,2,3);plot(x,y3);subplot(2,2,4);plot(x,y4)(2)n=2;x=sin(t);y1=sin(2*t+0);y2=sin(2*t+pi/3);y3=sin(2*t+pi/2);y4=sin(2*t+pi);subplot(2,2,1);plot(x,y1);subplot(2,2,2);plot(x,y2);subplot(2,2,3);plot(x,y3);subplot(2,2,4);plot(x,y4)注:本题好像题目
8、本身就有问题,因为“t” 取值不明,所以运行不了,画不出图来。转化为符号式来画图也是不可行的。(纯粹个人意见,可能我想错了方向,会做的同学请上传一下正确的做法)3绘制在定义域x=-2,2,y=-2,2内的曲面。(利用meshgrid)x=-2:2;y=x;X,Y= meshgrid(x,y);Z=X2*exp(-(X2+Y2);mesh(X,Y,Z) 4求代数方程3x5+4x4+7x3+2x2+9x+12=0的所有根。(利用roots函数)p=3 4 7 2 9 12;roots(p)5把1开五次方,并求其全部五个根。(提示:解x5-1=0)p=1 0 0 0 0 -1;roots(p)6,画
9、出在上的曲线。x1=-3:0.01:-1;y1=(-x1.2-4.*x1-3)/2; x2=-1:0.01:1;y2=-x2.2+1; x3=1:0.01:3;y3=(-x3.2+4.*x3-3)/2;plot(x1,y1);hold on; plot(x2,y2);hold on; plot(x3,y3) Matlab上机实验三1.设,求x=sym(x); y=x*exp(2*x);diff(y,20)2.设,求x=sym(x); y=(sin(x)4+(cos(x)4;diff(y,10)3.设,求x=sym(x); y=sym(y);z=y4*(sin(x)4)+x4*(cos(y)4)
10、;int(z,x)4x=sym(x);int(1/(x2+1)*(x2+x),x)5x=sym(x);int(sqrt(9-x2)3)/x6),x)6x=sym(x);int(x+x3,x,1,2)7.求级数的和: sym(n);symsum(n+2/2n,n,1,inf)8.利用函数int计算二重不定积分x=sym(x); y=sym(y);z=(x+y)*exp(-x*y);a=int(z,x);int(a,y)Matlab上机实验四1. 编写一个M函数文件计算下列级数的和:x和n的值由input指令给出。%test.mfunction f=test x=input(Input the x
11、:n); n=input(Input the n:n); j=1; f2=0;for i=1:n; j=1;for k=1:i; j=j*k; f1=xi/j;endf2=f2+f1;endf=f2+1;2编制m文件,等待键盘输入,输入密码123,密码正确,显示输入密码正确,程序结束;否则提示,重新输入。方法一:function f=checkpassword=input(Please input the password:n);if (password=123) disp(输入密码正确)else check;end方法二:function pwn=0;k=0;n=input(请输入密码(整数
12、)n);while(k=0)if n=123 disp(输入正确) k=1;else k=0; n=input(密码错误,请重新输入密码(整数)n);endend3编制m文件,输入n(正整数),显示所有小于n的质数。%第一m文件(用于判断某数是否为素数):function leap=panduan(n)leap=1;for i=2:sqrt(n+1) if mod(n,i)=0 leap=0; break; endend%第二个m文件(用于读进n个数并调用panduan.m判断读数是否为素数,并把是素数的显示出来):function zhishu(n)for m=2:n if panduan(
13、m)=1 disp(m); endend4编写一个M函数文件fun_es(x),计算如下函数:,其中参数可以为标量,也可以为向量。在Matlab指令窗口键入如下命令检验该函数: fun_es(3)function fun_es(x)y=0.5.*exp(x./3)-x.2.*sin(x)5下面程序实现什么功能?for n=100:200if rem(n,77)=0 continueendbreakendn 求100到200之间,第一个77的整倍数6编写m函数文件求半径为r的圆的面积和周长。function f=circle(r)S=pi*r2L=2*pi*r7数组1:99中素数(即质数)元素的
14、和%第一m文件(用于判断某数是否为素数):function leap=panduan(n)leap=1;for i=2:sqrt(n+1) if mod(n,i)=0 leap=0; break; endend%第二个m文件(用于读进199并调用panduan.m判断读数是否为素数,并把是素数的加起来,最后输出):function total(n)k=0;for m=1:n if panduan(m)=1 k=k+m; endendk8从键盘输入若干个数,当输入0时结束输入,求这些数的平均值以及平方和。% 求n个数的平均值及平方和function pingfang1 l=0; total1=0
15、; total2=0; a=input(input a:n); while(a=0) l=l+1; total1=total1+a; total2=total2+a2; a=input(); end avg=total1/l total2 9输入x,y的值,并将它们的值互换后输出。function f=change(x,y)x=input(Input x:n);y=input(Input y:n);a=x;x=y;y=a;x,y10利用rand产生10个随机数,利用for循环对其进行排序(从大到小)。disp(排列前:)a=rand(10,1)for i=1:10for j=1:10-iif
16、a(j+1,1)a(j,1)b=a(j,1);a(j,1)=a(j+1,1);a(j+1,1)=b;endendenddisp(排列后:)aMatlab上机实验四1. 编写一个M函数文件计算下列级数的和:x和n的值由input指令给出。function y=jiecheng(n) %定义 jiecheng函数s=1;for i=1:n s=s*i;end y=s;function zy1x=input(请输入x值:);n=input(请输入n值:);m=1;i=0:n;for m=m+x.i/jiecheng(i); %调用上面的公式end m2编制m文件,等待键盘输入,输入密码123,密码正
17、确,显示输入密码正确,程序结束;否则提示,重新输入。function f=zy2()t=input(Input key(key is 123) )if t=123 goodelse Your are fool,input again zy2; /从新输入;end3编制m文件,输入n(正整数),显示所有小于n的质数。function f=myzy31(n)k=sqrt(n);flag=1;for i=2:k; if mod(n,i)=0 flag=0; break; endendf=flag;/判断一个数字是否是素数;function myzy32(n)for i=2:nif myzy31(i)
18、=1/调用myzy31,判断是否是素数,如果是就输出; i else i; /i后面有“;”就是不输出了; endend4编写一个M函数文件fun_es(x),计算如下函数:,其中参数可以为标量,也可以为向量。在Matlab指令窗口键入如下命令检验该函数: fun_es(3)function f=fun_es(n)f=0.5.*exp(n./3)-n.*n.*sin(n);/use the dot not only adapt to numbers but also matrix 5下面程序实现什么功能?for n=100:200if rem(n,77)=0 continueendbreake
19、ndn/实现输出在100到200之间第一个被77整除的数字,就是154;6编写m函数文件求半径为r的圆的面积和周长。function f=myzy6r=input(Input r: )disp(The aear is :)disp(r*r*pi)disp(The perimeter is)disp(2*pi*r)7数组1:99中非素数(即质数)元素的和/在这个函数中令n=99即可;function myzy32(n)sum=0;function myzy32(n)for i=2:nif myzy31(i)=1/调用myzy31,判断是否是素数,如果是就输出; i sum=sum+i;/求和 e
20、lse i; /i后面有“;”就是不输出了; endendsum/求和输出;for i=2:nif myzy31(i)=1/调用myzy31,判断是否是素数,如果是就输出; i y=y+1; else i; /i后面有“;”就是不输出了; endend8从键盘输入若干个数,当输入0时结束输入,求这些数的平均值以及平方和。function myzy8sum=0;sum2=0;n=2;while (n=0) k=input(input the number(end with 0) : ) sum=k+sum; sum2=k.2+sum2; n=k;/标志位传递;endsumsum2 /输出;9输入
21、x,y的值,并将它们的值互换后输出。function myzy8x=input(Please input the x: )y=input(Please input the y: )t=x; /保护数据;x=y;y=t;disp(“after change :”)xy /输出;10利用rand产生10个随机数,利用for循环对其进行排序(从大到小)。function myzy10 /输入10即可;k=input(Input the number of randn numbers: )x=randn(1,k)temp=0;for j=1:k-1; for i=k-j:k-1; if x(i) a=
22、3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10; b=4;4;9;4; c=abc = 5.2226 4.4570 1.4718 1.59944设,求C1=A*B;C2=A*B;C3=A.*B,并求上述所有方阵的逆阵。 A=1 4 8 13;-3 6 -5 -9;2 -7 -12 -8; B=5 4 3 -2;6 -2 3 -8;-1 3 -9 7; C1=A*BC1 = 19 -82 30 12 27 3 -38 54 29 C2=A*BC2 = -15 16 -24 36 63 -17 93 -105 22 6 117 -60 19 46 84 -10 C3
23、=A.*BC3 = 5 16 24 -26 -18 -12 -15 72 -2 -21 108 -56 inv(C1)ans = 0.0062 0.0400 -0.0106 -0.0046 0.0169 0.0030 0.0168 0.0209 0.0150 inv(C2)Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 8.997019e-019.ans = 1.0e+015 * -0.9553 -0.2391 -0.1997 0.2700 0.9667 0.242
24、0 0.2021 -0.2732 -0.4473 -0.1120 -0.0935 0.1264 -1.1259 -0.2818 -0.2353 0.3182 inv(C3)? Error using = invMatrix must be square.5设 ,把x=02间分为101点,画出以x为横坐标,y为纵坐标的曲线。 x=linspace(0,2*pi,101); y=cos(x)*(0.5+(1+x.2)3*sin(x); plot(x,y,r)6产生86阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var)a=randn(8,
25、6)mean(a)var(a)k=mean(a)k1=mean(k)i=ones(8,6)i1=i*k1i2=a-i1i3=i2.*i2g=mean(i3)g2=mean(g)或者u=reshape(a,1,48);p1=mean(u)p2=var(u)7.设x=rcost+3t,y=rsint+3,分别令r=2,3,4,画出参数t=010区间生成的xy曲线。 t=linspace(0,10); r1=2; x1=(r1*cos(t)+3*t); y1=r1*sin(t)+3; r2=3; x2=(r2*cos(t)+3*t); y2=r2*sin(t)+3; r3=4; x3=(r3*cos
26、(t)+3*t); y3=r3*sin(t)+3; plot(x1,y1,r,x2,y2,b,x3,y3,m)8.设f(x)=x5- 4x4 +3x2- 2x+ 6(1) 在x=-2,8之间取100个点,画出曲线,看它有几个过零点。(提示:用polyval 函数) x=linspace(2,8,100); y=polyval(1 0 -4 3 -2 6,x); plot(x,y,b,x,0,y)(2) 用roots函数求此多项式的根。t=1 0 -4 3 -2 6p=roots(t)9.建立一个字符串向量,然后对该向量做如下处理:(1) 取第15个字符组成的子字符串。(2) 将字符串倒过来重新
27、排列。(3) 统计字符串中小写字母的个数。10.利用帮助查找limit函数的用法,并自己编写,验证几个函数极限的例子。Matlab上机实验二1.验证所授课程的课件。2.设x=sint, y=sin(nt+a),(3) 若a=1,令n =1,2,3,4,在四个子图中分别画出其曲线。(4) 若n=2,取a=0,/3,/2,及,在四个子图中分别画出其曲线。(1)a=1; x=sin(t);y1=sin(1*t+a);y2=sin(2*t+a);y3=sin(3*t+a);y4=sin(4*t+a); subplot(2,2,1);plot(x,y1);subplot(2,2,2);plot(x,y2
28、);subplot(2,2,3);plot(x,y3);subplot(2,2,4);plot(x,y4)(2)n=2;x=sin(t);y1=sin(2*t+0);y2=sin(2*t+pi/3);y3=sin(2*t+pi/2);y4=sin(2*t+pi);subplot(2,2,1);plot(x,y1);subplot(2,2,2);plot(x,y2);subplot(2,2,3);plot(x,y3);subplot(2,2,4);plot(x,y4)注:本题好像题目本身就有问题,因为“t” 取值不明,所以运行不了,画不出图来。转化为符号式来画图也是不可行的。(纯粹个人意见,可能
29、我想错了方向,会做的同学请上传一下正确的做法)3绘制在定义域x=-2,2,y=-2,2内的曲面。(利用meshgrid)x=-2:2;y=x;X,Y= meshgrid(x,y);Z=X2*exp(-(X2+Y2);mesh(X,Y,Z) 4求代数方程3x5+4x4+7x3+2x2+9x+12=0的所有根。(利用roots函数)p=3 4 7 2 9 12;roots(p)5把1开五次方,并求其全部五个根。(提示:解x5-1=0)p=1 0 0 0 0 -1;roots(p)6,画出在上的曲线。x1=-3:0.01:-1;y1=(-x1.2-4.*x1-3)/2; x2=-1:0.01:1;y
30、2=-x2.2+1; x3=1:0.01:3;y3=(-x3.2+4.*x3-3)/2;plot(x1,y1);hold on; plot(x2,y2);hold on; plot(x3,y3) Matlab上机实验三1.设,求x=sym(x); y=x*exp(2*x);diff(y,20)2.设,求x=sym(x); y=(sin(x)4+(cos(x)4;diff(y,10)3.设,求x=sym(x); y=sym(y);z=y4*(sin(x)4)+x4*(cos(y)4);int(z,x)4x=sym(x);int(1/(x2+1)*(x2+x),x)5x=sym(x);int(sq
31、rt(9-x2)3)/x6),x)6x=sym(x);int(x+x3,x,1,2)7.求级数的和: sym(n);symsum(n+2/2n,n,1,inf)8.利用函数int计算二重不定积分x=sym(x); y=sym(y);z=(x+y)*exp(-x*y);a=int(z,x);int(a,y)Matlab上机实验四1. 编写一个M函数文件计算下列级数的和:x和n的值由input指令给出。%test.mfunction f=test x=input(Input the x:n); n=input(Input the n:n); j=1; f2=0;for i=1:n; j=1;for
32、 k=1:i; j=j*k; f1=xi/j;endf2=f2+f1;endf=f2+1;2编制m文件,等待键盘输入,输入密码123,密码正确,显示输入密码正确,程序结束;否则提示,重新输入。方法一:function f=checkpassword=input(Please input the password:n);if (password=123) disp(输入密码正确)else check;end方法二:function pwn=0;k=0;n=input(请输入密码(整数)n);while(k=0)if n=123 disp(输入正确) k=1;else k=0; n=input(密
33、码错误,请重新输入密码(整数)n);endend3编制m文件,输入n(正整数),显示所有小于n的质数。%第一m文件(用于判断某数是否为素数):function leap=panduan(n)leap=1;for i=2:sqrt(n+1) if mod(n,i)=0 leap=0; break; endend%第二个m文件(用于读进n个数并调用panduan.m判断读数是否为素数,并把是素数的显示出来):function zhishu(n)for m=2:n if panduan(m)=1 disp(m); endend4编写一个M函数文件fun_es(x),计算如下函数:,其中参数可以为标量
34、,也可以为向量。在Matlab指令窗口键入如下命令检验该函数: fun_es(3)function fun_es(x)y=0.5.*exp(x./3)-x.2.*sin(x)5下面程序实现什么功能?for n=100:200if rem(n,77)=0 continueendbreakendn 求100到200之间,第一个77的整倍数6编写m函数文件求半径为r的圆的面积和周长。function f=circle(r)S=pi*r2L=2*pi*r7数组1:99中素数(即质数)元素的和%第一m文件(用于判断某数是否为素数):function leap=panduan(n)leap=1;for i
35、=2:sqrt(n+1) if mod(n,i)=0 leap=0; break; endend%第二个m文件(用于读进199并调用panduan.m判断读数是否为素数,并把是素数的加起来,最后输出):function total(n)k=0;for m=1:n if panduan(m)=1 k=k+m; endendk8从键盘输入若干个数,当输入0时结束输入,求这些数的平均值以及平方和。% 求n个数的平均值及平方和function pingfang1 l=0; total1=0; total2=0; a=input(input a:n); while(a=0) l=l+1; total1=
36、total1+a; total2=total2+a2; a=input(); end avg=total1/l total2 9输入x,y的值,并将它们的值互换后输出。function f=change(x,y)x=input(Input x:n);y=input(Input y:n);a=x;x=y;y=a;x,y10利用rand产生10个随机数,利用for循环对其进行排序(从大到小)。disp(排列前:)a=rand(10,1)for i=1:10for j=1:10-iif a(j+1,1)a(j,1)b=a(j,1);a(j,1)=a(j+1,1);a(j+1,1)=b;endende
37、nddisp(排列后:)aMatlab上机实验四1. 编写一个M函数文件计算下列级数的和:x和n的值由input指令给出。function y=jiecheng(n) %定义 jiecheng函数s=1;for i=1:n s=s*i;end y=s;function zy1x=input(请输入x值:);n=input(请输入n值:);m=1;i=0:n;for m=m+x.i/jiecheng(i); %调用上面的公式end m2编制m文件,等待键盘输入,输入密码123,密码正确,显示输入密码正确,程序结束;否则提示,重新输入。function f=zy2()t=input(Input k
38、ey(key is 123) )if t=123 goodelse Your are fool,input again zy2; /从新输入;end3编制m文件,输入n(正整数),显示所有小于n的质数。function f=myzy31(n)k=sqrt(n);flag=1;for i=2:k; if mod(n,i)=0 flag=0; break; endendf=flag;/判断一个数字是否是素数;function myzy32(n)for i=2:nif myzy31(i)=1/调用myzy31,判断是否是素数,如果是就输出; i else i; /i后面有“;”就是不输出了; end
39、end4编写一个M函数文件fun_es(x),计算如下函数:,其中参数可以为标量,也可以为向量。在Matlab指令窗口键入如下命令检验该函数: fun_es(3)function f=fun_es(n)f=0.5.*exp(n./3)-n.*n.*sin(n);/use the dot not only adapt to numbers but also matrix 5下面程序实现什么功能?for n=100:200if rem(n,77)=0 continueendbreakendn/实现输出在100到200之间第一个被77整除的数字,就是154;6编写m函数文件求半径为r的圆的面积和周长。function f=myzy6r=input(Input r: )disp(The aear is :)disp(r*r*pi)disp(The perimeter is)disp(2*pi*r)7数组1:99中非素数(即质数)元素的和/在这个函数中令n=99即可;function myzy32(n)