I am trying to calculate the response of a vibrating cantilever beam using ode45 function. There is no error in the code but when i run the code it takes to long to produce the result. I am not sure where i made a mistake. Can someone help me

4 ビュー (過去 30 日間)
MATLAB code
width = 5;
height = 0.1;
% The material is steel
E = 3.0e7;
nu = 0.3;
rho = 0.3/386;
% Calculate the coefficient matrix from the material properties
%G = E/(2.*(1+nu));
%mu = 2.0*G*nu/(1-nu);
I = height^3/12;
A = height*width;
% From beam theory, there is a simple expression for the lowest vibration
% frequency of the cantilever beam.
omegasq = 7.885^4*E*I/(rho*A*width^4);
beam=@(t,y)[y(2);(-(2*1*omegasq*y(2))-(omegasq^2*y(1)))];
ic= [0;5];
tspan = [0:5];
[t,y]=ode45(beam,tspan,ic);
plot(t,y), title ('Time vs Displacement')
grid on
hold on

採用された回答

Steven Lord
Steven Lord 2017 年 8 月 21 日
Your problem is stiff. Let's substitute in symbolic values for y and see what your ODE function will return.
>> vpa(beam(1, [sym('y1'); sym('y2')]))
ans =
y2
- 1583163086609297.0*y1 - 79577963.950060874223709106445312*y2
A small change in either y1 or y2 results in a huge change in dy2/dt and thus a huge change in y2 at the next time step. So the ODE solver needs to take very, very small steps. You can see this if you plot your ODE:
[t,y]=ode45(beam,tspan,ic, odeset('OutputFcn', @odeplot));
Let that run for a minute or two and see that progress is being made, but it is being made very slowly. You may want to zoom in around y = 0, x between 0 and 0.01. Now let's try this same experiment but with a stiffer solver like ode15s:
[t,y]=ode15s(beam,tspan,ic, odeset('OutputFcn', @odeplot));
The plot (and the ODE solver) finished too quickly for me to see the individual time steps being plotted except as a bit of flicker.
  5 件のコメント
Aravind Krishnamoorthi
Aravind Krishnamoorthi 2017 年 8 月 22 日
@StevenLord Thank you for the reply. It worked out fine..

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeOrdinary Differential Equations についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by