建立系统微分方程一般步骤

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档