《计算机仿真技术》讲稿Word文档下载推荐.docx

上传人:b****5 文档编号:21568770 上传时间:2023-01-31 格式:DOCX 页数:49 大小:747.46KB
下载 相关 举报
《计算机仿真技术》讲稿Word文档下载推荐.docx_第1页
第1页 / 共49页
《计算机仿真技术》讲稿Word文档下载推荐.docx_第2页
第2页 / 共49页
《计算机仿真技术》讲稿Word文档下载推荐.docx_第3页
第3页 / 共49页
《计算机仿真技术》讲稿Word文档下载推荐.docx_第4页
第4页 / 共49页
《计算机仿真技术》讲稿Word文档下载推荐.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

《计算机仿真技术》讲稿Word文档下载推荐.docx

《《计算机仿真技术》讲稿Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《《计算机仿真技术》讲稿Word文档下载推荐.docx(49页珍藏版)》请在冰豆网上搜索。

《计算机仿真技术》讲稿Word文档下载推荐.docx

表达式的值。

解:

18+(5*sin(pi/6))/(2+cos(pi/6))

18.8723

【例1.3.2-3】简单矩阵

的输入步骤。

(1)在键盘上输入下列内容

A=[1,2,3;

4,5,6;

7,8,9]

(2)按【Enter】键,指令被执行。

(3)在指令执行后,MATLAB指令窗中将显示以下结果:

A=

123

456

789

其中>

为MATLAB的提示符,矩阵内容由方括号表示,方括号里边的分号表示矩阵的换行,逗号或空格表示同一行矩阵元素间的分隔。

矩阵的代数运算:

矩阵转置的表示A’;

矩阵加减法C=A+B,C=A-B;

矩阵乘法C=A*B;

矩阵除法:

C=B/A。

矩阵逻辑运算和比较运算。

【例1.3.2-4】矩阵的分行输入。

A=[1,2,3

4,5,6

【例1.3.2-5】指令的续行输入

S=1-1/2+1/3-1/4+...

1/5-1/6+1/7-1/8

S=

0.6345

三、数值、变量和表达式

MATLAB语言的常量

常量名

常量值

i

虚数单位

pi

圆周率π

j

虚数单位

inf

无穷大∞

MATLAB语言中的标点

运算符

名称

说明

冒号

有多种运算功能,可用于定义行向量、截取指定矩阵中的部分

=

等号

用于赋值

分号

不显示中间结果在命令窗口、区分矩阵行等

·

小数点

域访问等

%

百分号

用于注释语句

续行符号

续行

逗号

用于分隔矩阵列、函数参数分隔符等

单引号

字符串的标志符,或表示矩阵的转置运算及复数的共轭值等

[]

方括号

用于创建和表示矩阵

()

圆括号

用于函数调用和指定的运算顺序

{}

大括号

用于构成单元数组等

【例1.3.3-1】复数

表达,及计算

z1=3+4i;

z2=1+2*i;

z3=2*exp(i*pi/6);

z=z1*z2/z3

z=

0.3349+5.5801i

*MATLAB通常用十进制数来表示一个数,亦可用科学记数法来表示一个数。

另外,MATLAB语言还提供了复数的表达和运算功能。

复数可用下列语句产生:

c=a+i*b(或c=a+j*b)%将实部为a虚部为b的复数赋值给复变量c。

c=a*exp(i*b)(或c=a*exp(j*b))%将模为a幅角为b的复数赋值给复变量c。

MATLAB语言也提供了丰富的复数操作函数,其中包括real、imag、abs、angle等。

例:

z=2*exp(i*pi/3)

1.0000+1.7321i

real(z)%求复数z的实部

1.0000

imag(z)%求复数z的虚部

1.7321

abs(z)

2

angle(z)%函数angle表示以弧度来计算复数和相角

1.0472

【例1.3.3-2】求多项式

的根并计算

的全部方根。

(1)在MATLAB命令窗口中输入:

p=[3023];

rootp=roots(p)

rootp=

0.3911+1.0609i

0.3911-1.0609i

-0.7822

(2)先构造一个多项式

在MATLAB命令窗口中输入:

p=[1008];

R=roots(p)

R=

-2.0000

1.0000-1.7321i

1.M文件

M文件有两种形式:

脚本文件(ScriptFile)和函数文件(FunctionFile)。

这两种文件的扩展名均为“.m”。

(1)脚本文件

通过下面例子来了解脚本文件。

【例1.3.3-3】编写一个M文件绘制函数

在区间[-6,6]中的图形。

在MATLAB命令行下输入edit命令以打开M文件编辑器,输入以下程序:

x=-6:

0.1:

6;

leng=length(x);

form=1:

leng

ifx(m)<

=0

y(m)=sin(x(m));

elseifx(m)<

=3

y(m)=x(m);

else

y(m)=-x(m)+6;

end

end

plot(x,y,'

*'

),grid

将其存盘为file.m文件(该文件就是一个脚本文件),然后在MATLAB命令行下输入:

file

则生成如下图所示的函数曲线。

(2)函数文件

【例1.3.3-4】编写一个通用的M函数求取例例1.3.3-3中函数任意点的值,并绘制在[-6,6]中的图形。

(1)编写函数demofun并存储在同名M文件demofun.m中。

functiony=demofun(x)

(2)在命令行下输入下列命令:

x=-6:

y=demofun(x);

+'

也可得相同的图形。

四计算结果的图形表示

1、二维图形绘制基本语句

plot(t,y)

 

例2-21:

x=[-pi:

0.05:

pi];

y=sin(tan(x))-tan(sin(x));

%求函数值

plot(x,y)

在[0,2π]之间绘制正弦曲线(30个点)。

x=linspace(0,2*pi,30);

y=sin(x);

plot(x,y)

【例1.3.4-1】画出衰减振荡曲线

及其它的包络线

的取值范围是

(图1.3-3)

t=0:

pi/50:

4*pi;

y0=exp(-t/3);

y=exp(-t/3).*sin(3*t);

plot(t,y,'

-r'

t,y0,'

:

b'

t,-y0,'

grid

注:

冒号表达式是MATLAB中很有用的表达式,如

其中,s1为向量起始值,s2为步距,s3为最大值。

若没有s2,则默认值1。

*多重线的另一种画法是利用hold命令。

在已经画好的图形上,若设置holdon,MATLAB将把新的plot命令产生的图形画在原来的图形上。

而holdoff命令将结束这个过程。

例如:

x=linspace(0,2*pi,30);

holdon

z=cos(x);

plot(x,z)

holdoff

网格和标记:

y=sin(x);

z=cos(x);

plot(x,y,x,z);

grid

title('

sinxandcosx'

xlabel('

x'

ylabel('

y=sin(x)z=cos(x)'

(1)>

v2=0:

0.2:

pi%最终值为3而不是π

v2=

00.20000.40000.60000.80001.00001.20001.4000

1.60001.80002.00002.20002.40002.60002.80003.0000

(2)>

pi%默认步距为1

0123

其他二维图形绘制语句

绘制极坐标曲线

0.01:

r=sin(8*t/3)./(2-cos(3*t/2).^2);

polar(t,r);

axis('

square'

)%绘制极坐标并调整坐标系

6*pi;

比较上面两条曲线可知,应增大θ的取值范围,才能得到完整的极坐标曲线。

2、三维曲线绘制

格式:

plot3(x,y,z)

Plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xm,ym,zm,选项m)

其中“选项”和二维曲线绘制的完全一致。

另外:

stem3()可以绘制三维火柴杆型曲线,fill3()可以绘制三维的填充图形,bar3()可以绘制三维的直方图等。

试绘制参数方程

的三维曲线。

.1:

2*pi;

%构造t向量,注意下面的点运算

x=t.^3.*sin(3*t).*exp(-t);

y=t.^3.*cos(3*t).*exp(-t);

z=t.^2;

plot3(x,y,z),grid%三维曲线绘制

stem3(x,y,z),holdon

【例1.3.4-2】画出

所表示的三维曲面(图1.3-4)。

x=-8:

0.5:

8;

y=x'

;

X=ones(size(y))*x;

Y=y*ones(size(x));

R=sqrt(X.^2+Y.^2)+eps;

%<

5>

Z=sin(R)./R;

6>

surf(X,Y,Z);

colormap(cool)

xlabel('

),ylabel('

y'

),zlabel('

z'

第二章MATLAB语言程序设计基础

优点:

①简洁高效性

②科学运算功能

③绘图功能

④庞大的工具箱与模块集

⑤强大的动态系统仿真功能

2.1MATLAB程序设计语言基础

⏹MATLAB语言的变量名规则

⏹由一个字母引导,后面可以为其他字符

⏹区分大小写AbcABc

⏹有效MYvar12,MY_Var12和MyVar12_

⏹错误的变量名12MyVar,_MyVar12

⏹MATLAB的保留常量

⏹eps,i,j,i=sqrt(-1),pi,NaN,Inf

⏹lastwarn,lasterr

2.2解析结果的化简与变换

%从各种方法中自动选择最简格式

%化简并返回实际采用的化简方法

其他常用的化简函数:

numden(),sincos(),collect(),expand(),factor().

例2-6化简P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64)

symss;

P;

P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64)

simple(P)%经过一系列化简尝试,得出计算机认为最简形式

(s+3)^2*(s+2)*(s+1)*(s+4)^3

[a,m]=simple(P)%反回化简方法为因式分解方法

a=

m=

factor

expand(P)%多项式展开方法

ans=

s^7+21*s^6+185*s^5+883*s^4+2454*s^3+3944*s^2+3360*s+1152

变量替换函数subs(),其格式为

%单个变量替换

%多个变量替换

其中,f为原表达式。

将其中的

替换成

,生成新的表达式f1。

例2-7:

由表达式

替换例2-6中的s算子。

symszs;

P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64);

P1=subs(P,s,(z+1)/(z-1));

%变量替换

simple(P1)%化简

8*(2*z-1)^2*z*(3*z-1)*(5*z-3)^3/(z-1)^7

2.3MATLAB语言流程控制

2.3.1循环结构

1.for语句的一般结构

fori=v,循环结构体,end

for循环控制变量=循环次数设定%初始值:

步长:

终值

循环体

注意:

for循环可以嵌套使用。

2.while循环的基本结构

while(条件式),循环结构体,end

【例2-11】用循环结构求解

s=0;

fori=1:

100

s=s+i

i=1;

while(i<

=100)

s=s+i;

i=i+1;

end,[s]

5050

sum(1:

100)%借助MATLAB的sum函数对整个向量进行直接操作。

例2-12求解级数求和问题

tic,s=0;

100000

s=s+1/2^i+1/3^i;

end;

toc

elapsed_time=

22.9380

tic;

i=1:

100000;

s=sum(1./2.^i+1./3.^i);

52.4060

例2-13求满足

的最小m值。

m=0;

while(s<

=10000)

m=m+1;

s=s+m

end,[s,m]

10011141

2.3.2条件结构

2-14例2-13中的问题可以用for循环和if语句的相结合求解

s=0;

fori=1:

10000

s=s+1;

ifs>

1000,break,end

end,[s]

可见,这样的结构较烦琐,不如直接使用while结构直观、方便。

2.4函数编写与调试

⏹M-函数是MATLAB编程的主流方法

⏹除了M-函数外,还可以采用M-script文件

⏹M-script适合于小规模运算

【例2-15】若最大值不为10000,需修改程序

对m和10000值的设置,不适合于M-script

……

2.4.2可变输入输出个数

【例2-20】conv()可以计算两个多项式的积用varargin实现任意多个多项式的积

P=[12405];

Q=[12];

F=[123];

D=conv(conv(P,Q),F)%采用conv()函数,则需要嵌套调用

D=

16193645443530

第三章控制系统数学模型及其转换

一、用MATLAB求拉氏变换与反变换

1、用MATLAB计算拉氏变换

例1:

求函数f(t)为:

(1)1(t);

(2)At;

(3)t2;

(4)Aeαt的Laplace(拉氏)变换F(S)。

在命令窗口输入

symsstAalpha;

%syms符号函数指令

F=laplace(1,s)

F=laplace(A*t)

F=laplace(t^2)

F=laplace(A*exp(alpha*t))

执行结果为:

F=1/s

F=A/s^2

F=2/s^3

F=A/(s-alpha)

例2求函数f(t)为:

(1)cos(ωt);

(2)eαtsin(ωt);

(3)δ(t);

(4)A.t2+B.t3的Laplace(拉氏)变换F(S)。

在命令窗口输入:

symsstalphaomegaAB;

F=laplace(cos(omega*t))

F=laplace(exp(alpha*t)*sin(omega*t))

F=laplace('

Dirac(t)'

t,s)

F=laplace(A*t^2+B*t^3)

执行结果为:

F=s/(s^2+omega^2)

F=omega/((s-alpha)^2+omega^2)

F=1

F=2*A/s^3+6*B/s^4

在MATLAB中,单位脉冲函数δ(t)规定写成Dirac(t),而且第一个字母必须为大写;

单位阶跃函数写成Heaviside(t);

2利用留数将象函数表达式展开成部分分式

留数的概念在高等数学中学过,我们这里只讲留数部分分式展开

(1)若阶多项式A(S)不含重根,则以下展开称为部分分式展开

式中:

P1,P2,…Pn为极点;

部分分式的分子R1,R2,…Rn为留数;

k(s)为直接项。

(2)若阶多项式A(S)含m重根,那么相应部分则写为:

在高等数学中,留数R1,R2,…Rn通常用待定系数法来计算。

(3)计算留数MATLAB的函数命令

[RPK]=residue(B,A)

其中B与A是分子多项式B(S)分母多项式A(S)以降幂排列的多顶式系数项量。

具体应用见下面例子。

例3将象函数表达式展开成部分分式。

B=[12];

A=[143];

R=0.5000

0.5000

P=-3

-1

K=[]

即:

例4将象函数表达式展开成部分分式。

a=expand(s*(s+1)^2*(s+3))

a=s^4+5*s^3+7*s^2+3*s

A=[15730];

R=0.0833

-0.7500

-0.5000

0.6667

P=-3.0000

-1.0000

0

K=[]

3、用Laplace反变化求原函数

例5求象函数F(S)=1与,的原函数f(t)=L-1[F(S)]。

(1)在命令窗口输入

symsst;

f=ilaplace(1,t)

f=Dirac(t)

(2)解:

symssta

f=ilaplace(1/(s*(s+a)))

f=1/a*(1-exp(-a*t))

例6求象函数

的原函数f(t)=L-1[F(S)]。

(1)解:

F=s/((s+1)^2*(s+2));

f=ilaplace(F);

f=collect(f,exp(-t))%将f的函数归类简化

f=(-t+2)*exp(-t)-2*exp(-2*t)

(2)在命令窗口输入

F=(2*s+2)/(s^2+4*s+5);

f=ilaplace(F)

先得到结果再简化:

f=2*exp(-2*t)*cos(t)-2*exp(-2*t)*sin(t)

f=collect(f,exp(-2*t))

f=(2*cos(t)-2*sin(t))*exp(-2*t)

(3)解:

F=1/(s^3+21*s^2+120*s+100);

f=collect(f,exp(t)^10)

f=(-1/81-1/9*t)*exp(-10*t)+1/81*exp(-t)

二.连续系统的数学模型

1系统传递函数形式模型

传递函数分子、分母多项式系数向量可以分别定义如下:

用printsys,tf来建立传递函数的系统模型,其基本格式为

(注:

printsys只能在命令窗口中显示模型,不能将模型输入到workspace中)

已知系统的传递函数如下,利用MATLAB建立其相应的传递函数系统模型。

num=5*[203];

den=conv(conv(conv([100],[31]),conv([12],[12])),[5038]);

printsys(num,den,'

s'

运行结果:

num/den=

10s^2+15

--------------------------------------------------------------

15s^8+65s^7+89s^6+83s^5+152s^4+140s^3+32s^2

tf(num,den)

Transferfunction:

------------------------------------------------

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

当前位置:首页 > 经管营销 > 财务管理

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

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