ode45求解多自由度动力学方程实例

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

Ode45函数调用形式如下:

[T,Y]=ode45(odefun,tspan,y0)

相关参数介绍如下:参数名称

参数说明odefun

用于存放待求解的方程的m 文件名,方程必须用y’=f(t,y)的形式存放tspan

指定自变量范围的向量,通常用[t0,tf]指定y0函数的边界条件,即y0=y(t0),对于方程组,y0也可以是向量

例:若一三自由度多体动力学系统方程如下:

1121221231233232323 1.510050 2.0sin(3.754t)

2 1.5

3 1.55010050 2.0cos(2.2t)

2 1.5350100 1.0sin(2.8t)x x x x x x x x x x x x x x x x x +-+-=-+--+-=-++-+=

初始条件:

1020301020301

1x x x x x x ======

由于方程必须用y’=f(t,y)的形式存放,因此需要对方程组进行降阶处理。令11

3253214263y x y x y x y x y x y x ======

则方程组可化为:

12

2241334

424613556

646350.5*(3 1.510050 2.0sin(3.754t))

0.5*(1.53 1.55010050 2.0cos(2.2t))

0.5*(1.5350100 1.0sin(2.8t))y y y y y y y y y y y y y y y y y y y y y y y ==-+-++==-++-+-==--+-+

因此建立M函数文件来定义此方程组如下:

function dy=func(t,y)

dy=zeros(6,1);

dy(1)=y(2);

dy(2)=0.5*(-3*y(2)+1.5*y(4)-100*y(1)+50*y(3)+2.0*sin(3.754*t));

dy(3)=y(4);

dy(4)=0.5*(1.5*y(2)-3*y(4)+1.5*y(6)+50*y(1)-100*y(3)+50*y(5)-2.0*cos(2.2*t)); dy(5)=y(6);

dy(6)=0.5*(-1.5*y(4)-3*y(6)+50*y(3)-100*y(5)+1.0*sin(2.8*t));

end

在matlab命令窗口里输入一下命令:

y0=[111111];

tspan=[030];

[t,y]=ode45(@func,tspan,y0);

figure(1)

plot(t,y(:,1),t,y(:,3),t,y(:,5));

legend('x1','x2','x3');

xlabel('时间(s)','FontSize',10);

ylabel('振动位移曲线','FontSize',10);

figure(2)

plot(t,y(:,2),t,y(:,4),t,y(:,6));

legend('v1','v2','v3');

xlabel('时间(s)','FontSize',10);

ylabel(‘振动速度曲线’,’FontSize’,10);

运行结果:

0510********-1-0.5

0.51

1.5

时间(s )振动位移曲线

0510********-6-5

-4

-3

-2-1012

3

时间(s )振动速度曲

线

相关文档
最新文档