Simulink与微分方程组数解

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

0
ddYt
0 0
an
1 0 0 an1
0 0 y0 0 y0
...
0

y1
0,Y
y1

... 1 ... ... ...
... a1yn1 b
yn1
例: 求微分方程yy2)y+ y= 0数值解,初值 y=1,y =1
MTALAB6.5 分子多项式
系数
分母多项式系数
显示方向设置(FORMAT—FLIP(ROTATE):
分子多项 式定义
MATLAB 7.1
分母多项式 定义
(4)用和、乘、分支、建立复杂模型,和,积用 MATH里的函数,分支直接从输入箭头拉直线到输出 线,使两条线相交。
信号的+,-,比例放 大在Math Operation项 内
10 i 00
C 01 ,Y ,D 00 ,Y C X D u
(1)根据上述方程定义矩阵A,B,C,D。
(2)设置矩阵,双击选项,出现设置菜单。
将默认值1修改成矩 阵常数或已经定义好
的矩阵变量
(3)设置输入,输出
设置输入值, 可以是向量 常数或是已 经定义的向
输入2
输入 1
(2)定义输入输出 (3)全选模型,并选Edit---Create Subsystem
(4)保存子系统到一文件,以后打开该文件显示如下
输出
输入 点
子系统名字, 可修改
(5)引用子系统方法 (A)打开保存子系统的文件,出现:
(B)修改输入输出,构建新计算模型 (C)计算
• 数值积分计算
状态模型:
dX AXBu.....(1)此为状态方程,X为状态,U为输入 dt Y CXDu........(2)此为输出方程,Y为输出,其中 X为维数为N的向量,A为NN的矩阵,B为NM的矩阵 U为维数为M的向量,Y为维数为r的向量,C为rN的矩 阵,D为rM的矩阵.
例:直流电机模型
Function y=tuoyuan(t) X=sin(t); Y=1./(1-0.5.*x.*x).^5;
面积分(二重积分)函数dblquad()
用法:dblquad(‘name’,xmin,xmax,ymin,ymax) Name:函数名 xmin,xmax,ymin,ymax积分区域
例: function out =f2(x,y) out = y*sin(x) + x*cos(y); v=dblquad(‘f2’,0,1,0,5);
• 微分方程数值求解
1.多元一次微分方程组数值解
d y1 dt

f1(t, y1, y 2 ,..., y n )
dy2 dt

f2 (t, y1, y 2 ,..., y n )
...
dyn dt

fn (t, y1, y 2 ,..., y n )
计算步骤如下: (1)定义函数 例如: function df=f1(t,y) df=[y(1)-y(2); y(1)+y(2)]
Ld d ti U R i C 1 .......Jd d tC 2 i M
状态:X
i




,
A




R L

C2 J

C1 L


0
1
B


L
0
0 1
J



,
u


U M

,d X dt

AX
Bu
如果输出电流和转速,则输出方程为:
(7)按SIMULATION—START开始仿真计算。 (8)点击SCOPE观察计算结果,或者查看WORKSPACE, 观看变量值,根据需要保存绘制计算值。
SCOPE:
•例2
已知直流发动机的控制系统的微分方程为:
Ldi dt
URi
C1
d
J dt C2iM
U为直流电机输入电压,L为直流电机的电感,R为 直流电机的电枢电阻,C1为电势常数,C2为力矩常 数,M为外部负载。其中
L16mH,R0.5,J 0.03kgm2,C1 1.3,C2 1.6, M107Nm,U220V
方法1:Laplace变换简化
L siU R iC 1 (L sR )iU C 1
JsC 2iM
根据第1个方程,可得:
电流i
U
C 1
从Math operation选放大器,加法器, 比例放大,数
量变量
(4)设置计算选项,开始计算,并选取计算结果 电流计算结果
250
200
150
100
50
0
0
1
2
3
4
5
6
7
8
9 10
转速计算结果:
250
200
150
100
50
0
-50
0
1
2
3
4
5
6
7
8
9 10
•子系统设计
可将模型保存为子系统,求解其他问题时如果要引 用该模型,可直接打开复制。
子系统模型建立步骤: (1)定义模型
dy dt

y1
d y1 dt

[ y

(1
y 2 ) y1 ]
Function df=f1(t,y) df=[y(1);-y(1)-(1-y(1)^2)*y(2)];
[t s]=ode45(‘f1’,[0, 10],[1;1]);
y(1,2)表示第2个变量在t的第1个计算点的值
(3)绘制曲线 Plot(t,y(:,1))
[T,Y] = solver(odefun,tspan,y0) [T,Y] = solver(odefun,tspan,y0,options) [T,Y,TE,YE,IE] = solver(odefun,tspan,y0,options) sol = solver(odefun,[t0 tf],y0...) Solver: ode45, ode113, ode15s, ode23s, ode23t, ode23tb
2百度文库
sin(x)dx cos(x) |02 1 cos(2)
0
1
1
dx
0 1 a sin2 (x)
(1)定义函数
菜单:File-new-M_file 进入编辑器
写程序: function f=f1(t) f=sin(t);
函数编写格式: Function 返回变量=函数名(参数) …函数的matlab命令(命令以‘;’结束) 返回变量=函数值 (最后一条命令必须将函数值赋给返回变量)
(2)调用函数
第1个参数为自变量 第2个参数为向量变量
返回值为列向量
第1各参数为函数名 第2个参数为积分范围 第3个参数为变量初值
[t,y]=ode45(‘name’,[tmin,tmax],[y0;y1;…])
t为保存自变量的计算点向量变量,y保存计算点处各变
量值,为矩阵.
y(:,1)表示第1个变量在t各计算点的值,
150
100
50
0
0
1
2
3
4
5
6
7
8
9 10
绘制转速曲线
350
300
250
200
150
100
50
0
-50
-100
0
1
2
3
4
5
6
7
8
9 10
方法2:根据微分方程直接利用积分,微分, 求和绘制系统模型。
Ld d ti U R i C 1 .......Jd d tC 2 i M
积分
写好程序后保存到一文件,文件名一般与函数名相同 (2)调用函数quad(‘name’,tmin,tmax)求数值积分 Name:函数名,tmin,tmax,积分下限,上限 例:quad(‘f1’,0,pi/2)
NOTE:函数内*,/一般采用.*,./
例 : 编 写 1
函 数
10.5*sin2(x)
第1个方程
输入电 压U
转速 电流
第2个方程:
J
d
dt
C2i
M
负载
电流
设置输出点:
输出转速


输出点 2
输出点1
电流计算结果
250
200
150
100
50
0
0
1
2
3
4
5
6
7
8
9 10
转速计算结果:
250
200
150
100
50
0
-50
0
1
2
3
4
5
6
7
8
9 10
方法3:
方法2需要对每一项求和,求积,操作复杂,可直接 利用微分方程也即状态模型来计算动态响应。
把机械运动方程加进去。
据可以是具体
数值,也可以
是变量
转速
积分
外部负载
定义输出:从sink选输出(out)
示波器看输出
定义输出
输出转 速
输出电 流
计算选项设置: 设置微分方程求解方法,计算时间,输出项数。
输出变量名,一 般不改变
保存输出 变量个数
计算结果矩阵 下标序号每隔
1输出
按Simulation----Start开始计算。 查看计算结果,或用plot(tout,yout(:,1))等命令绘制 计算结果
2. 一元高次微分方程数值求解
y(n)a 1(t,y,y',y'',...y(n 1))y(n 1)... an(t,y,y',y'',...y(n 1))yb(t,y,y',y'',...y(n 1))
dy dt

y1
d y1 dt

y2
...
d y n2 dt

y n1
d y d n t 1 b ( t,y ,y 1 ,...,y n 1 ) a 1 y n 1 a 2 y n 2 ... a n y 令y0 y
信号加:
可将+改成-, 或增加+,表 示多个信号

(5)定义输入、输出,在源(SOURCE)选择输入信 号源类型,在SINK选择输出类型,一般设置成SCOPE (示波器观察)。
(6)设置计算参数,按SIMULATION—PARAMETER。
计算开始时 间
计算结束时 间
计算方法
MATLAB6.5
非刚性矩阵:ode45,ode113
刚性矩阵: ode15s, ode23s, ode23t, ode23tb 刚性矩阵(条件数很大)的矩阵
例 : 求 微 分 方 程 组 d d y t1y1y2,d d yt2y1y2的 数 值 解 , 已 知 y1(0)0,y2(0)0
Function dy=f2(t,y) dy=[y(1)+y(2);y(1)-y(2)];
• Simulink操作步骤
(1)执行File-New-Model菜单
MATLAB7.1
(2)点击库窗口SIMULINK—CONTNUOUS,选择建立模 型方式:传递函数形式(TRANSFER FCN), 或状态方程模式(STATE-SPACE),一般可选传递函 数,并拉入模型窗口。
(3)双击模型,修改参数,按OK或APPLY。可能的话可 以重新命名新名字,或改变显示方向。
第五章 Simulink与微分方程组数解
• Simulink简介
控制系统的运动规律用微分方程表示,其动态响应可 用计算机数值求解,并进而求出系统的超调量,恢复 时间等性能参数。
Matlab任意微分方程均可用函数ODE45数值求解,同 时它还提供了另外一种更直接的图示法对控制系统进 行仿真计算,即利用Simulink求线性控制系统的动态 响应。
相关文档
最新文档