建立系统微分方程一般步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
建立系统微分方程一般步骤:
(1)将系统划分为多个环节,确定各环节的输入及输出信号,每个环节都可考虑写一个方程;
(2)根据物理定律或通过实验等方法得出物理规律,列出各环节的原始方程式,并考虑适当简化、线性化;
(3)将各环节方程式联立,消去中间变量,最后得出只含有输入变量、输出变量以及参量的系统方程式。
建立LRC 电路的微分方程式
用MATLAB 语言编程实现仿真的主要步骤是调用
MATLAB 中的ODE (Ordinary Differential Equation,常微分方程)解函数。MATLAB 提供的常用ODE 解函数如下:
• ode45 此算法被推荐为首选算法;
• ode23 这是一个比ode45低阶的算法;
• ode113 用于更高阶或大的标量计算;
• ode23t 用于解决难度适中的问题;
• ode23s 用于解决难度较大的问题;
• ode15s 与ode23相同,但要求的精度更高;
• ode23tb 用于解决难度较大的问题。
这些ODE 解函数的调用格式基本相同。例如,ode45的基本调用格式为
[t , x]=ode45('方程函数名', tspan , x0, tol)
其中,方程函数名为描述系统状态方程的M 函数名称, tspan 一般为仿真时间范围(例如,取 tspan=[t0,tf],t0为起始计算时间,tf 为终止计算时间); x0为系统状态变量初值,应使该向量元素个数等于系统状态变量的个数;tol 用来指定的精度,其默认值为10-3(即0.1%的相对误差),一般应用中可以直接采用默认值。函数返回两个结果t 向量和x 阵。由于计算中采用了步长自动控制策略,因而t 向量不一定是等间隔。但是,仿真结果可以用plot (t,x )指令绘制出来。
例:电路如下图所示,Ω=6.1R ,L=2.1H ,C=0.3F ,初始状态是电感电流为零,电容电压为0.2V ,t=0时接入1.5V 的电压,求s t 100<<时)(t i ,)(0t u 的值,并画出电流和电容电压的关系曲线。
Example :Circuit is shown below, Ω=6.1R ,L=2.1H ,C=0.3F ,Initial condition: inductance current is 0, capacitance voltage is 0.2V. Access 1.5V voltage when t=0, Evaluate )(t i ,)(0t u
)(0t u
R L
when s t 100<<, and plot the curve between current and capacitance voltage.
解:(1)根据基尔霍夫电压定律、电流定律得到系统的原始微分方程为 )()()()(0t u t u t Ri dt
t di L i =++ dt
t du C t i )()(0= (2)消去中间变量)(t i ,得电路微分方程:
)()()()(0002t u t u dt
t du RC dt t u d LC i =++ (3)划高阶微分方程为一阶微分方程:
设)(10t u x =,)(20
t u x '= 则有
⎪⎩
⎪⎨⎧--='=')21)((1221RCx x t u LC x x x i
(4)编程
系统微分方程描述函数的程序:(rlcsys .m )
function dx=rlcsys(t,x)
dx=zeros(2,1);
ui=1.5;
R=1.6;
L=2.1;
C=0.3;
)(0t u
R L
dx(1)=x(2);
dx(2)=1/(L*C)*(ui-x(1)-R*C*x(2));
主程序(jierlc.m)
clear
clc
close
t0=0;
tfinal=10;
x0=[0.2 0];
[t,x]=ode45(@rlcsys,[t0 tfinal],x0); C=0.3;
cfu=x(:,1);%C function
ifu=C*x(:,2);%i function
figure(1)
subplot(211)
plot(t,cfu)
title('C/V')
xlabel('time/s')
grid
subplot(212)
plot(t,ifu)
title('L/A')
xlabel('time/s')
grid
figure(2)
plot(cfu,ifu)
grid
title('C 、L relation')
xlabel('C')
ylabel('L')
1、假设著名的Lorenz 模型的状态方程表示为
⎪⎪⎩
⎪⎪⎨⎧-+-=+-=+-=∙
∙
∙
)()(28)()()()
(10)(10)()()(3/)(8)(322133223211t x t x t x t x t x t x t x t x t x t x t x t x
若令其初值为0)()(21==t x t x ,10310)(-=t x ,解方程。(采用ode45()函数) Lorenz model state equation is shown below:
⎪⎪⎩
⎪⎪⎨⎧-+-=+-=+-=∙
∙
∙
)()(28)()()()
(10)(10)()()(3/)(8)(322133223211t x t x t x t x t x t x t x t x t x t x t x t x
Assume that initial values are 0)()(21==t x t x ,10310)(-=t x , please solve the equation.(Note: ode45())
程序:(lorenz.m )
function dx=lorenz(t,x)
dx=zeros(3,1);
dx(1)=-8*x(1)/3+x(2)*x(3);