用matlab求出带有时域的ode

img

M C g 均为常数,希望用MATLAB 中的ode45求解并得出结论,希望附带代码,多谢!!

因为你的p(t)函数未知,所以这里只能假设为一个正弦函数,你复制代码的时候顺便改一改。

clc;clear
p = @(t) 1*sin(1.0*t); % p(t)函数,自己定义
M = 1;
c = 20;
g = 10;
odefun = @(t,x)[
x(2); % x(2)是速度,积分后对应位移
(p(t)-c*x(2)-(-2.88-27248/(529-x(1)^2)^(3/2)))/M + g; % 这一项是加速度,积分后对应速度
];
x0 = [0;0];%初始速度和初始位移,这里都设为0
tspan = [0 1];%计算时间区间
[t,x] = ode45(odefun, tspan, x0);%求解

figure(1); clf; subplot(1,2,1)
plot(t,x(:,1))
title('位移-时间图')
 subplot(1,2,2)
plot(t,x(:,2))
title('速度-时间图')

figure(2);clf;
plot(x(:,1),x(:,2))
title('速度-位移图(相平面图)')

结果

img

img
具体结果看情况了,影响因素蛮多,我这里是在阻尼较大的情况下,最终物体速度趋于一个固定值