📄 nonlinear differential equation.m
字号:
下面是单自由度的非线性微分方程的求解程序(分段函数)。将函数aadlx存放在一个目录下,在当前目录下命令窗中运行“运行以下内容即可得到结果:”以下的内容就可以了啊。可以画出动响应图和相图。
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -