% 列車軌道耦合動力學(xué)模擬小程序1
% 列車軌道耦合動力學(xué)模擬小程序1
clear all;
% 參數(shù)設(shè)定
m = 20000;? ? ? ? ? % 列車質(zhì)量,單位 kg
c = 5000;? ? ? ? ? ?% 車輛阻尼系數(shù),單位 Ns/m
k = 100000;? ? ? ? ?% 車輛彈性系數(shù),單位 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