MATLAB Answers

0

How to plot for different values of parameters on one run?

Asked by parag gupta on 30 Jul 2019
Latest activity Commented on by parag gupta on 2 Aug 2019
How to get the plots for different values of aplha = 2,3,4,5 on one run and how to merge all those graphs ?
function [t,y] = call_dstate()
tspan = [0 9]; % set time interval
y0 = 10; % set initial condition
% dstate evaluates r.h.s. of the ode
[t,y] = ode45( @dstate ,tspan ,y0);
plot(t,y)
disp([t,y]) % displays t and y(t)
function dydt = dstate (t,y)
alpha=2; gamma=0.0001;
dydt = alpha* y-gamma *y^2;
end
end

  0 Comments

Sign in to comment.

1 Answer

Answer by David K.
on 30 Jul 2019
 Accepted Answer

Matlab actually has a page on this called Parameterizing Functions.
Using one of the options for that I believe this will do it for you. This works because the nested function can use variables created in the outer function.
function [t,y] = call_dstate()
tspan = [0 9]; % set time interval
y0 = 10; % set initial condition
% dstate evaluates r.h.s. of the ode
gamma=0.0001;
for alpha = 2:5
[t,y] = ode45( @dstate ,tspan ,y0);
plot(t,y); hold on;
end
disp([t,y]) % displays t and y(t)
function dydt = dstate (t,y)
dydt = alpha* y-gamma *y^2;
end
end

  3 Comments

Thanks! How I will get to know which graph in the plot is for alpha = 2 and which one for alpha = 5?
I have attached the graph I got by running the above code.
I may be wrong but it looks like you chose a color for the plot to use. So first I would suggest letting it choose a different color for each. Or if you want to do it manually you can create an array to set them yourself like this
color = {'r','m','b','c'}
for alpha = 2:5
[t,y] = ode45( @dstate ,tspan ,y0);
plot(t,y,color{alpha-1}); hold on;
end
Then you can add a legend after they are all plotted like this
for alpha = 2:5
...
end
legend('a=2','a=3','a=4','a=5')
And a legend will show up indicating which color plot corresponds to each alpha

Sign in to comment.