Problem Solving Kinematic ODE with Forcing Function
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am trying to set up what I believe is an ODE to solve for the position, velocity, and acceleration of a buoy given the waves incidence. This is dependent upon the forcing funcition of the buoyance force from the wave on the buoy. I have an array for the buoyant force fb, and I am trying to evaluate my kinematic equation: mz" = ks * a(t) - z' * damp - fb * z. The problem is solving ODE45 as the forcing function changes every iteration so my time step is not constant.
for i = 1:(length(IntSteps)-1)
B = fb(i);
dat = 1.2 * sin(IntSteps(i));
tstart = TimeStep * i;
tend = TimeStep * i + .1;
[t, y] = ode45(@odeBuoy,[tstart tend],[0;0]);
end
My ode function may also be set up incorrectly which is as follows.
Réponses (1)
Stephan
le 27 Oct 2020
Modifié(e) : Stephan
le 27 Oct 2020
Define your external force vector as an additional input argument for your ode system. Inside the odeBuoy function use the interp1 function to calculate the force that is correct for the timestep chosen by the solver. Also get rid of the for loop.
Voir également
Catégories
En savoir plus sur Ordinary Differential Equations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!