Asked by Nani C
on 7 May 2012

Hi, Having solved a second order equation of motion using ode45 function i wonder how could i modify the function to solve a whole system of equations in matrix form [A]{xdoubledot}+[B]{xdot}+[c]{x}={p(t)}, instead of solving individual equations for x vector variables. Would that be possible ?

*No products are associated with this question.*

Answer by Richard Brown
on 7 May 2012

Accepted answer

Yes, certainly possible. The basic approach would be to turn it into a system of first order odes of twice the dimension as follows (where x and xdot are vectors):

y1 = x y2 = xdot

then, if `A` is invertible

y1' = y2 y2' = A \ (-B*y2 - c*y1 + p(t))

You'd then write a file to implement this in MATLAB like this

function dy = myode(t, y) n = numel(y)/2; y1 = y(1:n); y2 = y(n+1:2*n); dy = [y2; A \ (-B*y2 - c*y1 + p(t)) end

and solve it with `ode45` (or whichever solver happens to be most suitable) as usual.

Jan Simon
on 7 May 2012

Opportunities for recent engineering grads.

## 0 Comments