matlab实验指导答案详解非常详细正确.docx
- 文档编号:29868445
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:35
- 大小:208.09KB
matlab实验指导答案详解非常详细正确.docx
《matlab实验指导答案详解非常详细正确.docx》由会员分享,可在线阅读,更多相关《matlab实验指导答案详解非常详细正确.docx(35页珍藏版)》请在冰豆网上搜索。
matlab实验指导答案详解非常详细正确
实验一MATLAB工作环境熟悉及简单命令的执行
一、实验目的:
熟悉MATLAB的工作环境,学会使用MATLAB进行一些简单的运算。
二、实验内容:
MATLAB的启动和退出,熟悉MATLAB的桌面(Desktop),包括菜单(Menu)、工具条(Toolbar)、命令窗口(CommandWindow)、历史命令窗口、工作空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。
三、实验步骤:
1、启动MATLAB,熟悉MATLAB的桌面。
2、在命令窗口执行命令完成以下运算,观察workspace的变化,记录运算结果。
(1)(365-522-70)3
>>(365-52*2-70)/3
ans=63.6667
(2)>>area=pi*2.5^2
area=19.6350
(3)已知x=3,y=4,在MATLAB中求z:
>>x=3
>>y=4
>>z=x^2*y^3/(x-y)^2
z=576
(4)将下面的矩阵赋值给变量m1,在workspace中察看m1在内存中占用的字节数。
m1=
执行以下命令
>>m1=[162313;511108;97612;414151]
>>m1(2,3)
ans=10
>>m1(11)
ans=6
>>m1(:
3)
ans=3
10
6
15
>>m1(2:
3,1:
3)
ans=51110
976
>>m1(1,4)+m1(2,3)+m1(3,2)+m1(4,1)
ans=34
(5)执行命令>>helpabs
查看函数abs的用法及用途,计算abs(3+4i)
(6)执行命令
>>x=0:
0.1:
6*pi;
>>y=5*sin(x);
>>plot(x,y)
(6)运行MATLAB的演示程序,>>demo,以便对MATLAB有一个总体了解。
四、思考题
1、以下变量名是否合法?
为什么?
(1)x2合法
(2)3col不合法,首字符是数字
(3)_row不合法,首字符必须是字母
(4)for不合法,for为MATLAB的保留关键字
2、求以下变量的值,并在MATLAB中验证。
(1)a=1:
2:
5;
a=135
(2)b=[a'a'a'];
b=111
333
555
(3)c=a+b(2,:
)
c=468
实验二MATLAB语言矩阵运算
一、实验目的:
掌握基本的矩阵运算及常用的函数。
二、实验内容:
1、下列运算是否合法,为什么?
如合法,结果是多少?
(1)result1=a'
(2)result2=a*b
不合法,两矩阵的内阶不相等。
(3)result3=a+b
(4)result4=b*d
(5)result5=[b;c']*d
(6)result6=a.*b
(7)result7=a./b
(8)result8=a.*c
不合法,两矩阵的维数不相等,点乘相求两矩阵的维数相同。
(9)result9=a.\b
(10)result10=a.^2
(11)result11=a^2
不合法,a矩阵不是方阵,方阵才能取平方。
(12)result12=2.^a
以上运算的关键不是结果是多少,而是结果怎么得来的,比如result5=[b;c']*d,要学会将其分解后去理解,可在命令窗口输入以下语句:
>>c'
>>t=[b;c']
>>r5=t*d
2、用MATLAB求下面的的方程组。
(1)
A=[7,2,1,-2;9,15,3,-2;-2,-2,11,5;1,3,2,13]
b=[4;7;-1;0]
x=A\b
x=0.4979
0.1445
0.0629
-0.0813
(2)
A=[1,1,1,0;1,2,1,-1;2,-1,0,-3;3,3,5,-6]
b=[1;8;3;5]
xyzw=inv(A)*b
xyzw=1.0000
5.0000
-5.0000
-2.0000
3、已知
A=[7,2,1,-2;9,15,3,-2;-2,-2,11,5;1,3,2,13]
(1)求矩阵A的秩(rank)
>>rank(A)
(2)求矩阵A的行列式(determinant)
>>det(A)
(3)求矩阵A的逆(inverse)
>>inv(A)
(4)求矩阵A的特征值及特征向量(eigenvalueandeigenvector)
>>[v,d]=eig(A)
该题目要求大家学会使用MATLAT的帮助系统,一是知道函数名,怎样查函数用法,二是不知道函数名,怎样查函数名及其用法。
4、关系运算与逻辑运算
已知a=20,b=-2,c=0,d=1
(1)r1=a>b
(2)r2=a>b&c>d
(3)r3=a==b*(-10)
(4)r4=~b|c
r1=1,r2=0,r3=1,r4=0
三、思考题
求y=?
(用formatlongg查看y的值)
方法一:
n=-10:
1:
10
formatlongg
x=2.^n
y=sum(x)
方法二:
y=0;
fort=-10:
10
y=y+2^t;
end
y
方法三
y=0;t=-10
whilet<=10
y=y+2^t;
t=t+1;
end
y
实验三选择结构程序设计及调试
一、实验目的:
掌握利用if、switch语句编写选择结构程序,学会MATLAB程序编辑、运行及调试方法。
二、实验内容:
1、求分段函数的值。
用if语句实现,算出下列表中x对应的y值。
X
-5
0
2
5
8
y
14
6
0
19
55
clc
clear
x=-5%x=input('请输入x的值')
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
2、分别用if和swith语句实现,将百分制成绩转换为成绩等级A、B、C、D、E。
其中[90~100]分为A,[80~90)分为B,[70~80)分为C,[60~70)分为D,60分以下为E。
对超出百分制范围的成绩,给出错误提示信息。
clc
clear
s=input('请输入百分制成绩:
');
ifs<0|s>100
g='ERROR';
elseifs>=90&s<=100
g='A';
elseifs>=80&s<90
g='B';
elseifs>=70&s<80
g='C';
elseifs>=60&s<70
g='D';
else
g='E';
end
g
clc
clear
s=input('请输入百分制成绩:
');
switchfloor(s/10)
case9
g='A';
case8
g='B';
case7
g='C';
case6
g='D';
casenum2cell(0:
5)
g='E';
otherwise
ifs==100
g='A';
else
g='ERROR';
end
end
g
3、程序的调试(参考P77):
在以上编写的程序中设置断点,控制程序单步运行,观察程序的执行及变量值的变化情况。
三、思考题
设计程序,产生两个两位随机整数,再输入一个运算符号,完成成两位数的加、减、乘、除四则运算,并显示相应的结果。
clc
clear
x1=10+floor(90*rand
(1))
x2=10+floor(90*rand
(1))
p=input('输入+-*/运算符:
','s');
switchp
case'+'
y=x1+x2;
case'-'
y=x1-x2;
case'*'
y=x1*x2;
case'/'
y=x1/x2;
otherwise
y='error';
end
y
实验四循环结构程序设计及调试
一、实验目的:
掌握MATLAB程序编辑、运行及调试方法。
二、实验内容:
1、启动MATLAB后,点击File|New|M-File,启动MATLAB的程序编辑及调试器(Editor/Debugger),编辑以下程序,点击File|Save保存程序,注意文件名最好用英文字符。
点击Debug|Run运行程序,在命令窗口查看运行结果,程序如有错误则改正。
注:
数论中一个有趣的题目:
任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:
21
3105168421
63105168421
运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。
%classic"3n+1"problemfromnumbertheory.
n=1%n等于1,2,3,5,7等数
a=n;
whilen>1
ifrem(n,2)==0
n=n/2;
else
n=3*n+1;
end
a=[a,n];
end
a
2、根据
,当n分别取100、1000、10000时,求x的值分别是多少?
clc
clear
y=0;
n=100
fork=1:
n
y=y+1/k^2;
end
x=sqrt(6*y)
3、编程求满足
的最小m值。
以下是三种方法及结果验证方法。
clc
clear
sum_x=0;
n=0;
whilesum_x<=1e4
n=n+1;
x=2^n;
sum_x=sum_x+x;
end
re1=n
sum_x=0;
n=1;
whilesum_x<=1e4
x=2^n;
sum_x=sum_x+x;
n=n+1;
end
re2=n-1
sum_x=0;
n=1;
while1
x=2^n;
sum_x=sum_x+x;
ifsum_x>1e4
break;
end
n=n+1;
end
re3=n
echoon
sum(2.^[1:
12])
sum(2.^[1:
13])
echooff
三、思考题
已知y和t的函数关系:
求下面表格中与t对应的y值
t
0.2
0.4
0.6
0.8
1.0
y
clc
clear
y=1
t=1;
f=1;
forn=1:
20
f=f*n;
y=y+t^n/f
end
y
实验五函数的编写及调试
一、实验目的:
掌握MATLAB函数的编写及调试方法。
二、实验内容:
1、编写一个函数,计算下面函数的值,给出x的值,调用该函数后,返回y的值。
function[y]=myfun1(x)
选择一些数据测试你编写的函数。
function[y]=myfun1(x)
ifx<=0
y=sin(x);
elseifx<=3
y=x;
else
y=-x+6;
end
2、编写一个函数求向量中元素的平均值、最大值、最小值、均方根值。
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)
%m_x=mean(x);
%max_x=max(x);
%min_x=min(x);
%rms_x=sqrt(sum(x.^2)/length(x));
N=length(x);
sum_x=0;
sum_x2=0;
max_x=x
(1);
min_x=x
(1);
fork=1:
N
sum_x=sum_x+x(k);
sum_x2=sum_x2+x(k)^2;
ifx(k)>max_x
max_x=x(k);
end
ifx(k) min_x=x(k); end end m_x=sum_x/N; rms_x=sqrt(sum_x2/N); 3、编写一个函数,给出一个向量 ,生成如下范德蒙矩阵。 function[v]=myvander(x) 例如: >>v=myvander([2345]) 得v= 生成一些数据测试你写的函数。 function[v]=myvander(x) N=length(x); fork=1: N v(k,: )=x.^(k-1); end 三、思考题 编写程序,用如下迭代公式求 ,a的值分别为: 3,17,113。 迭代的终止条件为 ,迭代初值 迭代次数不超过100次。 分别对迭代结果和准确值进行比较,并统计迭代次数。 clc clear a=input('请输入a='); x0=1; forn=1: 100 x1=x0/2+a/(2*x0); if(abs(x1-x0)<=1e-5) break end x0=x1; end disp('sqrt(a)数值解为: ') x1 disp('迭代次数: ') n disp('sqrt(a)的准确解为: ') sqrt(a) 请输入a=3 sqrt(a)数值解为: x1= 1.7321 迭代次数: 5 sqrt(a)的准确解为: ans= 1.7321 实验六MATLAB的绘图 1、在同一坐标系下绘制下面三个函数在t[0,4]的图象。 t=0: 1e-2: 4*pi; y1=t; y2=sqrt(t); y3=4*pi*exp(-0.1*t).*sin(t); plot(t,y1,'r',t,y2,'g',t,y3,'b'); grid xlabel('t/s') ylabel('y1y2y3') legend('t','sqrt(t)','4*pi*exp(-0.1*t).*sin(t)'); 2、编写程序,选择合适的步距,绘制下面函数在区间[-6,6]中的图象。 x=-6: 0.1: 6;%设定自变量x的取值范围 leng=length(x);%计算向量x的长度 form=1: leng%计算函数值 y(m)=myfun1(x(m)); end plot(x,y),grid%绘制函数曲线 xlabel('x'),ylabel('y') 3、用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]) 4、三维空间曲线绘制 z=0: 0.1: 4*pi; x=cos(z); y=sin(z); plot3(x,y,z) 5、用mesh或surf函数,绘制下面方程所表示的三维空间曲面,x和y的取值范围设为[-3,3]。 [x,y]=meshgrid(-3: 0.5: 3) z=-x.*x/10+y.*y/10; mesh(x,y,z); figure surfc(x,y,z); 附: 画抛物面 theta=linspace(0,2*pi,60) R=linspace(0,5,20); X1=R'*cos(theta); Y1=R'*sin(theta); Z1=X1.*X1/10+Y1.*Y1/10; mesh(X1,Y1,Z1) axissquare 三、思考题 用对分法求解方程 在[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),则认为中点即是原方程的解。 clc clear x1=0;x2=1; len=x2-x1; n=0; whilelen>1e-10 y1=2*exp(-x1)-sin(x1); y2=2*exp(-x2)-sin(x2); xm=(x1+x2)/2; ym=2*exp(-xm)-sin(xm); ify1*ym<0 x2=xm; elseify2*ym<0 x1=xm; end len=x2-x1; n=n+1; end formatlong xm,ym,n 实验七MATLAB数值运算 一、实验目的: 掌握MATLAB常用的数值运算函数。 二、实验内容: 1、求代数方程 的5个根,并将其用星号(*)标记在复平面图上。 (用roots和plot函数)。 p=[3472912]; r=roots(p) plot(r,'*'); grid xlabel('RealAxis') ylabel('ImagAxis') r= -0.8612+1.4377i -0.8612-1.4377i 0.6737+1.0159i 0.6737-1.0159i -0.9583 2、求代数方程 的5个根,并将其用星号(*)标记在复平面图上。 (用roots和plot函数)。 p=[10000-1]; r=roots(p) plot(r,'*'); axisequal grid 3、求下面函数在[0.5,4]区间内的过零点。 (用fzero函) fplot('x^3-2*x^2*sin(x)+5*x*cos(x)+1/x',[0.5,4]) x1=fzero('x^3-2*x^2*sin(x)+5*x*cos(x)+1/x',[0.5,2]) x2=fzero('x^3-2*x^2*sin(x)+5*x*cos(x)+1/x',[2,4]) x1=1.5117 x2=2.6095 4、 已知R=50欧姆,U=4V,二极管D正向电流与电压的关系为: 其中: Ud为二极管正向电压 Is为反向饱合电流,取10-12A K为玻尔茨曼常数,1.38*10-23 T为绝对温度,取300开尔文(27摄氏度) q为电子电荷1.6*10-19C 求此电路中的电流Id和二极管正向电压Ud(要求用fsolve函数求解) R=50;U=4;Is=1e-12;K=1.38e-23;T=300;q=1.6e-19; %Ud+Id*R-U=0; %Id-Is*exp(Ud*q/(K*T)-1)=0; Ud=0: 0.01: 0.7; Id=Is*exp(Ud*q/(K*T)-1); Ud1=0: 0.01: 4; Id1=(U-Ud1)/R plot(Ud,1000*Id,'r') holdon plot(Ud1,1000*Id1,'b') grid holdoff legend('二极管伏安特性','负载线') x=fsolve(@UdId,[10.05]) functionf=UdId(x) R=50;U=4;Is=1e-12;K=1.38e-23;T=300;q=1.6e-19; Ud=x (1);Id=x (2); f=[Ud+Id*R-U Id-Is*exp(Ud*q/(K*T)-1)]; x= 0.67070.0666 UdId 5、实验数据处理: 已知某压力传感器的测试数据如下表 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,并把拟合曲线和各个测试数据点画在同一幅图上。 p=[0.01.12.12.84.25.06.16.98.19.09.9]; u=[1011131417182224293439]; plot(p,u,'r+') abcd=polyfit(p,u,3) p1=0: 0.1: 10; u1=polyval(abcd,p1); holdon plot(p1,u1,'b'); grid holdoff axis([-111841]); xlabel('p'); ylabel('u'); legend('p-u','u(p)=a*p^3+b*p^2+c*p+d',2) 实验八MATLAB应用 1、用Simulink求解下图所示电路0~100微秒内的响应。 已知R=6*10-4欧,C=1700微法,L=6*10-9享,uc(0)=15kV。 ●模块参数设置: Integrator1的Initialcondition: 15kV 在命令窗口为R,L,C赋值。 ●仿真参数设置如下: Starttime: 0 Stoptime: 100e-6 SolverType: Variable-step Solver: ode45 Maxstepsize: 1e-7 Minstepsize: auto Initialstepsize: auto Relativetolerance: 1e-3 Absolutetolerance: 1e-6 实验四MATLAB数值运算 一、实验目的: 掌握MATLAB常用的数值运算函数。 二、实验内容: 1、求代数方程 p=[3472912] roots(p) ans= -0.8612+1.4377i -0.8612-1.4377i 0.6737+1.0159i 0.6737-1.0159i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 实验 指导 答案 详解 非常 详细 正确