Filter löschen
Filter löschen

How to use ode45 for a row vector

1 Ansicht (letzte 30 Tage)
Erik Sharrer
Erik Sharrer am 29 Mär. 2020
Kommentiert: Erik Sharrer am 30 Mär. 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];

Antworten (2)

madhan ravi
madhan ravi am 29 Mär. 2020
Parametrization and loop through zeta.
  3 Kommentare
madhan ravi
madhan ravi am 30 Mär. 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 am 30 Mär. 2020
what does 'zeta=%.2f' mean?

Melden Sie sich an, um zu kommentieren.


Steven Lord
Steven Lord am 29 Mär. 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 Kommentar
Erik Sharrer
Erik Sharrer am 29 Mär. 2020
I still would need to use a loop though right?

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by