ODE solver for second Order ODE with Stiffness and Mass Matrices

Click For Summary
SUMMARY

This discussion focuses on solving a second-order ordinary differential equation (ODE) in MATLAB using the ODE45 function. The equation is represented in matrix form as M*u'' + K*u = F(t), where M is the mass matrix and K is the stiffness matrix. The user provides a specific force vector F(t) = [F0*sin(w*t), 0, 0, 0] and mentions that both M and K are 4x4 matrices. The solution involves setting initial conditions and organizing the code into separate scripts for proper execution.

PREREQUISITES
  • Understanding of second-order ordinary differential equations
  • Familiarity with MATLAB programming and syntax
  • Knowledge of matrix operations in MATLAB
  • Basic concepts of stiffness and mass matrices in mechanical systems
NEXT STEPS
  • Learn how to implement MATLAB's ODE45 function for solving differential equations
  • Research the formulation of mass and stiffness matrices in dynamic systems
  • Explore MATLAB's plotting functions for visualizing ODE solutions
  • Study initial condition setup for ODEs in matrix form
USEFUL FOR

This discussion is beneficial for MATLAB users, mechanical engineers, and researchers working on dynamic systems involving second-order ODEs, particularly those dealing with stiffness and mass matrices.

ihebmtir
Messages
3
Reaction score
0
TL;DR
i have encoutered this Problem where i need to solve an ordinary differential Equation using ODE45 for M*u''+K*u=f(t)
i am new to MATLAB and and as shown below I have a second order differential equation M*u''+K*u=F(t) where M is the mass matrix and K is the stifness matrix and u is the displacement.
and i have to write a code for MATLAB using ODE45 to get a solution for u. there was not so much information on how to solve an ODE that´'s written on Matrix form, i would be really thankful for you help
 

Attachments

  • frage.png
    frage.png
    4.5 KB · Views: 199
Engineering news on Phys.org
Do you have a definition for the vector {f(t)}?
 
yes F(t)=[F0*sin(w*t), 0, 0, 0]
and Both M and K are 4X4 Matrices
 
Obviously you will need some initial conditions as well. I will attach a similar example problem and solution code.

It can be a little tricky getting the code to run. You should save the lower function in a separate script (called "f" in this case - since that's what the ode45 function calls) in the working folder. The upper part is what you will run and it calls the other function. There's probably a more elegant way of doing it, but I don't know it.
1624567411995.png

1624567424651.png

xo=[0; 0.1; 1; 0];
ts=[0 20];
[t,x]=ode45('f',ts,xo);
plot(t,x(:,1),t,x(:,2),'--')
%------------------------------------------
function v=f(t,x)
M=[2 0; 0 1];
C=[3 -0.5; -0.5 0.5];
K=[3 -1; -1 1];
B=[1; 1];
w=2;
A1=[zeros(2) eye(2); -inv(M)*K -inv(M)*C];
f=inv(M)*B;
v=A1*x+[0;0; f]*sin(w*t);
 

Similar threads

Replies
4
Views
3K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 2 ·
Replies
2
Views
4K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
5K