当前位置:文档之家› 微分方程几种求解方法

微分方程几种求解方法

第五章 控制系统仿真
§5.2 微分方程求解方法
以一个自由振动系统实例为例进行讨论。

如下图1所示弹簧-阻尼系统,参数如下: M=5 kg, b=1 N.s/m, k=2 N/m, F=1N
F
图1 弹簧-阻尼系统
假设初始条件为:00=t 时,将m 拉向右方,忽略小车的摩擦阻力,m x 0)0(= s m x /0)0(=•
求系统的响应。

)用常微分方程的数值求解函数求解包括ode45、
ode23、ode113、ode15s 、ode23s 等。

wffc1.m myfun1.m
一、常微分方程的数值求解函数ode45求解 解:系统方程为 F kx x b x m =++•••
这是一个单变量二阶常微分方程。

将上式写成一个一阶方程组的形式,这是函数ode45调用规定的格式。

令: x x =)1( (位移)
)1()2(•
•==x x x (速度) 上式可表示成:
⎥⎦⎤⎢⎣⎡--=⎥⎦⎤⎢⎣⎡=⎥⎥⎦
⎤⎢⎢⎣⎡••)1(*4.0)2(*2.02.0)2()2()2()1(x x x x x x x && 下面就可以进行程序的编制。

%写出函数文件myfun1.m
function xdot=myfun1(t,x)
xdot=[x(2);0.2-0.2*x(2)-0.4*x(1)];
% 主程序wffc1.m
t=[0 30];
x0=[0;0];
[tt,yy]=ode45(@myfun1,t,x0);
plot(tt,yy(:,1),':b',tt,yy(:,2),'-r') hold on
plot(tt,0.2-0.2*yy(:,2)-0.4*yy(:,1),'-k') legend('位移','速度',’加速度’)
title('微分方程的解 x(t)') xlabel(‘时间t ’)
ylabel(‘输出’)
二、方法2:
F kx x b x m =++•
••
251)()()(2++==s s s F s X s G
%用传递函数编程求解ksys1.m num=1;
den=[5 1 2];
%printsys(num,den)
%t=0:0.1:10;
sys=tf(num,den);
figure(1)
step(sys)
figure(2)
impulse(sys)
figure(3)
t=[0:0.1:10]';
ramp=t;
lsim(sys,ramp,t);
figure(4)
tt=size(t);
noise=rand(tt,1);
lsim(sys,noise,t)
figure(5)
yy=0.1*t.^2;
lsim(num,den,yy,t)
w=logspace(-1,1,100)'; figure(6)
bode(num,den,w)
grid on
[m p]=bode(num,den,w); [gm,pm,wpc,wgc]=margin(sys) figure(7)
margin(sys)
figure(8)
nyquist(sys)
figure(9)
nichols(sys)
方法3:Simulink 中传递函数模块求解
方法4:Simulink 中积分模块求解 F kx x b x m =++•••
125=++•••x x x
x x x 4.02.02.0--=•
•• x''x'x u(t)x_t
To Workspace Scope 1s Int21s Int1
0.2
Gs
0.4
G20.2
G1。

相关主题