MATLAB微分方程几种求解方法及程序.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:6 大小:49KB 金币:14 举报 版权申诉
预览加载中,请您耐心等待几秒...

MATLAB微分方程几种求解方法及程序.doc

MATLAB微分方程几种求解方法及程序.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

14 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第五章控制系统仿真§5.2微分方程求解方法以一个自由振动系统实例为例进行讨论。如下图1所示弹簧-阻尼系统,参数如下:M=5kg,b=1N.s/m,k=2N/m,F=1NxbMFk图1弹簧-阻尼系统假设初始条件为:时,将m拉向右方,忽略小车的摩擦阻力,求系统的响应。)用常微分方程的数值求解函数求解包括ode45、ode23、ode113、ode15s、ode23s等。wffc1.mmyfun1.m一、常微分方程的数值求解函数ode45求解解:系统方程为这是一个单变量二阶常微分方程。将上式写成一个一阶方程组的形式,这是函数ode45调用规定的格式。令:(位移)(速度)上式可表示成:下面就可以进行程序的编制。%写出函数文件myfun1.mfunctionxdot=myfun1(t,x)xdot=[x(2);1-10*x(2)-20*x(1)];%主程序wffc1.mt=[030];x0=[0;0];[tt,xx]=ode45(@myfun1,t,x0);plot(tt,yy(:,1),':b',tt,yy(:,2),'-r')legend('位移','速度')title('微分方程的解x(t)')二、方法2:%用传递函数编程求解ksys1.mnum=1;den=[512];%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)';[mp]=bode(num,den,w);figure(6)subplot(211);semilogx(w,20*log10(m));gridonsubplot(212);semilogx(w,p)gridon[gm,pm,wpc,wgc]=margin(sys)figure(7)margin(sys)figure(8)nyquist(sys)figure(9)nichols(sys)方法3:%主程序wffc1.mt=[030];x0=[0;0];[tt,yy]=ode45(@myfun1,t,x0);figure(1)plot(tt,yy(:,1),':b',tt,yy(:,2),'-r')holdonplot(tt,0.2-0.2*yy(:,2)-0.4*yy(:,1),'-.k')legend('位移','速度','加速度')title('微分方程的解')figure(2)plot(yy(:,1),yy(:,2))title('平面相轨迹')%写出函数文件myfun1.mfunctionxdot=myfun1(t,x)xdot=[x(2);0.2-0.2*x(2)-0.4*x(1)];