force input in ode

7 visualizzazioni (ultimi 30 giorni)
Bhanu Pratap Akherya
Bhanu Pratap Akherya il 24 Ago 2021
Modificato: darova il 29 Ago 2021
i have a set of values for the force term "F" (in the equation my"+cy'+ky=F) saved in an excel file which i have recalled using:
F=xlsread('l&d.xlsx','O1:O300');
My main code looks something like:
y0=initial conditions
[tsol ysol]=ode15s('beam_function',[1:dt:T],y0);
plot(tsol,ysol);
whereas, my function code looks something like:
function [dy]=beam_function(t,y)
dy=[y(1:u-1);
inv(M)*(F-K*y(u:end)-C*y(1:u-1))]
The problem is that i want to recall each value of F at different time steps but i dont know how to do that, can anyone guide me?
Note: F here is not time dependent rather it has been taken from results obtained from a simulation software. Then what should be my approach?

Risposta accettata

darova
darova il 24 Ago 2021
You need to pass F into your ode function. Read more: LINK
for i = 1:length(F)
[t,y] = ode45(@(t,y)beam_function(t,y,F(i)),...)
end
function dy = beam_funciton(t,y,F)
  6 Commenti
Bhanu Pratap Akherya
Bhanu Pratap Akherya il 25 Ago 2021
No, I meant how to apply the current F matrix on only the last column of y in ODE. Right now it is being applied on all the columns of y.
darova
darova il 29 Ago 2021
Modificato: darova il 29 Ago 2021
Maybe you need another ode function
function [dy]=beam_function(t,y)
n = numel(y);
dy(n/2) = y(end);
dy(end) = inv(M)*(F-K*y(end)-C*y(end));
And solve it separately

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by