《工程应用软件》上机实验指导书.docx

上传人:b****7 文档编号:8975693 上传时间:2023-02-02 格式:DOCX 页数:38 大小:112.57KB
下载 相关 举报
《工程应用软件》上机实验指导书.docx_第1页
第1页 / 共38页
《工程应用软件》上机实验指导书.docx_第2页
第2页 / 共38页
《工程应用软件》上机实验指导书.docx_第3页
第3页 / 共38页
《工程应用软件》上机实验指导书.docx_第4页
第4页 / 共38页
《工程应用软件》上机实验指导书.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

《工程应用软件》上机实验指导书.docx

《《工程应用软件》上机实验指导书.docx》由会员分享,可在线阅读,更多相关《《工程应用软件》上机实验指导书.docx(38页珍藏版)》请在冰豆网上搜索。

《工程应用软件》上机实验指导书.docx

《工程应用软件》上机实验指导书

“《工程应用软件》上机”实验指导书

一、实验类型

验证性实验

二、实验目的

本实验是与专业基础课《工程应用软件》不可分离的一门实践课程,通过上机实习,掌握MATLAB软件使用和编程方法,验证和深化书本知识,从而加强基础知识,掌握基本技能,提高MATLAB软件的编程能力,并用MATLAB软件解决实际问题,如建模、计算和数据处理等。

三、实验教学的基本要求

要求学生通过上机实习,熟悉MATLAB的基本操作命令,掌握利用计算机进行数值计算、绘图的方法,并为以后在各门主要课程中的应用打下良好的基础。

四、实验设备与软件

台式计算机,MATLAB软件。

五、实验内容

完成教材《MATLAB基础及其应用教程》中的上机实验。

即:

实验一熟悉MATLAB工作环境;实验二MATAB语言基础;实验三MALTAB数值运算;实验四MALTAB符号运算;实验五MATLAB程序设计;实验六MATLAB数据可视化;实验七Simulink仿真集成环境

五、实验方法与步骤

实验一熟悉MATLAB工作环境

一、实验目的

初步熟悉MATLAB工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息。

二、实验内容

(1)熟悉MATLAB平台的工作环境。

(2)熟悉MATLAB的5个工作窗口。

(3)MATLAB的优先搜索顺序。

三、实验步骤

1.熟悉MATLAB的5个工作窗口。

①CommandWindow(命令窗口)

②Workspace(工作空间窗口)

③CommandHistory(命令历史记录窗口)

④CurrentDirectory(当前目录窗口)

⑤HelpWindow(帮助窗口)

(1)命令窗口(CommandWindow)

在命令窗口中输入一下命令

>>x=1

>>y=[123

456

789];

>>z1=[1:

10],z2=[1:

2:

5];

>>w=linspace(1,10,10);

>>t1=ones(3),t2=ones(1,3),t3=ones(3,1)

>>t4=ones(3),t4=eye(4)

x=

1

 

z1=

12345678910

 

t1=

111

111

111

 

t2=

111

 

t3=

1

1

1

 

t4=

111

111

111

 

t4=

1000

0100

0010

0001

 

思考题:

1量名如何声明,变量名必须遵守什么规则、是否区分大小写

答;

(1)变量声明:

不需要声明

(2)变量名须遵守的规则:

○1变量名必须以字母开头,且只能由字母、数字或下划线3类符号组成,不能含有空格和标点符号(如(),。

%)等;○2变量名区分字母的大小写;○3变量名必须是不含空格的单个词;○4关键字(如if、while)不能作为变量名。

(3)需要区分大小写

②试说明分号、逗号、冒号的用法。

(1)分号:

在语句最后加分号可使命令或语句的运行结果不显示在屏幕上,矩阵的行与行之间用分号;

(2)逗号:

一条命令行可以输入若干条命令,各命令之间以逗号或者分号分隔(3)冒号:

利用冒号生成向量。

用于生成一维数值数组,表示一维数组的全部元素或多维数组的某一维的全部元素。

③linspace()称为“线性等分”函数,说明它的用法。

可使用help命令,格式如下:

>>helplinspace

④说明函数ones()、zeros()、eye()的用法。

(1)ones()函数:

全部元素都为1的常数矩阵;

(2)zeros()函数:

全部元素都为0的矩阵;(3)eye()函数:

单位矩阵;(4)linspace()函数:

如a=linspace(n1,n2,n3),表示在线性空间上,行矢量的值从n1到n2

(2)工作空间窗口(Workspace)

单击工作窗口右上角的

按钮,将其从MATLAB主界面分出来。

①在工作空间查看各个变量,或在命令窗口用who,whos(注意大小写)查看各个变量。

②在工作空间双击变量,弹出ArrayEditor窗口(数据编辑器窗口),即可修改变量。

③使用save命令把工作空间的全部变量保存为my_var.mat文件。

>>savemy_var.mat

④输入下列命令

>>clearall%清除工作空间的所有的变量。

⑤观察工作空间的变量是否被清空,使用load命令把刚才保存的变量载入工作空间。

>>loadmy_var.mat

⑥清除命令窗口命令:

>>clc

(3)历史命令窗口

打开历史命令窗口可以看到每次运行MATLAB的时间和曾在命令窗口输入过的命令,练习以下几种利用历史命令窗口重复执行输入过的命令的方法。

①在历史命令窗口选中要重复执行的一行或几行命令,右击,出现快捷菜单,选择copy然后再paste到命令窗口。

②在历史命令窗口双击要重复执行的一行,或者选中要重复执行的一行或几行命令,用鼠标将其拖到命令窗口中执行。

③在历史命令窗口选中要重复执行的一行或几行命令,右击,出现快捷菜单,选择EvaulateSelection,也可以执行。

④或者在命令窗口使用方向键的上下键得到以前输入的命令,使用方向键的左右键可以移动光标。

(4)、当前目录命令窗口

MATLAB的当前目录即是系统默认的实施打开,装载,编辑和保存文件等操作时的文件夹。

(5)帮助窗口

单击工具栏的?

图标,或选择菜单View|Help,或者选择菜单help|MATLABHelp都能启动帮助窗口。

①通过Index选项卡查找log2()函数的用法,在Searchindexfor栏中输入需要查找的词汇“log2”,在左下侧就列出与之最匹配的词汇条目,选择“log2[1]”,右侧的窗口就会显示相应的内容。

②也可以通过Search选项卡查找log2()函数的用法。

Search选项卡与Index选项卡不同,Index只在专用术语表中查找,而Search搜素的是整个HTML帮助文件。

2.MATLAB的数值显示格式设置

频幕显示方式有紧凑(compact)和松散(loose)两种其中loose为默认方式。

>>a=ones(1,30)

>>formatcompact

>>a

数字显示格式有short、long、shorte、longe等,参照教材的列表练习。

>>formatlong

>>pi

>>formatshort

>>pi

>>formatlong

>>pi

>>format+

>>pi

>>-pi

3.变量的搜索顺序

>>pi

>>sin(pi);

>>exist('pi')

>>pi=0;

>>exist('pi')

>>pi

>>clearpi

>>exist('pi')

>>pi

思考题:

①3次执行的结果exist(‘pi’)的结果一样吗?

如果不一样,试解释为什么?

②圆周率pi是系统的默认常量,为什么会被改变为0?

实验二MATAB语言基础

一、实验目的

基本掌握MATLAB向量、矩阵、数组、的生成及其基本运算(区别数组运算和矩阵运算)、常用的数学函数。

了解字符串的操作。

二、实验内容

(1)向量的生成和运算。

(2)矩阵的创建、引用和运算。

(3)多维数组的创建和运算。

(4)字符串的操作。

三、实验步骤

1.向量的生成和运算

1)向量的生成

①直接输入法:

>>A=[2,3,4,5,6]%生成行向量

>>B=[1;2;3;4;5;]%生成列向量

②冒号表达输入法:

>>A=1:

2:

10,B=1:

10,C=10:

-1:

1

③函数法

Linspace()是线性等分函数,logspace()是对数等分函数。

>>A=linspace(1,10),B=linspace(1,30,10)

>>A=logspace(0,4,5)

练习:

使用logspace()创建1~4π的有10个元素的行向量。

2)向量的运算

①维数相同的行向量之间可以相加减,维数相同的列向量之间也可以相加减,标量可以与向量相乘出。

>>A=[12345],B=3:

7,

>>AT=A',BT=B',

>>E1=A+B,E2=A-B

>>F=AT-BT,

>>G1=3*A,G2=B/3,

②向量的点积与叉积的运算。

>>A=ones(1,10);B=(1:

10);BT=B';

>>E1=dot(A,B)

>>E2=A*BT

>>clear

>>A=1:

3,B=3:

5,

>>E=cross(A,B)

2.矩阵的创建、引用和运算

1)矩阵的创建和引用

矩阵是由m×n元素构成的矩形结构,行向量和列向量是矩阵的特殊情况形式。

①直接输入法:

>>A=[123;456]

>>B=[147

258

369]

>>A

(1)

>>A(4:

end)

>>B(:

1)

>>B(:

>>B(5)

②抽取法:

>>clear

>>A=[1234;5678;9101112;13141516]

>>B=A(1:

3,2:

3)

>>C=A([13],[24])

>>D=A([13;24])

③函数法:

>>clear

>>A=ones(3,4)

>>B=zeros(3)

>>C=eye(3,2)

>>D=magic(3)

④拼接法:

>>clear

>>A=ones(3,4)

>>B=zeros(3)

>>C=eye(4)

>>D=[AB]

>>F=[A;C]

⑤拼接函数和变形函数法:

>>clear

>>A=[01;11]

>>B=2*ones

(2)

>>cat(1,A,B,A)

>>cat(2,A,B,A)

>>repmat(A,2,2)

>>repmat(A,2)

练习:

使用函数法、拼接法、拼接函数法和变形函数法,按照要求创建以下矩阵:

A为3×4的全1矩阵、B为3×3的0矩阵、C为3×3的单位矩阵、D为3×3的魔方阵、E由C和D纵向拼接而成、F抽取E的2~5行元素生成、G由F经变形为3×4的矩阵而得、以G为子矩阵用复制函数(repmat)生成6×8的大矩阵H。

2)矩阵的运算

①矩阵加减、数乘和乘法

已知矩阵:

>>A=[12;3-1],B=[-10;12]

求A+B,2A,2A-3B,4B

②矩阵的逆矩阵

>>formatrat;A=[101;212;046]

>>A1=inv(A)

>>A*A1

③矩阵的除法

>>a=[121;314;221],b=[112],d=b'

>>c1=b*inv(a),c2=b/a

>>c3=inv(a)*d,c4=a\d

观察结果C1是否等于C2,C3是否等于C4?

如何取出记忆左除和右除?

斜杠向左边倾斜就是左除,向右边倾斜就是右除。

左除就是左边的数或矩阵作分母,右除就是右边的数或矩阵作分母。

练习:

用矩阵除法求下列方程组的解x=[x1;x2;x3];

3.多维数组的创建及运算

1)多维数组的创建

>>A1=[1,2,3;4,5,6;7,8,9];A2=reshape([10:

18],3,3)

>>T1(:

:

1)=ones(3);T1(:

:

2)=zeros(3)

>>T2=ones(3,3,2)

>>T3=cat(3,A1,A2),T4=repmat(A1,[1,1,2])

2)多维数组的运算

数组运算用小圆点加在运算符的前面表示,以区别矩阵的运算。

特点是两个数组相对应的元素进行运算。

>>A=[1:

6];B=ones(1,6);

>>C1=A+B,C2=A-B

>>C3=A.*B,C4=B./A,C5=A.\B

关系运算或逻辑运算的结果都是逻辑值。

>>A=[1:

6];B=ones(1,6);

>>I=A>3,C6=A(I)

>>A1=A-3,I2=A1&A

>>I3=~I

练习:

创建三维数组A,第一页为

,第二页为

,第三页为

,然后用rashape函数重排为数组B,B为3行、2列、2页。

4.字符串的操作

1)字符串的创建

>>S1='IlikeMATLAB'

>>S2='I''mastudent.'%注意这里用两个连续的单引号输出一个单引号

>>S3=[S2,'adn',S1]

2)求字符串长度

>>length(S1)

>>size(S1)

3)字符串与一维数组数值数组的相互转换

>>CS1=abs(S1)

>>CS2=double(S1)

>>char(CS2)

>>setstr(CS2)

练习:

用char()和向量生成的办法创建如下字符串AaBbCc…XxYyZz

提示:

A和a的ASCⅡ码分别是65,97

实验三MALTAB数值运算

一、实验目的

掌握MATLAB的数值运算及其运算中所用到的函数,掌握结构数组和细胞数组的操作。

二、实验内容

1)多项式运算。

2)多项式插值和拟合。

3)数值为积分。

4)结构数组和细胞数组。

三、实验步骤

1、多项式运算

1)多项式表示。

在MATLAB中,多项式表示成向量的形式。

如:

在MATLAB中表示为

>>s=[13-509]

2)多项式的加减法相当于向量的加减法,但必须注意阶次要相同。

如不同,低阶次的要补0。

如多项式

与多项式

相加。

>>s1=[002311]

>>s2=[12-547]

>>s3=s1+s2

3)多项式的乘、除法分别用函数conv和的deconv实现。

>>s1=[2311]

>>s2=[13-547]

>>s3=conv(s1,s2)

>>s4=deconv(s3,s1)

4)多项式求根用函数roots。

>>s1=[242]

>>roots(s1)

5)多项式求值用函数polyval

>>s1=[241-3]

>>polyval(s1,3)

>>x=1:

10

>>y=polyval(s1,x)

练习:

的“商”及余数。

>>s1=[101];s2=[13];s3=[11];

>>s4=[1021];

>>[q,r]=deconv(conv(conv(s1,s2),s3),s4)

2、多项式插值和拟合

有一组实验数据如附表1-1所示。

附表1-1

X

1

2

3

4

5

6

7

8

9

10

Y

16

32

70

142

260

436

682

1010

1432

1960

分别用拟合(二阶至三阶)和插值(线性和三次样条)的方法来估算X=9.5时Y的值。

以下是实现一阶拟合的语句。

>>x=1:

10

>>y=[163270142260436682101013421960]

>>p1=polyfit(x,y,1)%一阶拟合

>>y1=polyval(p1,9.5)%计算多项式P1在x=9.5的值

3、数值微积分

1)差分使用diff函数实现。

>>x=1:

2:

9

>>diff(x)

2)可以用因变量和自变量差分的结果相处得到数值微分。

>>x=linspace(0,2*pi,100);

>>y=sin(x);

>>plot(x,y)

>>y1=diff(y)./diff(x);

>>plot(x(1:

end-1),y1)

3)cumsum函数求累计积分,trapz函数用梯形法求定积分,即曲线的面积。

>>x=ones(1,10)

>>cumsum(x)

>>x=linspace(0,pi,100);

>>y=sin(x);

>>trapz(x,y)

>>p=cumsum(y);

>>p(100)*pi/(100-1)

练习:

图A1是瑞士地图,为了算出其国土面积,首先对地图作如下测量:

以由西向东方向为X轴,由南向北方向为Y轴,选择方便的原点,并将从最西边界点到最东边界点在X轴上的区间适当划分为若干段,在每个分点的Y方向测出南边界点和北边界点的Y坐标Y1和Y2,这样就得到表1,根据地图比例尺回到18mm相当于40Km,试由测量数据计算瑞士国土近似面积,与其精确值41228

比较。

地图的数据见附表1-2(单位mm)。

附表1-2

X

7

10.5

13

17.5

34

40.5

44.5

48

56

61

68.5

76.5

80.5

91

Y1

44

45

47

50

50

38

30

30

34

36

34

41

45

46

Y2

44

59

70

72

93

100

110

110

110

117

118

116

118

118

续表

X

96

101

104

106.5

111.5

118

123.5

136.5

142

146

150

157

158

Y1

43

37

33

28

32

65

55

54

52

50

66

66

68

Y2

121

124

121

121

121

116

122

83

81

82

86

85

68

提示:

由高等数学的知识,一条曲线的定积分是它与x轴所围成的面积,那么两条曲线所围成的面积可由两条曲线的定积分相减得到。

4、结构数组与细胞数组

1)机构数组的创建。

>>student.number='20050731001';

>>student.name='Jack';

>>student

(2).number='20050731002';

>>student

(2).name='Lucy';

>>student

或者用struct函数创建。

>>student=struct('number',{'001','002'},'name',{'Jack','Lucy'});

2)机构数组的操作。

>>student

(1).subject=[]%添加subject域并赋予空值

>>student

(1).score=[]

>>filednames(studeng)

>>fieldnames(studeng)

>>fieldnames(student)

>>getfield(student,{2},'name')

>>student=rmfield(student,'subject')%删除subject域

>>student=setfield(student,{1},'score',90);

>>student

(2).score=88;%比较和上一条语句是否效果一样

练习:

创建一结构数组stusorce,其域为:

No,Name,English,Math,Chinese,Total,Average。

结构数组的大小为2×2。

3)细胞数组的创建。

>>A={'Howareyou!

',ones(3);[12;34],{'cell'}};%直接创建

>>B(1,1)={'Helloworld'};%由各个细胞元素创建

>>B(1,2)={magic(3)};

>>B(2,1)={[1234]};

或者用cell函数先创建空的细胞数组,然后再给各个元素赋值

c=cell(1,2);

>>c(1,1)={'Helloworld'};

>>c(1,2)={magic(3)};

>>c(1,3)={[1234]};

4)细胞数组的操作。

>>ans1=A(1,1)

>>ans2=A(1,1)

>>whosans1ans2

>>celldisp(A)

>>a1=A{2,1}(1,2)

>>[a2a3]=deal(A{1:

2})

实验四MALTAB符号运算

一、实验目的

掌握符号变量和符号表达式的创建,掌握MALTAB的symbol工具箱的一些基本运用。

二、实验内容

1)符号变量、表达式、方程及函数的表示。

2)符号微积分运算。

3)符号表达式的操作和转换。

4)符号微分方程求解。

三、实验步骤

1、符号运算的引入

在数值运算中如果求

,则可以不断让的让x趋近0,一球的表达式趋近什么数,但终究不能令x=0,因为在数值运算中0不是能作除数的。

MATLAB的符号运算能解决这内问题。

输入如下命令:

>>f=sym('sin(pi*x)/x')

>>limit(f,'x',0)

2、符号常量、符号变量、符号表达式的创建

1)使用sym()创建

输入以下命令,观察Workspace中A、B、f是什么内性的数据,占用多少字节的内存空间。

>>A=sym('1')%符号常量

>>B=sym('x')%符号变量

>>f=sym('2*x^2+3*x-1')%符号表达式

>>clear

>>f1=sym('1+2')%有单引号,表示字符串

>>f2=sym(1+2)%无单引号

>>f2=sym(1+2)

>>f4=sym('2*x+3')%为什么出错

>>x=1

>>f4=sym(2*x+3)

通过看MATLAB的帮助可知,sym()的参数可以使字符串或是数值类型,无论是哪种类型都会生成符号类型数据。

2)使用syms创建

>>clear

>>symsxyz

>>x,y,z

>>f1=x^2+2*x+1

>>f2=exp(y)+exp(z)^2

>>f3=f1+f2

3、符号矩阵创建

>>symsa1a2a3a4

>>A=[a1a2;a3a4]

>>A

(1),A(3)

4、符号算术运算

1)符号向量相乘、相除

符号量相成和数值量相乘一样,分成矩阵乘和数组乘。

>>a=sym(5);b=sym(7);

>>c1=a*b

>>c2=a/b

>>a=sym(5);B=sym([345]);

>>C1=a*B,C2=a\B

>>symsab

>>A=[5a;b3];B=[2*ab;2*ba];

>>C1=A*B,C2=A.*B

>>C3=A\B,C4=A./B

2)符号数值任意精度控制和运算

任意精度的VPA运算可以使用命令digits(设定默认的精度)和vpa(对指定对象以新的精度进行计算)来实现。

>>a1=sym('2*sqrt(5)+pi')

>>a=sym('2*sqrt(5)+pi')

>>b=sym(2*sqrt(5)+pi)

>>di

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1