2 views (last 30 days)

Hi.I have a question that may be so elementary but so far I haven't found a solution. please if it is possible guide me.

i want to solve the 2nd order diffrential equation for vibration of 3DOF system.the equation is : [m]*{x"} + [C]*{x'} + [K]*{X} = -[M]*{r} d2g/dt2

that M is mass matrix . K , C are stiffness and damping matrices that should be update in every time step.also {r} = [ 0;0;1] and g" is the time-dependent external acceleration.(earthquake records).

for updating K and C matrices,i wrote a cod in matlab contains a for-loop that in every time step (=0.5 second) first update [K] and [C] matrices and then use ode45 to solve equation for time span=0.5 second.but i get suspicious result.for example ode45 output for every time span=0.5 second outputs a 61*1 vector but i think output should be a 6*1 vector like this : [x1; x'1; x2; x'2 ;x3;x'3]

can you tell me where is the problem? maybe i use ode45 in wrong method.

i attach my code to this question.

thank you for your help.

darova
on 13 Jan 2020

I made some changes in your code. Pay attention to refreshing parameters:

function sdot = ODEFUN(t,x)

g1 = interp1(TIME,G,t);

ag1 = interp1(TIME,AG,t);

%% ...

end

Also i didn't refresh C and K matrices (don't know how)

See attached file

Walter Roberson
on 15 Jan 2020

Sign in to comment.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.