How to use ode45 for a row vector

2 visualizaciones (últimos 30 días)
Erik Sharrer
Erik Sharrer el 29 de Mzo. de 2020
Comentada: Erik Sharrer el 30 de Mzo. de 2020
function v = f(t,x);
zeta=0.9
m=5; k=1000;
c=2.*zeta.*sqrt(m*k);
v=[x(2); x(1).*-k/m+x(2).*-c./m];
end
and
clear all
xo=[0.05; 0];
ts=[0 3];
[t,x]=ode45('f',ts,xo);
figure(1)
plot(t,x(:,1))
I was wondering how I can make this plot work with multiple zeta values
zeta=[0, 0.1, 0.25, 0.5, 0.75, 0.9, 1];

Respuestas (2)

madhan ravi
madhan ravi el 29 de Mzo. de 2020
Parametrization and loop through zeta.
  3 comentarios
madhan ravi
madhan ravi el 30 de Mzo. de 2020
xo=[0.05; 0];
ts=[0 3];
zeta = ... values;
na = sprintfc('zeta=%.2f',zeta); % use compose() in later versions
for zeta = zeta
[t,x]=ode45(@(t,x)myfun(t,x,zeta),ts,xo);
plot(t,x(:,1))
hold on
end
function v = myfun(t,x,zeta)
m=5; k=1000;
c=2.*zeta.*sqrt(m*k);
v=[x(2); x(1).*-k/m+x(2).*-c./m];
end
Erik Sharrer
Erik Sharrer el 30 de Mzo. de 2020
what does 'zeta=%.2f' mean?

Iniciar sesión para comentar.


Steven Lord
Steven Lord el 29 de Mzo. de 2020
See the "Pass Extra Parameters to ODE Function" example on the documentation page for the ode45 function. You can use it as a model for your code.
  1 comentario
Erik Sharrer
Erik Sharrer el 29 de Mzo. de 2020
I still would need to use a loop though right?

Iniciar sesión para comentar.

Categorías

Más información sobre Ordinary Differential Equations en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by