ode45 for 4 DOF system - How to do with Matrices?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jacey Allen
am 2 Dez. 2019
Kommentiert: Indrajit Nandi
am 27 Mär. 2021
Hello! I am trying to do a ode45 code for a 4 dof vibrational system with 4x4 matrices for mass, damping, and stiffness. The vibration differential equation is Mx''+Cx'+Kx=BF(t). I have my code below for the ode45. I converted x to q to get rid of a coefficient matrix on the second derivative and hope to convert back once q is found using ode45. I am running into an error with using vertcat saying "Dimensions of arrays being concatenated are not consistent" with the error being in the dqdt line. Can anyone possibly help? Thanks!
%Part 3b
q0 = rootM*x0;
qdot0 = rootM*v0;
[t,q]=ode45( @rhs, [0 10], [q0;qdot0] );
x_ode = rootinvM*q;
plot(t,x_ode(:,1));
xlabel('t'); ylabel('x');
function dqdt=rhs(t,q)
M = [4,0,0,0;0,3,0,0;0,0,2.5,0;0,0,0,6];
rootM = sqrt(M);
rootinvM = inv(rootM);
C = [4,-1,0,0;-1,2,-1,0;0,-1,2,-1;0,0,-1,1];
K = [500,-100,0,0;-100,200,-100,0;0,-100,200,-100;0,0,-100,100];
B = [0;0;0;1];
C_tilda = rootinvM*C*rootinvM
K_tilda = rootinvM*K*rootinvM
dqdt_1 = q(2);
dqdt_2 = -C_tilda*q(2)-K_tilda*q(1)+rootinvM*B*cos(4*t);
dqdt=[dqdt_1; dqdt_2];
end
3 Kommentare
Indrajit Nandi
am 27 Mär. 2021
I can't get the above code running. Is there anything I need to add to get this code running? I am a beginner user.
Akzeptierte Antwort
Jacey Allen
am 3 Dez. 2019
2 Kommentare
Christopher Smith
am 3 Dez. 2019
I'm running into the same problem you originally had, what did you do to fix the dqdt line?
Weitere Antworten (1)
Steven Lord
am 2 Dez. 2019
Is there a reason you're computing the inverse of the mass matrix and performing that multiplication instead of using odeset to specify the 'Mass' matrix and solve
directly?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/251977/image.png)
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!