Oh, Is that the free vibration response (response of the Homogeneous equation)?
explanation of ode45 for constant force
2 views (last 30 days)
Show older comments
I am implementing the shm equation ( m x'' + c x' + k x = F0) in matlab using ode45. The RHS is a constant force (F0). I am still getting an oscillatory response. The steady state response is equal to the static deformation. What is confusing me are the oscillations. What a force with constant magnitude result in an oscillatory response. Is my implementation wrong or my understanding of physics?
The sample code is shown below.
function dydt = sdof_fun(t,y,m,k,c,F)
dydt(1) = y(2);
dydt(2) = (F/m) - (k/m)*y(1) - (c/m)*y(2);
dydt = dydt(:);
end
[t,w] = ode45(@(t,y) sdof_fun(t,y,m,k,c,F),tspan,ic);
2 Comments
Answers (1)
Sam Chak
on 24 Jan 2023
Edited: Sam Chak
on 24 Jan 2023
Hi @Ajinkya
Analysis shows that the steady-state value of
of the linear system is given by


In your case, I guess that the oscillatory response is observed because
. If so, then try extending the simulation time long enough until you see the response converges to
.


Another way is to check the value of the system's damping ratio, given by

If the damping ratio value is very small, then the oscillations die out very slowly. If
, then a critically-damped response will be observed.

The following example shows the convergence, with
so that the oscillations die out faster.

m = 11; % change to 49/20 to observe a critically-damped response
c = 7;
k = 5;
F = 3;
params = [m c k F];
tspan = 0:0.01:30;
ic = [-1 0];
[t, y] = ode45(@(t, y) sdof_fun(t, y, params), tspan, ic);
plot(t, y(:,1), 'linewidth', 1.5), grid on
xlabel('t'), ylabel('y')
title('System Response')
function dydt = sdof_fun(t, y, params)
m = params(1);
c = params(2);
k = params(3);
F = params(4);
dydt(1) = y(2);
dydt(2) = (F/m) - (k/m)*y(1) - (c/m)*y(2);
dydt = dydt(:);
end
0 Comments
See Also
Categories
Find more on Ordinary Differential Equations in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!