ode45
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 ?
0 comentarios
Respuesta aceptada
Richard Brown
el 7 de Mayo de 2012
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.
2 comentarios
Jan
el 7 de Mayo de 2012
You can convert an ODE of degree 2 for an n-dimensional vector to an ODE of degree 1 for a 2n-dimensional vector. This means "twice the dimensions". In other words: Instead of calculating the 1st and 2nd derivative of the position, you calculate the 1st derivative of the position and the velocity.
Más respuestas (0)
Ver también
Categorías
Más información sobre Ordinary Differential Equations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!