|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
下面是单自由度的非线性微分方程的求解程序(分段函数)。多自由度的正在努力中,希望能和大家多多交流!
非线性微分方程表达式的函数:
- function vprime= aadlx(t,x)
- % x(1)为位移 x(2)为速度 分段函数
- if x(1)>1
- vprime=[x(2);1.1+0.1*cos(0.5*t)+0.075*sin(0.5*t)-0.02*x(2)-(1+0.1*cos(0.5*t))*x(1)];
- elseif -1<=x(1)<=1
- vprime=[x(2);0.1+0.075*sin(0.5*t)-0.02*x(2)];
- else
- vprime=[x(2);-0.9-0.1*cos(0.5*t)+0.075*sin(0.5*t)-0.02*x(2)-(1+0.1*cos(0.5*t))*x(1)];
- end
- 运行以下内容即可得到结果:
- options=odeset('RelTol',1e-4,'AbsTol',[1e-6]);
- tspan=[0,900];
- [t,x]=ode45('aadlx',tspan,[0;0],options);
- u1=x(:,1);
- u2=x(:,2);
- figure('unit','normalized','color',[1,1,1]);
- h=get(gcf);
- set(gcf,'Name','1','numbertitle','off');
- plot(t,u1)
- title('图1')
- xlabel('时间t');ylabel('位移x');
- grid on
- figure('unit','normalized','color',[1,1,1]);
- h=get(gcf);
- set(gcf,'Name','2','numbertitle','off');
- plot(u1,u2)
- title('图2')
- xlabel('位移x');ylabel('速度dx');
- grid on
复制代码
[ 本帖最后由 suffer 于 2006-10-9 20:02 编辑 ] |
评分
-
1
查看全部评分
-
|