⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nonlinear differential equation.m

📁 这是单自由度的非线性微分方程的求解程序(分段函数)
💻 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 + -