实验指导书-实验2-PT
- 格式:pdf
- 大小:918.68 KB
- 文档页数:14
增加一些通用模块,最后可形成了如下的模型示意图:
最后的结果大致如下(结果会与你所选择参数不同而不同。XY GRAPH 注意调整 X,Y 的上下限) :
四 、 注 意 事项 ( 1) 边学习,边上机实验,并即时总结,分析
14
& − 8y & + 4y = 2 y ( 4 ) − 4 y ( 3) + 8 & y
在符号运算工具箱中,用 ’D4y’ 字符串表示 y 变量的四阶导数,所以可以用下面的语句定义并y; >>dsolve('D4y-4*D3y+8*D2y-8*Dy+4*y=2') 或者 >>syms y; >>X=dsolve('D4y-4*D3y+8*D2y-8*Dy+4*y=2') 类似地,对于微分方程:
μ: 1; x01=1; x02=-2
2)上面的 Van der Pol最终可建立如下的 Simulink模型, 请根据图示,尝试建立该模型:
5
尝试理解这个模型的设计思路。 (实验报告上可以不用体现) Q5 3)电子系统仿真 以下面的电路图为例,采用 SimPowerSystems 建立仿真模型:
[t,x]=ode23(方程函数名, tspan, x0, 选项, 附加参数) [t,x]=ode45(方程函数名, tspan, x0, 选项, 附加参数)
如: [t,x]=ode45(‘odefile1’,[0,2],[1]) Q1 1)请完成下面的常微分方程数值解例程 1 求解微分方程
dy = −y dx x ∈ [0,2], y 0 = 1
3. Matlab 下的仿真模块 -Simulink Simulink 是 The MathWorks 公司于 1990 年推出的产品,是用于 MATLAB 下建立系统框图和仿真的环境。 该环境刚推出时的名字叫 Simulab,由于其名字很类似于当时的一个很著名的语言——Simula 语言, 所以次年更 名为 Simulink。从名字上看,立即就能看出它能进行系统连接,即把一系列模块连接起来,构成复杂的系统模 型。正是由于它的这两大功能和特色,使得它成为仿真领域首选的计算机环境。 1) Simulink 模块库简介 在 Matlab 命令窗口下给出 simulink 命令,或单击 MATLAB 工具栏中的 Simulink 图标,则将打开 Simulink 模 型库窗口,如下图所示。
图中:R1=0.428 欧;R2=1.551 欧;R3=1.803 欧 L1=L2=1.926mH;L3=31.2mH 电源:220V, 50H 注:RLC 分支的参数设置: 串联 RLC 分支
并联 RLC 分支
元件
类型 单个电阻 单个电感 单个电容
电阻数值 R 0 0
电感数值 0 L 0
电容数值 inf inf C
& & + µ ( y 2 − 1) y &+y=0 y
>>syms y mu; >>X=dsolve('D2y+mu*(y^2-1)*Dy+y=0') 2. 常微分方程的数值求解方法: 课堂上主要讲解微分方程数值解法中的欧拉法、改进的欧拉法、龙格-库塔法。MATLAB 提供了两个常 微分方程求解函数 ode32()和 ode45()。这两个函数的调用格式分别分:
dy = −y ,该方程可用 Simulink 建立如下图所示的仿真模型来求解,请根据图示建立该模型。 dx x ∈ [0,2], y 0 = 1
新建一个模型
3
将这些组件拖放到 Model 中, 用 Ctrl+鼠标左键可以将选中的图形连起来; 鼠标移动某连线上,按住 Ctrl+鼠标右键,可以为连接增加一下分支。 采用这些模拟模块,绘制出如下的图形:
2
整个 Simulink 模块库是由各个模块组构成,故该界面又称为模型库浏览器。可以看出,在标准的 Simulink 模块库中, 包括信号源模块组(Source)、 输出池模块线 (Sinks) 、 连续模块组 (Continues) 、 离散模块组 (Discrete) 、 数学运算模块组(Math) 、非线性模块组(Nonlinear) 、函数与表格模块组(Function & Tables) 、信号与系统模 块组(Signals & Systems)和子系统模块组(Subsystem)几部分,此外还有和各个工具箱与模块集之间的联系 构成的子模块组,用户还可以将自己编写的模块组挂靠到整个模型库浏览器下。 练习:请浏览并熟悉各模块的基本内容。 Q3 2) Simulink 模型的建立 在 Simulink 环境下,编辑模型的一般过程是:首先打开一个空白的编辑窗口,然后将模块库中模块复制 到编辑窗口中,并依照给定的框图修改编辑窗口中的模块参数,再将各个模块按照给定的框图连接起来。这样 就可以对整个模型进行仿真了。 (1)用 Simulink 建立微分方程模型
注: 细长杆三个方向的转动惯量为:
则 T=[1250 0 0; 0 2.08e6 0; 0 0 2.08e6] 在命令行输入: >> T=[1250 0 0; 0 2.08e6 0; 0 0 2.08e6]; 新建一个 Simulink 模型
将 Groud, Body, Revolute 两两相连,如下所示:
实验 2
一、 实验目的
常规系统模拟实验
为配合课堂教学中连续系统模拟和离散系统模拟部分内容的教学,通过 MATLAB 软件的相关模块,学习 用 MATLAB 来实现连续系统模拟中微分方程求解、电路系统模拟、机械系统模拟等内容。
二、 实验仪器设备
MATLAB 软件,计算机
三、 实验步骤
1. 常微分方程的解析求解方法 在 MATLAB 的符号运算工具箱下,微分方程求解可以由 dsolve()函数来完成。 请上机练习下面的语句,根据帮助文件,理解函数的意义 对于微分方程:
,可以看到在 Workspace 中新增加了两个模拟结果数组: tout,yout.
自己设计相关语句,绘制误差曲线;
Q4 1)自己编写程序,用程序的方式求解下面的方程; Van der Pol 方程的 Simulink 模型
&1 = x2 x &2 = − µ x12 − 1 x2 − x1 x
(
)
11
双击 Gound: 设置:Location:[ 3 4 5] 双击 Body 该参数将被输入到如下的物体参数设置界面中:
模拟参数设置:
12
点击运行:
之后,再增加一些测量模块,以获取一些运动特性 双击 Revolve ,打开属性窗口
双击 Joint Sensor,打开 Sensor 的属性窗口,可以选择二个参数输入。并去掉如下选择:
最右边的图是双击某一个 RLC 分支后的属性设置图。
9
双击 Multimeter:
10
4)机构系统仿真 如图所示,有一根均质细长杆,一端固定在(3m,4m,5m)坐标上,长度为 1m, 其密度及质量为: ρ= 7.93 gm/cc (grams per cubic centimeter). m = ρ *pi* r2L = 2490gm(grams) 要求根据图示,利用 SimMechanics 中的模块建立仿真模型:
电阻数值 R inf inf
电感数值 inf L inf
电容数值 0 0 C
6
4个
22 50
(0) (0) (inf)
7
把 powergui 模块拖放到模型的任何位置。 建立模型后,根据图示,尝试采用如下两种方式获取模拟结果:
点击运行后,要命令行输入 plot(tout,yout)
8
如果曲线很密,可以调整停止时间。 第二种方式:
&1 (t ) = −8 x1 (t ) / 3 + x2 (t ) x3 (t ) x &2 (t ) = −10 x2 (t ) + 10 x3 (t ) x x &3 (t ) = − x1 (t ) x2 (t ) + 28 x2 (t ) − x3 (t )
x1(0)=x2(0)=0, x3 (0)=ε 这里ε为机器上可以识别的小常数,例如ε=10-10 (1) 新建一个 M 文件 function xdot = lorenzeq(t,x) xdot=[-8/3*x(1)+x(2)*x(3); -10*x(2)+10*x(3); -x(1)*x(2)+28*x(2)-x(3)]; 将 M 文件保存为文件, 请思考应保存为什么文件名? (2) 在命令窗口输入以下命令,并观察结果 >>t_final=100; x0=[0;0;1e-10]; >> [t,x]=ode45('lorenzeq',[0,t_final],x0); >>plot(t,x); >>figure; plot3(x(:,1),x(:,2),x(:,3)); >>axis([10 40 -20 20 -20 20])
(1) 新建一个 M 文件 function yout=odefile1(xin,yin) yout=-yin; 将 M 文件保存为文件“odefile1.m” (2) 在命令窗口输入以下命令,并观察结果
1
>>[t,x]=ode45(‘odefile1’,[0,2],[1]); >>xreal=exp(-t); >>xerror=xreal-x; >>plot(t,xerror); Q2 2) 常微分方程数值解例程 2 Lorenz 模型的状态方程的例子:
双击积分器:
,打开: