How to use ode45 for a row vector
Show older comments
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];
Answers (2)
madhan ravi
on 29 Mar 2020
1 vote
Parametrization and loop through zeta.
3 Comments
Erik Sharrer
on 29 Mar 2020
madhan ravi
on 30 Mar 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
on 30 Mar 2020
Steven Lord
on 29 Mar 2020
0 votes
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 Comment
Erik Sharrer
on 29 Mar 2020
Categories
Find more on Ordinary Differential Equations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!