MATLAB实验题答案.docx
- 文档编号:9905523
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:19
- 大小:76.97KB
MATLAB实验题答案.docx
《MATLAB实验题答案.docx》由会员分享,可在线阅读,更多相关《MATLAB实验题答案.docx(19页珍藏版)》请在冰豆网上搜索。
MATLAB实验题答案
1、求以下变量的值,并在MATLAB中验证。
(1)a=1:
2:
5
a=
135
(2)b=[a',a',a';a]
b=
111
333
555
135
(3)c=a+b(2,:
)
c=
468
2、下列运算是否合法,为什么?
如合法,结果是多少?
>>result2=a*b
Errorusing*
Innermatrixdimensionsmustagree.
>>result3=a+b
result3=
362
5811
>>result4=b*d
result4=
312222
404913
>>result5=[b;c']*d
result5=
312222
404913
-5-87
>>result6=a.*b
result6=
28-3
41530
>>result7=a./b
result7=
0.50000.5000-3.0000
4.00001.66671.2000
>>result8=a.c
Attempttoreferencefieldofnon-structurearray.
>>result9=a.\b
result9=
2.00002.0000-0.3333
0.25000.60000.8333
>>result10=a.^2
result10=
149
162536
>>result11=2.^a
result11=
248
163264
3、用MATLAB求解下面的的方程组。
(1)
>>A=[721-2;9153-2;-2-2115;13213]
>>B=[47-10]
>>B=B'
>>x=inv(A)*B
(2)
>>A1=[1110;121-1;2-10-3;335-6]
>>B2=[1;8;3;5]
>>x2=inv(A1)*B2
4、已知
(1)求矩阵A的秩(rank)
(2)求矩阵A的行列式(determinant)
(3)求矩阵A的逆(inverse)
(4)求矩阵A的特征值及特征向量(eigenvalueandeigenvector)
>>A3=[721-2;9153-2;-2-2115;13213]
>>r=rank(A3)
>>b=inv(A3)
>>a=det(A3)
>>[V,D]=eig(A3)
5、
求y=?
(运行formatlongg命令后,查看y的值)
m1=0;
form=-10:
10
m1=m1+2^m;
end
m1
m1=
2047.9990234375
6、求分段函数的值。
用if语句实现,算出下列表中x对应的y值。
x=input('enterx=');
ifx<0
y=x^2+x-6;
elseifx>=0&&x<5
y=x^2-5*x+6;
else
y=x^2-x-1;
end
y
7、分别用if和switch语句实现,将百分制成绩转换为成绩等级A、B、C、D、E。
其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
对超出百分制范围的成绩,给出错误提示信息。
if结构程序:
x=input('pleaseenterscore=');
ifx>=90&&x<=100
disp('A')
elseifx<90&&x>=80
disp('B')
elseifx<80&&x>=70
disp('C')
elseifx<70&&x>=60
disp('D')
elseifx<60&&x>=0
disp('E')
else
disp('error')
end
switch结构程序:
x=input('pleaseenterscore=');
switchfix(x/10)
case{10,9}
ifx>100
disp('error')
else
disp('A')
end
case{8}
disp('B')
case{7}
disp('C')
case{6}
disp('D')
case{0,1,2,3,4,5}
disp('E')
otherwise
disp('error')
end
8、思考题
设计程序,完成成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。
x=input('请输入运算符')
a=num2str(floor(rand
(1)*90+10));
a
b=num2str(floor(rand
(1)*90+10));
b
ifx=='+'
y=a+b;
elseifx=='-'
y=a-b;
elseifx=='*'
y=a*b;
elseifx=='/'
y=a/b;
else
disp('error')
end
y
9、启动MATLAB后,点击File|New|M-File,启动MATLAB的程序编辑及调试器(Editor/Debugger),编辑以下程序,点击File|Save保存程序,注意文件名最好用英文字符。
点击Debug|Run运行程序,在命令窗口查看运行结果,程序如有错误则改正。
注:
数论中一个有趣的题目:
任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
n=input('请输入n值:
');
a=n;
whilen>1
ifrem(n,2)==0
n=n/2;
else
n=3*n+1;
end
a=[a,n];
end
a
10、根据
,当n分别取100、1000、10000时,求x的值分别是多少?
a=input('请输入数值')
n=0;
form=1:
100
n=n+1/(m*m);
end
n=6*n;
x=sqrt(n);
x
11、编程求满足
的最小m值。
sum=0;
m=2;
a=1;
whilea
fori=1:
m
sum=sum+2^i;
ifsum>10000
a=0;
end
end
m=m+1;
end
m
12、思考题
已知y和t的函数关系:
求下面表格中与t对应的y值
t
0.2
0.4
0.6
0.8
1.0
y
t=input('请输入t值:
')
sum=0;
fori=1:
20
b=factorial(i);
sum=sum+t^i/b;
end
sum=sum+1;
sum
13、编写一个函数,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。
function[y]=myfun1(x)
选择一些数据测试你编写的函数。
function[y]=myfun1(x)
ifx<=0
y=sin(x);
elseifx>0&x<=3
y=x;
elseifx>3
y=-x+6;
end
14、编写一个函数求向量x中元素的平均值、最大值、最小值、均方根值。
function[m_x,max_x,min_x,rms_x]=myfun2(x)
方均根值(RootMeanSquare)的计算公式为:
用下面数据测试你写的函数:
(1)x=sin(0:
0.01:
6*pi)
(2)x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。
function[m_x,max_x,min_x,rms_x]=myfun2(x)%求平均值
sum_x=sum(x);%向量元素求和
[m,n]=size(x);%最好用n=length(x);
m_x=sum_x/n;
%求最大值采用逐个比较方式
ifx
(1)>x
(2)
max_x=x
(1);
else
max_x=x
(2);
end
fork=3:
n
ifmax_x max_x=x(k); else max_x=max_x;%可省略 end end %求最小值 ifx (1) (2) min_x=x (1); else min_x=x (2); end fork=3: n ifmin_x>x(k) min_x=x(k); else min_x=min_x;%可省略 end end %求均方根值 sum_x2=0; fork=1: n sum_x2=sum_x2+x(k).^2; rms_x=sqrt(sum_x2/n); end m_x; max_x; min_x; rms_x;%按照函数值行参顺序输出结果 15、编写一个函数,给出一个向量 ,生成如下范德蒙矩阵。 function[v]=myvander(x) 例如: >>v=myvander([2345]) 得v= function[v]=myvander(x) v1=vander(x);%生成范德蒙矩阵 v2=v1'; v=flipud(v2);%实现矩阵上下翻转 16、思考题 编写程序,用如下迭代公式求 ,a的值分别为: 3,17,113。 迭代的终止条件为 ,迭代初值 迭代次数不超过100次。 分别对迭代结果和准确值进行比较,并统计迭代次数。 function[x,n]=sqrt_a(a) x=1.0; fork=1: 100 m=x; x=x/2+a/(2*x); ifabs(x-m)<=10^(-5) break end end x; n=k; s=(x-sqrt(a)); ifs<=10^(-5) disp('正确'); else disp('错误'); end 17、在同一坐标系下绘制下面三个函数在t[0,4]的图象。 >>t=0: 0.1: 4*pi; >>y1=t; >>y2=t^(0.5); >>y2=sqrt(t); >>y3=4*pi*eps(-0.1*t).*sin(t); >>plot(t,y1,t,y2,t,y3) 18、编写程序,选择合适的步距,绘制下面函数在区间[-6,6]中的图象。 functiony=fun1(x) y=[]; forx0=x ifx0<=0 y=[y,sin(x0)]; elseifx0>0&&x0<=3 y=[y,x0]; elseifx0>3 y=[y,6-x0]; end end >>x=-6: 0.1: 6; >>y=fun1(x); >>plot(x,y) 19、用compass函数画下面相量图 ua=1;ub=cos(-2*pi/3)+sin(-2*pi/3)*i;uc=cos(2*pi/3)+sin(2*pi/3)*i; compass([ua,ub,uc,ua-ub,ub-uc,uc-ua]) >>ua=1; >>ob=cos(-2*pi/3) >>ob=cos(-2*pi/3)+sin(-2*pi/3)*i; >>ub=cos(-2*pi/3)+sin(-2*pi/3)*i; >>uc=cos(2*pi/3)+sin(2*pi/3)*i; >>compass([ua,ub,uc,ua-ub,ub-uc,uc-ua]) 20、三维空间曲线绘制 z=0: 0.1: 4*pi; x=cos(z); y=sin(z); plot3(x,y,z) >>z=0: 0.1: 4*pi; >>x=cos(z); >>y=sin(z); >>plot3(x,y,z) 21、用mesh或surf函数,绘制下面方程所表示的三维空间曲面,x和y的取值范围设为[-3,3]。 >>x=-3: 0.01: 3; >>y=-3: 0.01: 3; >>[x,y]=meshgrid(x,y); >>z=-x.*x/10+y.*y/10; >>mesh(x,y,z) >>z=x.*x/10+y.*y/10; >>mesh(x,y,z) 22、思考题 用对分法求解方程 在[0,1]内的解,并验证,在程序中统计出对分次数。 提示: 先将原方程转化成 的形式。 对分法的基本思想是: 一个一元方程f(x)=0,若f(x1)*f(x2)<0,则在[x1,x2]区间内有实数解。 取该区间的中点xm=(x1+x2)/2,判定f(x1)和f(x2)二者中哪一个与f(xm)异号,若f(x1)*f(xm)<0,则解存在的区间缩小为[x1,xm],否则解存在的区间缩小为[xm,x2]。 重复这样的步骤,直到区间的长度小于一个可以接受的小数(比如1e-10),则认为中点即是原方程的解。 >>x0=0; x1=1; y=1; i=0; whiley~=0 i=i+1; x3=(x0+x1)/2; y=2*eps(-x3)-sin(x3); y0=2*eps(-x0)-sin(x0); y1=2*eps(-x1)-sin(x1); ify*y0<0 x0=x3; elseify*y1<0 x1=x3; elseify==0 x3=x3; end ifi==1000000 y=0; end End 23、求代数方程 的5个根,并将其用星号(*)标记在复平面图上。 (用roots和plot函数) >>a=[3,4,7,2,9,12]; >>y=roots(a) >>plot(y,'*') 求代数方程 的5个根,并将其用星号(*)标记在复平面图上。 (用roots和plot函数) 程序: >>a1=[1,0,0,0,0,-1]; >>y1=roots(a1) >>plot(y1,'*') 24、求下面函数在[0.5,4]区间内的过零点。 (用fzero函) >>x=0.5: 0.01: 4; >>y2=x.^3-2*x.^2.*sin(x)+5*x.*cos(x)+1./x; >>plot(x,y2) 函数: functiony2=fz(x) y2=x.^3-2*x.^2.*sin(x)+5*x.*cos(x)+1./x; 分析: 根据图像可知零点在x=1和x=3附近 所以 >>fzero('fz',1) ans= 1.5117 >>fzero('fz',3) ans= 2.6095 25、 已知R=50欧姆,U=4V,二极管D正向电流与电压的关系为: 求此电路中的电流Id和二极管正向电压Ud(要求用fsolve函数求解) 程序: >>x=fsolve('fun',0,optimset('Display','off')) >>y3=5*10^(-11)*exp(1.6*x/(1.38*10^(-4)*27)-1) 函数: functiony=fun(x) y=5*10^(-11)*exp(1.6*x/(1.38*10^(-4)*27)-1)+x-4; 26、实验数据处理: 已知某压力传感器的测试数据如下表 p 0.0 1.1 2.1 2.8 4.2 5.0 6.1 6.9 8.1 9.0 9.9 u 10 11 13 14 17 18 22 24 29 34 39 p为压力值,u为电压值,试用多项式 来拟合其特性函数,求出a,b,c,d,并把拟合曲线和各个测试数据点画在同一幅图上。 程序: >>n=3; >>p=[0.01.12.12.84.25.06.16.98.19.09.9]; >>u=[1011131417182224293439]; >>f=polyfit(p,u,n) >>p1=0: 10; >>u1=polyval(f,p1); >>plot(p,u,'*',p1,u1,'-')
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 实验 答案