电气工程软件训练三Matlab 作业.docx
《电气工程软件训练三Matlab 作业.docx》由会员分享,可在线阅读,更多相关《电气工程软件训练三Matlab 作业.docx(17页珍藏版)》请在冰豆网上搜索。
电气工程软件训练三Matlab作业
D1(
江苏大学
《电气工程软件训练三三》课程设计报告
设计题目:
MATLAB
专业班级:
J电气1401
学生姓名:
唐鹏
学生学号:
4141127007
指导老师:
完成日期:
江苏大学京江学院
一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=[2,4,3,6;1,5,3,2;2,7,7,9;1,2,3,5];
C=B^3
D1=[B,C];
D=D1(2:
4,2:
7)
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
C=2929388731140
227751681868
518167515552021
227724681895
D=53222775168177951816751555
235227724681
E=2436
1532
2779
1235
2929388731140
227751681868
518167515552021
227724681895
F=77
23
938873
G=77
23
938873
H=4408142491322117185
3435111661030513333
7842253742352730558
3435110851030513414
H=1.0e+004*
0.00101.42491.32211.7185
0.00310+0.0001i1.03051.3333
0.78422.53740.00413.0558
0.34351.10851.03051.3414
②
(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=[6,3,4;-2,5,7;8,-1,-3];B=[3;-4;-7];X=inv(A)*B
rank(A)
[v,d]=eig(A)
A1=A^3
A2=sqrt(A)
A3=expm(A)
A4=logm(A)
A(:
1)=0;A(3,:
)=0
运行结果:
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
A1=578298352
228156202
384154156
A2=2.44951.73212.0000
0+1.4142i2.23612.6458
2.82840+1.0000i0+1.7321i
A3=1.0e+004*
1.06530.54150.6323
0.48300.24650.2876
0.63160.32060.3745
A4=1.7129+0.4686i0.5305-0.2425i0.5429-0.6049i
1.1938+2.8123i0.3658-1.4552i-0.5514-3.6305i
-0.0748-3.1978i0.7419+1.6546i1.8333+4.1282i
A=034
057
000
2MATLAB数值运算
实验目的:
掌握MATLAB的数值运算及其运算中所用到的函数,掌握结构数组的操作。
实验内容:
①已知多项式a(x)=x2+2x+3;b(x)=4x2+5x+6
(1)求多项式a(x)和多项式b(x)的乘法运算结果,并在命令窗口中显示该多项式c;
(2)求多项式c的根及其微分;
源程序:
p1=[1,2,3];p2=[4,5,6];
p=conv(p1,p2);c=poly2sym(p)
roots(p)
c2=diff(c)
运行结果:
c=4*x^4+13*x^3+28*x^2+27*x+18
ans=-1.0000+1.4142i
-1.0000-1.4142i
-0.6250+1.0533i
-0.6250-1.0533i
c2=16*x^3+39*x^2+56*x+27
②求
的“商”及“余”多项式并在命令窗口中显示该多项式。
源程序:
root=[-i,i,-3,-1];p=poly(root);
d=[1,0,2,1];
[q,r]=deconv(p,d);
c3=poly2sym(q)
c4=poly2sym(r)
运行结果:
c3=x+4
c4=2*x^2-5*x-1
③
(1)计算当x=2,x=3时,
的值;
(2)计算
的值
(3)
,B=A2+3,C=A-2B,,求:
C
源程序:
x=2
y1=x^3+(x-0.98)^2/(x+1.25)^3-5*(x+1/x)
x=3
y1=x^3+(x-0.98)^2/(x+1.25)^3-5*(x+1/x)
y2=cos(60)+acos(pi)-sqrt(9-sqrt
(2))
A=[2,4,3,6;1,5,3,2;2,7,7,9;1,2,3,5];B=A^2+3;C=A-2*B
运行结果:
x=2
y1=-4.4697
x=3
y1=10.3865
y2=-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
f=sym('(a*x^2+b*x+c-3)^3-a*(c*x^2+4*b*x-1)')
collect(f)
collect(f,a)
运行结果:
f=(a*x^2+b*x+c-3)^3-a*(c*x^2+4*b*x-1)
ans=
a^3*x^6+3*b*a^2*x^5+((c-3)*a^2+2*b^2*a+a*(2*(c-3)*a+b^2))*x^4+(4*(c-3)*b*a+b*(2*(c-3)*a+b^2))*x^3+((c-3)*(2*(c-3)*a+b^2)+2*b^2*(c-3)+a*(c-3)^2-a*c)*x^2+(3*(c-3)^2*b-4*b*a)*x+(c-3)^3+a
ans=
a^3*x^6+3*(b*x+c-3)*x^4*a^2+(3*(b*x+c-3)^2*x^2-c*x^2-4*b*x+1)*a+(b*x+c-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=sym('1/(a-b)');f2=sym('2*a/(a+b)');f3=sym('(a+1)*(b-1)*(a-b)');
f1+f2
f1*f3
f1/f3
运行结果:
ans=1/(a-b)+2*a/(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,对其进行化简。
源程序:
symsxa
y1=sym('(e^x+x)*(x+2)');s1=expand(y1)
y2=sym('a^3-1');s2=factor(y2)
y3=sym('(x+3)/(x*(x+1))+(x-1)/(x^2*(x+2))');[a,b]=numden(y3)
y4=sym('2*(cos(x))^2-(sin(x))^2');s3=simple(y4)
运行结果:
s1=e^x*x+2*e^x+x^2+2*x
s2=(a-1)*(a^2+a+1)
a=x^3+6*x^2+6*x-1
b=x^2*(x+1)*(x+2)
s3=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)
的数组矩阵替换。
源程序:
symsaxbtcnsintlnzde2t
f=sym('a*x^n+b*t+c')
f1=subs(f,'a',sint);f2=subs(f1,'b',lnz);subs(f2,'c',de2t)
f3=subs(f,'n',3);subs(f3,'c',pi)
subs(f,'c',1:
2:
5)
subs(f,'c',[1,3;2,4])
运行结果:
f=a*x^n+b*t+c
ans=sint*x^n+lnz*t+de2t
ans=a*x^3+b*t+pi
ans=[a*x^n+b*t+1,a*x^n+b*t+3,a*x^n+b*t+5]
ans=[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
f=sym('1-(sin(x))^2');g=sym('2*x+1');f1=subs(f,'x',0.5)
f2=compose(f,g)
运行结果:
f1=0.7702
f2=1-sin(2*x+1)^2
⑥求
。
源程序:
symsx
f=sym('(x^2-1)/(x^2-3*x+1)');limit(f,x,2)
运行结果:
ans=-3
⑦求函数f(x)=cos2x-sin2x的积分;求函数
的导数。
源程序:
symsx
f=sym('cos(2*x)-sin(2*x)');g=sym('sqrt(e^x+x*sin(x))');f1=int(f)
f2=diff(g)
运行结果:
f1=1/2*sin(2*x)+1/2*cos(2*x)
f2=1/2/(e^x+x*sin(x))^(1/2)*(e^x*log(e)+sin(x)+x*cos(x))
⑧计算定积分
源程序:
symsx
f=sym('sin(x)+2');s1=int(f,x,0,pi/6)
运行结果:
s1=-1/2*3^(1/2)+1/3*pi+1
⑨求下列线性代数方程组的解。
源程序:
symsxyz
f1=sym('x+y+z=10')
f2=sym('3*x+2*y+z=14')
f3=sym('2*x+3*y-z=1')
[s1,s2,s3]=solve(f1,f2,f3)
运行结果:
f1=x+y+z=10
f2=3*x+2*y+z=14
f3=2*x+3*y-z=1
s1=1
s2=2
s3=7
⑩求解当y(0)=2,z(0)=7时,微分方程组的解。
源程序:
symsxzy
[s1,s2]=dsolve('Dy-z=sin(x)','Dz+y=1+x','y(0)=2','z(0)=7','x')
运行结果:
s1=cos(x)+6*sin(x)+1/2*x*sin(x)+1+x
s2=-3/2*sin(x)+6*cos(x)+1+1/2*x*cos(x)
4MATLAB程序设计
实验目的:
掌握MATLAB程序设计的主要方法,熟练编写MATLAB函数。
实验内容:
①用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到最后一项的绝对值小于10-6
为止,试编写其M脚本文件。
源程序:
n=1;sum1=0;
while(1/(2*n-1))>1.0000e-006
sum1=sum1+4*(-1)^(n+1)*(1/(2*n-1));n=n+1;
end
sum1
运行结果:
sum1=3.1416
②分别用for和while结构计算1+22+33+…+100100的运行程序。
源程序:
①n=1;sum2=0;
whilen<=100
sum2=sum2+n^n;
n=n+1;
end
sum2
②sum2=0;
forn=1:
100
sum2=sum2+n^n;
end
sum2
运行结果:
sum2=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/6*x);y2=cos(pi/6*x);
plot(x,y1,'r',x,y2,'--m')
title('两曲线比较图')
x=[2/3*pi;6/3*pi];y=[0.42;0];
s=['sin(pi/6*x)';'cos(pi/6*x)'];text(x,y,s)
legend('sinx','cosx')
xlabel('时间t')
ylabel('幅值')
gridon
运行结果:
②在同一窗口不同坐标系里分别绘出y1=sinx,y2=cosx,y3=cinh(x),y4=cosh(x)4个图形,其中x为以0为初值,2
为终值,元素数目为30的行向量。
源程序:
x=linspace(0,2*pi,30);
y1=sin(x);y2=cos(x);y3=sinh(x);y4=cosh(x);
subplot(2,2,1);plot(x,y1');
subplot(2,2,2);plot(x,y2');
subplot(2,2,3);plot(x,y3');
subplot(2,2,4);plot(x,y4');
运行结果:
③绘制一个三维曲线其中x=cosp,y=sinp,z=p,p为以0为初值,20
为终值,步长0.1
的行向量。
源程序:
p=0:
0.1*pi:
20*pi;x=cos(p);y=sin(p);z=p;
plot3(x,y,z);
运行结果:
三课程设计体会
通过这次matlab的课程设计,让我对matlab这个软件更加的熟悉,也知道了电脑软件对学习上工作上的帮助是十分的巨大的。
本来自己对编写程序这些东西不是很熟练,自己也懒的去练习,认为自己不能学会,这次通过自己认真的练习,感觉自己的能力有了显著的提升。
matlab自己带的函数十分的多,所以需要不断的去翻看老师给的资料和上网去查一些知识,这些都能够提高我们的熟练度,让我能进一步了解电脑编程。
总之,这次学习让我对matlab更加熟悉了。
四、参考资料
MATLABPPT