matlab实验指导答案详解非常详细正确Word格式文档下载.docx
《matlab实验指导答案详解非常详细正确Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《matlab实验指导答案详解非常详细正确Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。
(3)_row不合法,首字符必须是字母
(4)for不合法,for为MATLAB的保留关键字
2、求以下变量的值,并在MATLAB中验证。
(1)a=1:
2:
5;
a=135
(2)b=[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;
]*d,要学会将其分解后去理解,可在命令窗口输入以下语句:
c'
t=[b;
]
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、已知
(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:
y=y+2^t;
end
y
方法三
t=-10
whilet<
=10
y=y+2^t;
t=t+1;
实验三选择结构程序设计及调试
掌握利用if、switch语句编写选择结构程序,学会MATLAB程序编辑、运行及调试方法。
1、求分段函数的值。
用if语句实现,算出下列表中x对应的y值。
X
-5
2
5
8
14
6
19
55
clc
clear
x=-5%x=input('
请输入x的值'
)
ifx<
y=x^2+x-6;
elseifx>
=0&
x<
y=x^2-5*x+6;
else
y=x^2-x-1;
2、分别用if和swith语句实现,将百分制成绩转换为成绩等级A、B、C、D、E。
其中[90~100]分为A,[80~90)分为B,[70~80)分为C,[60~70)分为D,60分以下为E。
对超出百分制范围的成绩,给出错误提示信息。
s=input('
请输入百分制成绩:
'
);
ifs<
0|s>
100
g='
ERROR'
;
elseifs>
=90&
s<
=100
A'
=80&
90
B'
=70&
80
C'
=60&
70
D'
E'
g
switchfloor(s/10)
case9
case8
case7
case6
casenum2cell(0:
5)
otherwise
ifs==100
else
3、程序的调试(参考P77):
在以上编写的程序中设置断点,控制程序单步运行,观察程序的执行及变量值的变化情况。
设计程序,产生两个两位随机整数,再输入一个运算符号,完成成两位数的加、减、乘、除四则运算,并显示相应的结果。
x1=10+floor(90*rand
(1))
x2=10+floor(90*rand
(1))
p=input('
输入+-*/运算符:
'
s'
switchp
case'
+'
y=x1+x2;
-'
y=x1-x2;
*'
y=x1*x2;
case'
/'
y=x1/x2;
y='
error'
实验四循环结构程序设计及调试
掌握MATLAB程序编辑、运行及调试方法。
1、启动MATLAB后,点击File|New|M-File,启动MATLAB的程序编辑及调试器(Editor/Debugger),编辑以下程序,点击File|Save保存程序,注意文件名最好用英文字符。
点击Debug|Run运行程序,在命令窗口查看运行结果,程序如有错误则改正。
注:
数论中一个有趣的题目:
任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:
2→1
3→10→5→16→8→4→2→1
6→3→10→5→16→8→4→2→1
运行下面的程序,按程序提示输入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;
n=3*n+1;
a=[a,n];
a
2、根据
,当n分别取100、1000、10000时,求x的值分别是多少?
n=100
fork=1:
n
y=y+1/k^2;
x=sqrt(6*y)
3、编程求满足
的最小m值。
以下是三种方法及结果验证方法。
sum_x=0;
n=0;
whilesum_x<
=1e4
n=n+1;
x=2^n;
sum_x=sum_x+x;
re1=n
n=1;
re2=n-1
while1
ifsum_x>
1e4
break;
re3=n
echoon
sum(2.^[1:
12])
13])
echooff
已知y和t的函数关系:
求下面表格中与t对应的y值
t
0.2
0.4
0.6
0.8
1.0
y=1
t=1;
f=1;
forn=1:
20
f=f*n;
y=y+t^n/f
实验五函数的编写及调试
掌握MATLAB函数的编写及调试方法。
1、编写一个函数,计算下面函数的值,给出x的值,调用该函数后,返回y的值。
function[y]=myfun1(x)
选择一些数据测试你编写的函数。
=0
y=sin(x);
elseifx<
=3
y=x;
y=-x+6;
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)之间均匀分布的随机数。
%m_x=mean(x);
%max_x=max(x);
%min_x=min(x);
%rms_x=sqrt(sum(x.^2)/length(x));
N=length(x);
sum_x2=0;
max_x=x
(1);
min_x=x
(1);
N
sum_x=sum_x+x(k);
sum_x2=sum_x2+x(k)^2;
ifx(k)>
max_x
max_x=x(k);
ifx(k)<
min_x
min_x=x(k);
m_x=sum_x/N;
rms_x=sqrt(sum_x2/N);
3、编写一个函数,给出一个向量
,生成如下范德蒙矩阵。
function[v]=myvander(x)
例如:
v=myvander([2345])
得v=
生成一些数据测试你写的函数。
v(k,:
)=x.^(k-1);
编写程序,用如下迭代公式求
,a的值分别为:
3,17,113。
迭代的终止条件为
,迭代初值
迭代次数不超过100次。
分别对迭代结果和准确值进行比较,并统计迭代次数。
a=input('
请输入a='
x0=1;
x1=x0/2+a/(2*x0);
if(abs(x1-x0)<
=1e-5)
break
x0=x1;
disp('
sqrt(a)数值解为:
x1
迭代次数:
sqrt(a)的准确解为:
sqrt(a)
请输入a=3
x1=
1.7321
ans=
实验六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:
6;
%设定自变量x的取值范围
leng=length(x);
%计算向量x的长度
form=1:
leng%计算函数值
y(m)=myfun1(x(m));
plot(x,y),grid%绘制函数曲线
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:
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),则认为中点即是原方程的解。
x1=0;
x2=1;
len=x2-x1;
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<
x2=xm;
elseify2*ym<
x1=xm;
len=x2-x1;
formatlong
xm,ym,n
实验七MATLAB数值运算
掌握MATLAB常用的数值运算函数。
1、求代数方程
的5个根,并将其用星号(*)标记在复平面图上。
(用roots和plot函数)。
p=[3472912];
r=roots(p)
plot(r,'
RealAxis'
ImagAxis'
r=
-0.8612+1.4377i
-0.8612-1.4377i
0.6737+1.0159i
0.6737-1.0159i
-0.9583
2、求代数方程
p=[10000-1];
axisequal
3、求下面函数在[0.5,4]区间内的过零点。
(用fzero函)
fplot('
x^3-2*x^2*sin(x)+5*x*cos(x)+1/x'
[0.5,4])
x1=fzero('
[0.5,2])
x2=fzero('
[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.7;
Id=Is*exp(Ud*q/(K*T)-1);
Ud1=0:
4;
Id1=(U-Ud1)/R
plot(Ud,1000*Id,'
holdon
plot(Ud1,1000*Id1,'
holdoff
二极管伏安特性'
负载线'
x=fsolve(@UdId,[10.05])
functionf=UdId(x)
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
11
13
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:
10;
u1=polyval(abcd,p1);
plot(p1,u1,'
axis([-111841]);
p'
u'
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:
Stoptime:
100e-6
SolverType:
Variable-step
Solver:
ode45
Maxstepsize:
1e-7
Minstepsize:
auto
Initialstepsize:
Relativetolerance:
1e-3
Absolutetolerance:
1e-6
实验四MATLAB数值运算
p=[3472912]
roots(p)
0.6737+1.0159i
p2=[10000-1]
roots(p2)
-0.8090+0.5878i