% 列车轨道耦合动力学模拟小程序1
% 列车轨道耦合动力学模拟小程序1
clear all;
% 参数设定
m = 20000; % 列车质量,单位 kg
c = 5000; % 车辆阻尼系数,单位 Ns/m
k = 100000; % 车辆弹性系数,单位 N/m
L = 50; % 列车长度,单位 m
v = 20; % 列车速度,单位 m/s
x0 = 0; % 车辆初始位置,单位 m
xdot0 = 1; % 车辆初始速度,单位 m/s
tspan = [0 100]; % 时间范围,单位 s
% 求解微分方程
options = odeset('RelTol',1e-6,'AbsTol',1e-9);
[t,x] = ode45(@train_eq,tspan,[x0 xdot0],options,m,c,k,L,v);
% 绘制车辆运动轨迹
figure;
plot(x(:,1),t,'LineWidth',2);
xlabel('Position (m)','FontSize',14);
ylabel('Time (s)','FontSize',14);
title('Train Motion','FontSize',16);
% 定义微分方程
function [xdot] = train_eq(t,x,m,c,k,L,v)
% 列车位置和速度
pos = x(1);
vel = x(2);
% 计算轨道力和车辆力
F_track = k*pos/L;
F_vehicle = -c*vel - k*pos;
% 计算加速度
acc = (F_track + F_vehicle)/m;
% 车辆速度和位置的一阶微分方程
xdot(1) = vel;
xdot(2) = acc;
xdot = xdot';
end