MATLAB答案.docx
- 文档编号:26694749
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:36
- 大小:136.17KB
MATLAB答案.docx
《MATLAB答案.docx》由会员分享,可在线阅读,更多相关《MATLAB答案.docx(36页珍藏版)》请在冰豆网上搜索。
MATLAB答案
MATLAB语言实验指导书
华东交通大学电气学院
张永贤
2006年2月
实验一MATLAB工作环境熟悉及简单命令的执行
一、实验目的:
熟悉MATLAB的工作环境,学会使用MATLAB进行一些简单的运算。
二、实验内容:
MATLAB的启动和退出,熟悉MATLAB的桌面(Desktop),包括菜单(Menu)、工具条(Toolbar)、命令窗口(CommandWindow)、历史命令窗口、工作空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。
三、实验步骤:
1、启动MATLAB,熟悉MATLAB的桌面。
2、在命令窗口执行命令完成以下运算,观察workspace的变化,记录运算结果。
(1)(365-522-70)3
(2)>>area=pi*2.5^2
(3)已知x=3,y=4,在MATLAB中求z:
(4)将下面的矩阵赋值给变量m1,在workspace中察看m1在内存中占用的字节数。
m1=
执行以下命令
>>m1(2,3)
>>m1(11)
>>m1(:
3)
>>m1(2:
3,1:
3)
>>m1(1,4)+m1(2,3)+m1(3,2)+m1(4,1)
(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
2、求以下变量的值,并在MATLAB中验证。
(1)a=1:
2:
5;
(2)b=[a'a'a'];
(3)c=a+b(2,:
)
实验二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
(12)result11=2.^a
2、用MATLAB求下面的的方程组。
(1)
(2)
3、已知
(1)求矩阵A的秩(rank)
(2)求矩阵A的行列式(determinant)
(3)求矩阵A的逆(inverse)
(4)求矩阵A的特征值及特征向量(eigenvalueandeigenvector)
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
三、思考题
求y=?
(用formatlong查看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.
while1
n=input('Entern,negativequits:
');
ifn<=0
break
end
a=n;
whilen>1
ifrem(n,2)==0
n=n/2;
else
n=3*n+1;
end
a=[a,n];
end
a
end
2、编程求满足
的最小m值。
三、思考题
用对分法求解方程
在[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),则认为中点即是原方程的解。
实验四函数的编写及调试
一、实验目的:
掌握MATLAB函数的编写及调试方法。
二、实验内容:
1、编写一个函数,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。
function[y]=myfun1(x)
选择一些数据测试你编写的函数。
2、编写一个函数求向量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)之间均匀分布的随机数。
3、编写一个函数,给出一个向量
,生成如下范德蒙矩阵。
function[v]=myvander(x)
例如:
>>v=myvander([2345])
得v=
生成一些数据测试你写的函数。
三、思考题
编写程序,用如下迭代公式求
,a的值分别为:
3,17,113。
迭代的终止条件为
,迭代初值
迭代次数不超过100次。
分别对迭代结果和准确值进行比较,并统计迭代次数。
实验五MATLAB的绘图
1、在同一坐标系下绘制下面三个函数在t[0,4]的图象。
2、编写程序,选择合适的步距,绘制下面函数在区间[-6,6]中的图象。
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]。
三、思考题
在同一坐标系下,用不同颜色和线型绘制以下两个函数在t[-2,2]范围内的图象。
实验六MATLAB数值运算
一、实验目的:
掌握MATLAB常用的数值运算函数。
二、实验内容:
1、求代数方程
的5个根,并将其用星号(*)标记在复平面图上。
(用roots和plot函数)。
2、求代数方程
的5个根,并将其用星号(*)标记在复平面图上。
(用roots和plot函数)。
3、求下面函数在[0.5,4]区间内的过零点。
(用fzero函)
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函数求解)
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,并把拟合曲线和各个测试数据点画在同一幅图上。
实验七MATLAB应用
1、以原点为奇对称中心的方波y(wt),可以用相应频率的基波及其奇次谐波合成。
取的阶数越多,越接近方波,但总消除不了边缘上的尖峰,这称为吉布斯效应。
设方波频率为50Hz,时间t取0~0.04秒(f=50Hz,w=2*pi*f,h=1e-5,tf=40e-3,t=0:
h:
tf),编写程序,画出如下用1次谐波、1,3次谐波、1,3,5,7,9次谐波,1,3,5,…,19次谐波合成的近似方波。
(产生方波的函数为:
square)
2、用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实验程序
实验1
第1题.
(1)
x=2*sin(85*pi/180)/(1+exp
(2))
x=
0.2375
(2).
x=[21+2i;-0.455];
y=0.5*log(x+sqrt(1+x^
(2)))
y=
0.7114-0.0253i0.8968+0.3658i
0.2139+0.9343i1.1541-0.0044i
或
x=[21+2i;-0.455];
d=0.5*log(x+sqrt(1+x*x))
d=
0.7114-0.0253i0.8968+0.3658i
0.2139+0.9343i1.1541-0.0044i
或
x=[21+2*i;-0.455];
y=0.5*log(x+sqrt(1+x^
(2)))
y=
0.7114-0.0253i0.8968+0.3658i
0.2139+0.9343i1.1541-0.0044i
(3).
a=-3.0:
0.1:
3.0;
g=(exp(0.3*a)-exp(-0.3*a)).*sin(a+0.3)/2+log((0.3+a)/2)
结果略
(4)
>>t=0:
0.5:
2.5;
>>f1=t.^2;
>>f2=t.^2-1;
>>f3=t.^2-2*t+1;
>>z=(t>=0&t<1).*f1+(t>=1&t<2).*f2+(t>=2&t<3).*f3
z=
00.250001.25001.00002.2500
第2题
(1)
>>A=[1234-4;34787;3657];
>>B=[13-1;203;3-27];
>>A+6*B
ans=
1852-10
467105
215349
>>A-B+eye(3)
ans=
1232-2
33885
1681
(2)
>>A*B
ans=
684462
309-72596
154-5241
>>A.*B
ans=
121024
680261
9-13049
(3)
>>A^3
ans=
3722623382448604
247370149188600766
78688454142118820
>>A.^3
ans=
172839304-64
39304343658503
27274625343
(4)
>>A/B
ans=
16.4000-13.60007.6000
35.8000-76.200050.2000
67.0000-134.000068.0000
>>B\A
ans=
109.4000-131.2000322.8000
-53.000085.0000-171.0000
-61.600089.8000-186.2000
(5)
>>[A,B]
ans=
1234-413-1
34787203
36573-27
>>[A([1,3],:
);B^2]
ans=
1234-4
3657
451
11019
20-540
第3题
>>A=[12345;678910;1112131415;1617181920;2122232425];
>>B=[3016;17-69;023-4;970;41311];
>>C=A*B
C=
9315077
258335237
423520397
588705557
753890717
>>D=C(3:
5,2:
3)
D=
520397
705557
890717
第4题
(1)
>>a=100:
999;
>>k=find(rem(a,21)==0);%找出能杯21整除的元素位置,find()函数找出不为0的元素位置
>>x=length(k)%获得向量k的元素个数并赋值给变量x
x=
43
>>k=find(rem(a,21)==0)%显示能杯21整除的元素位置
k=
Columns1through24
627486990111132153174195216237258279300321342363384405426447468489
Columns25through43
510531552573594615636657678699720741762783804825846867888
>>y=100+k-1%显示能杯21整除的元素
y=
Columns1through23
105126147168189210231252273294315336357378399420441462483504525546567
Columns24through43
588609630651672693714735756777798819840861882903924945966987
(2)
sh='CDe345Efg69K';
>>k=find(sh>='A'&sh<='Z');%找出大写字母的位置
>>sh(k)=[];%删除大写字母
>>x=sh(1:
end)%显示处理后的字符
x=
e345fg69
实验2
第1题
a=[123;456];
b=[24-1;135];
c=[1;0;-2];
d=[147;852;360];
>>result1=a'%a的转置
result1=
14
25
36
>>result2=a*b%error应采用点乘
>>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%errora和c维数不同
>>result9=a.\b%%矩阵左点除
result9=
2.00002.0000-0.3333
0.25000.60000.8333
>>result10=a.^2
result10=
149
162536
>>result11=a^2%error等价于a*a
>>result12=2.^a
result12=
248
163264
第2题
(1)
>>A=[721-2;9153-2;-2-2115;13213];
>>B=[4;7;-1;0];
>>X=inv(A)*B%A\B等价于inv(A)*B,A/B等价于A*inv(B)
X=
0.4979
0.1445
0.0629
-0.0813
>>X1=A\B
X1=
0.4979
0.1445
0.0629
-0.0813
(2)
>>a=[1110;121-1;2-10-3;335-6];
>>b=[1;8;3;5];
>>x=inv(a)*b
x=
1.0000
5.0000
-5.0000
-2.0000
第3题
>>A=[721-2;9153-2;-2-2115;13213];
>>a1=rank(A)
a1=
4
>>a2=det(A)
a2=
12568
>>a3=inv(A)
a3=
0.1744-0.0303-0.01250.0270
-0.10500.0789-0.01210.0006
0.00830.01730.0911-0.0311
0.0095-0.0185-0.01030.0795
>>[V,D]=eig(A)%V为向量A的特征向量,D为特征值
V=
-0.76290.0919+0.0640i0.0919-0.0640i-0.0299
0.62230.6087+0.0276i0.6087-0.0276i0.2637
0.0807-0.7474-0.74740.6434
-0.15540.0342-0.2374i0.0342+0.2374i0.7180
D=
4.8554000
012.6460+1.8333i00
0012.6460-1.8333i0
00015.8526
第4题
>>a=20;
>>b=-2;
>>c=0;
>>d=1;
>>r1=a>b
r1=
1
>>r2=a>b&c>d
r2=
0
>>r3=a==b*(-10)
r3=
1
>>r4=~b|c
r4=
0
5
>>y=0;
fork=-10:
10
y=y+pow2(k);
end
formatlong
>>y
y=
2.047999023437500e+003
实验3
方法一
a=0;
fori=1:
20
a=a+pow2(i);
ifa>10000
m=i;
break
end
end
m
方法二
a=0;
i=1;
while(a<10000)
a=a+pow2(i);
i=i+1;
end
m=i-1;
m
实验4
第1题
function[y]=myfun1(x)
ifx<=0
y=sin(x);
elseifx>0&x<=3
y=x;
elseifx>3
y=-x+6;
end
运行结果:
>>[y]=myfun1(-pi/2)
y=
-1
>>[y]=myfun1(0)y=
0
>>[y]=myfun1
(2)
y=
2
>>[y]=myfun1(4)
y=
2
第2题
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;%按照函数值行参顺序输出结果 运行结果: >>[m_x,max_x,min_x,rms_x]=myfun2(sin(0: 0.01: 6*pi)) m_x= -1.1256e-007 max_x= 1.0000 min_x= -1.0000 rms_x= 0.7071 >>[m_x,max
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 答案