电气工程软件训练ⅢMatlab作业 2.docx
《电气工程软件训练ⅢMatlab作业 2.docx》由会员分享,可在线阅读,更多相关《电气工程软件训练ⅢMatlab作业 2.docx(23页珍藏版)》请在冰豆网上搜索。
电气工程软件训练ⅢMatlab作业2
江苏大学
京江学院
《电气工具软件训练Ⅲ》课程设计报告
设计题目:
MATLAB
专业班级:
J电气1202
学生姓名:
学生学号:
***********************************
完成日期:
2014.6.26
江苏大学·电气信息工程学院
一MATLAB课程设计的目的和要求
1.MATLAB软件功能简介
MATLAB的名称源自MatrixLaboratory,1984年由美国Mathworks公司推向市场。
它是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。
MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。
其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。
该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。
目前,Mathworks公司已推出30多个应用工具箱。
MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。
2.MATLAB课程设计的目的
本次课程设计主要是为了使学生了解MATLAB软件的基本知识,熟悉MATLAB的上机环境,掌握MATLAB数值运算、程序设计、二维/三维绘图、符号运算、Simulink仿真等相关知识,并初步具备将一般数学问题转化为对应的计算机进行处理的能力,以便为今后进一步的学习打下坚定基础。
二MATLAB课程内容
1MATLAB语言基础
实验目的:
基本掌握MATLAB向量、矩阵、数组的生成及其基本运算(区分数组运算和矩阵运算)、常用的数学函数。
了解字符串的操作。
实验内容:
创建以下矩阵:
A为初值为1,终值为12,元素数目为6的行向量;
;C为B的三次方矩阵;D由B和C横向拼接并去除第一列、最后一列和第一行元素而成;E由B和C纵向拼接而成;F抽取E的3~5行和第2~3列元素生成;G由F经变形为3×4的矩阵而得;H由B和C数组相乘运算而成,同时将H(1,1)和H(2,1)分别变为π的平方和立方,H(2,2)=arccos
(2),H(3,3)=H(1,1)+H(2,1)。
源程序:
>>A=linspace(1,12,6)
>>B=[2436;1532;2779;1235]
>>C=B^3
>>D=[B(2:
4,2:
4)C(2:
4,1:
3)]
>>E=[B;C]
>>F=E(3:
5,2:
3)
>>G=reshape(F,3,2)
>>H=B.*C
>>H(1,1)=pi^2;H(2,1)=pi^3;H(2,2)=acos
(2);H(3,3)=H(1,1)+H(2,1)
运行结果:
A=
1.00003.20005.40007.60009.800012.0000
B=
2436
1532
2779
1235
C=
2929388731140
227751681868
518167515552021
227724681895
D=
532227751681
77951816751555
235227724681
E=
2436
1532
2779
1235
2929388731140
227751681868
518167515552021
227724681895
F=
77
23
938873
G=
77
23
938873
H=
584375226196840
227375520431736
1036117251088518189
227144820434475
H=
1.0e+04*
0.00100.37520.26190.6840
0.00310+0.0001i0.20430.1736
0.10361.17250.00411.8189
0.02270.14480.20430.4475
(1)用矩阵除法求下列方程组的解x=[x1;x2;x3];
(2)求矩阵的秩(rank函数);
(3)求矩阵的特征值与特征向量(eig函数);
(4)系数矩阵的3次幂与开方;
(5)系数矩阵的指数运算和数组对数运算;
(6)系数矩阵a(1,2)、a(1,3)、a(2,2)、a(2,3)的元素不变,其余元素变为零。
(7)提取系数矩阵主对角线上的元素,并依次相加赋予b。
源程序:
>>A=[634;-257;8-1-3]
>>B=[3;-4;-7]
>>X=A\B
>>rank(A)
>>[VD]=eig(A)
>>Asanci=A^3
>>Akaifang=sqrtm(A)
>>Azhishu=expm(A)
>>Aduishu=log(A)
>>A(:
1)=0;A(3,:
)=0
>>A=[634;-257;8-1-3]
>>Aduijiao=diag(A)
>>b=trace(A)
运行结果:
A=
634
-257
8-1-3
B=
3
-4
-7
X=
1.0200
-14.0000
9.7200
ans=
3
V=
0.8013-0.1094-0.1606
0.3638-0.65640.8669
0.47490.7464-0.4719
D=
9.732600
0-3.29280
001.5602
Asanci=
578298352
228156202
384154156
Akaifang=
2.2447+0.2706i0.6974-0.1400i0.9422-0.3494i
-0.5815+1.6244i2.1005-0.8405i1.7620-2.0970i
1.9719-1.8471i-0.3017+0.9557i0.0236+2.3845i
Azhishu=
1.0e+04*
1.06530.54150.6323
0.48300.24650.2876
0.63160.32060.3745
Aduishu=
1.79181.09861.3863
0.6931+3.1416i1.60941.9459
2.07940+3.1416i1.0986+3.1416i
A=
034
057
000
A=
634
-257
8-1-3
Aduijiao=
6
5
-3
b=
8
2MATLAB数值运算
实验目的:
掌握MATLAB的数值运算及其运算中所用到的函数,掌握结构数组的操作。
实验内容:
已知多项式a(x)=x2+2x+3;b(x)=4x2+5x+6
(1)求多项式a(x)和多项式b(x)的乘法运算结果,并在命令窗口中显示该多项式c;
(2)求多项式c的根及其微分;
源程序:
>>a=[123]
>>b=[456]
>>X1=poly2sym(a)
>>X2=poly2sym(b)
>>X=conv(a,b)
>>c=poly2sym(X)
>>cgen=roots(X)
>>cwei=polyder(X)
运行结果:
a=
123
b=
456
X1=
x^2+2*x+3
X2=
4*x^2+5*x+6
X=
413282718
c=
4*x^4+13*x^3+28*x^2+27*x+18
cgen=
-1.0000+1.4142i
-1.0000-1.4142i
-0.6250+1.0533i
-0.6250-1.0533i
cwei=
16395627
求
的“商”及“余”多项式并在命令窗口中显示该多项式。
源程序:
>>a=[14443]
>>b=[1021]
>>[shangyu]=deconv(a,b)
>>poly2sym(shang,'s')
>>poly2sym(yu,'s')
运行结果:
a=
14443
b=
1021
shang=
14
yu=
002-5-1
ans=
s+4
ans=
2*s^2-5*s-1
(1)计算当x=2,x=3时,
的值;
(2)计算
的值
(3)
,B=A2+3,C=A-2B,,求:
C
源程序:
>>x=2;f=x^3+(x-0.98)^2/(x+1.25)^3-5*(x+1/x)
>>x=3;f=x^3+(x-0.98)^2/(x+1.25)^3-5*(x+1/x)
>>cos(60)+acos(pi)-sqrt(9-sqrt
(2))
>>A=[2436;1532;2779;1235];B=A^2+3;C=A-2*B
运行结果:
f=
-4.4697
f=
10.3865
ans=
-3.7066+1.8115i
C=
-44-124-117-154
-35-109-93-110
-72-219-205-265
-35-94-93-125
3MATLAB符号运算
实验目的:
掌握符号变量和符号表达式的创建,掌握MATLAB的symbol工具箱的一些基本应用。
实验内容:
已知
,按照自变量x和自变量a,对表达式f分别进行降幂排列(同幂合并)。
源程序:
>>symsabcx
>>fx=collect((a*x^2+b*x+c-3)^3-a*(c*x^2+4*b*x-1))
>>fa=collect((a*x^2+b*x+c-3)^3-a*(c*x^2+4*b*x-1),a)
运行结果:
fx=
a^3*x^6+(3*a^2*b)*x^5+(a*(b^2+2*a*(c-3))+2*a*b^2+a^2*(c-3))*x^4+(b*(b^2+2*a*(c-3))+4*a*b*(c-3))*x^3+((b^2+2*a*(c-3))*(c-3)-a*c+a*(c-3)^2+2*b^2*(c-3))*x^2+(3*b*(c-3)^2-4*a*b)*x+a+(c-3)^3
fa=
x^6*a^3+(3*x^4*(c+b*x-3))*a^2+(3*x^2*(c+b*x-3)^2-4*b*x-c*x^2+1)*a+(c+b*x-3)^3
已知f1=1/(a-b),f2=2a/(a+b),f3=(a+1)(b-1)(a-b),分别求f1和f2的符号和、f1和f3的符号积、f1和f3的符号商。
源程序:
>>symsab
>>f1=1/(a-b);f2=2*a/(a+b);f3=(a+1)*(b-1)*(a-b);
>>f1+f2
>>f1*f3
>>f1/f3
运行结果:
ans=
(2*a)/(a+b)+1/(a-b)
ans=
(a+1)*(b-1)
ans=
1/((a-b)^2*(a+1)*(b-1))
对下列表达式进行符号运算
(1)已知数学表达式y(x)=(ex+x)(x+2),将其展开。
(2)已知数学表达式y(x)=a3-1,对其进行因式分解。
(3)已知数学表达式
,对其进行通分。
(4)已知数学表达式y(x)=2cos2x-sin2x,对其进行化简。
源程序:
>>symsx
>>expand((exp(x)+x)*(x=2))
>>symsx
>>factor(a^3-1)
>>symsx
>>[a,b]=numden((x+3)/(x*(x+1))+(x-1)/(x^2*(x+2)))
>>symsx
>>simplify(2*(cos(x))^2-(sin(x))^2)
运行结果:
ans=
2*x+2*exp(x)+x*exp(x)+x^2
ans=
(x^3+6*x^2+6*x-2)*(x^6+12*x^5+48*x^4+71*x^3+30*x^2-6*x+1)
a=
x^3+6*x^2+6*x-1
b=
x^2*(x+1)*(x+2)
ans=
3*cos(x)^2-1
已知数学表达式f(x)=axn+bt+c,对其进行如下的符号替换:
1)a=sint,b=lnz,c=de2t的符号变量替换。
2)n=3,c=л的符号常量替换。
3)c=1:
2:
5替换。
4)
的数组矩阵替换。
源程序:
>>symsabctnx
>>f=a*x^n+b*t+c;subs(f,'a','sint');subs(f,'b','logz');subs(f,'c','de2t')
>>subs(f,'n','3');subs(f,'c','pi')
>>c=[1:
2:
5];f1=subs(f)
>>c=[13;24];f2=subs(f)
运行结果:
ans=
de2t+a*x^n+b*t
ans=
pi+a*x^n+b*t
f1=
[a*x^n+b*t+1,a*x^n+b*t+3,a*x^n+b*t+5]
f2=
[a*x^n+b*t+1,a*x^n+b*t+3]
[a*x^n+b*t+2,a*x^n+b*t+4]
已知符号表达式
,
,计算x=0.5时,f的值;计算复合函数f(g(x))。
源程序:
>>symsx
>>x=0.5;f=1-(sin(x))^2
>>symsx
>>f=1-(sin(x))^2;g=2*x+1;m=compose(f,g)
运行结果:
f=
0.7702
m=
1-sin(2*x+1)^2
求
。
源程序:
>>symsx
>>f=(x^2-1)/(x^2-3*x+1);limit(f,x,2)
运行结果:
ans=
-3
求函数f(x)=cos2x-sin2x的积分;求函数
的导数。
源程序:
>>symsx
>>f=cos(2*x)-sin(2*x);int(f)
>>symsx
>>g=sqrt(exp(x)+x*sin(x));diff(g)
运行结果:
ans=
cos(2*x)/2+sin(2*x)/2
ans=
(exp(x)+sin(x)+x*cos(x))/(2*(exp(x)+x*sin(x))^(1/2))
计算定积分
源程序:
>>symsx
>>f=sin(x)+2;int(f,0,pi/6)
运行结果:
ans=
pi/3-3^(1/2)/2+1
求下列线性代数方程组的解。
源程序:
>>[x,y,z]=solve('x+y+z=10','3*x+2*y+z=14','2*x+3*y-z=1')
运行结果:
x=
1
y=
2
z=
7
求解当y(0)=2,z(0)=7时,微分方程组的解。
源程序:
>>symsxyz
>>[y,z]=dsolve('Dy-z=sin(x)','Dz+y=1+x','y(0)=2,z(0)=7','x')
运行结果:
y=
x+cos(x)+6*sin(x)+(x*sin(x))/2+1
z=
6*cos(x)-(3*sin(x))/2+(x*cos(x))/2+1
4MATLAB程序设计
实验目的:
掌握MATLAB程序设计的主要方法,熟练编写MATLAB函数。
实验内容:
用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到最后一项的绝对值小于10-6
为止,试编写其M脚本文件。
源程序:
s=0;
n=1;
while1/(2*n-1)>=1*10^(-6)
s=s+(-1)^(n-1)/(2*n-1);
n=n+1;
end
4*s
运行结果:
ans=
3.1416
分别用for和while结构计算1+22+33+…+100100的运行程序。
源程序:
For语句:
s=0;
forn=1:
100
s=s+n^n;
end
s
While语句:
s=0;
n=1;
whilen<=100
s=s+n^2;
n=n+1;
end
s
执行:
s=
1.0037e+200
s=
1.0037e+200
5MATLAB绘图
实验目的:
掌握MATLAB二维图形绘制,掌握图形属性的设置和图形修饰;掌握图像文件的读取和显示。
实验内容:
绘制图形
图1
其中x初值为0,终值为12.5,步长为0.1,第一个曲线y1为
,第二个曲线y2为
。
写出图1的绘制源程序。
按照以下的步骤进行
(1)产生曲线的数据(共有3组数据:
x,y1,y2);
(2)选择合适的线形、标记、颜色(正弦曲线为红色,余弦曲线为紫色);(3)添加图例及文字说明信息;(4)添加坐标轴说明与图标题。
源程序:
x=0:
0.1:
12.5;
y1=sin((pi*x)/6);
y2=cos((pi*x)/6);
plot(x,y1,'r--',x,y2,'m-');
x=[4.2;9.2];
y=[0.8;0.8];
s=['<---sinx';'cosx--->']
text(x,y,s);
title('两曲线比较图');
legend('sinx','cosx');
xlabel('时间t');
ylabel('幅值');
运行结果:
在同一窗口不同坐标系里分别绘出y1=sinx,y2=cosx,y3=sinh(x),y4=cosh(x)4个图形,其中x为以0为初值,2
为终值,元素数目为30的行向量。
源程序:
x=linspace(0,2*pi,30);
subplot(2,2,1);
plot(x,sin(x));
subplot(2,2,2);
plot(x,cos(x));
subplot(2,2,3);
plot(x,sinh(x));
subplot(2,2,4);
plot(x,cosh(x));
运行结果:
绘制一个三维曲线其中x=cosp,y=sinp,z=p,p为以0为初值,20
为终值,步长0.1
的行向量。
源程序:
p=0:
0.1*pi:
20*pi;
plot3(cos(p),sin(p),p);
运行结果:
三课程设计体会
这学期陈老师带领我们学习了MATLAB这款软件,本次课程设计我了解MATLAB软件的基本知识,熟悉MATLAB的上机环境,掌握MATLAB数值运算、程序设计、二维/三维绘图、符号运算、Simulink仿真等相关知识,并初步具备将一般数学问题转化为对应的计算机进行处理的能力,为今后进一步学习打下了基础。
写程序是基础,这是一点点积累的,程序需要什么知识马上去翻书学习,也要记号笔记,题目需要什么函数,都可以再书上找到详细的讲解,一步步脚踏实地,不能心急。
总之,通过这次学习,我了解了一下这个软件总体的功能,以及通过自己编写一些代码也学到了一些用法和知识。
我相信经过长期的积累,我一定能熟练使用MATLAB。
最后就是要感谢陈老师的悉心指导,谢谢!
四、参考资料
MATLAB教程——基于6.x版本,张志涌徐彦琴等编著,北京航空航天大学出版社,2001.
MATLAB命令大全,姚东王爱民等编著,人民邮电出版社,2000.
详解MATLABE快速入门与应用,袁东,肖广兵等编著,电子工业出版社,2011.