How to have multiple lines on a graph for different values of a parameter.

Hello,
I'm trying to vary the parameter 'k' from 0 to 4 in this code. However, there is an error because the blue lines in the plot should not be shooting out to the right. Can anyone see what I am doing wrong?
Thanks!
%Clear command window and workspace
clear
close all
clc
% Fitzhugh-Nagoma model parameters
e=0.01; k=1:1:4; a=0.1;
i = 0.001;
figure(1);
hold on
u=zeros(500000,4);
v=zeros(500000,4);
t=zeros(100000,1);
% Initial conditions:
u(:)=0.6;
v(:)=0.0;
t(1)=0;
dt=0.001;
%==========================================================================
% Forvard Euler Method, for soluing the ODE
%==========================================================================
for i=1:1:500000
t(i+1)=t(i)+dt;
% u(i+1) = u(i)+ dt*((1/e)*((k(:)*u(i)*(u(i)-a)*(1-u(i)))-v(i)));
u(i+1,:) = u(i,:)+ dt*((1/e)*((k*(u(i,:)*(u(i,:)-a)*(1-u(i,:))))-v(i)));
v(i+1,:) = v(i,:)+ dt*(u(i)-v(i));
end
% Getting the phase plot
figure(1);
upts=(-2:.05:2);
unullpts=(k(:)*upts.*(upts-a).*(1-upts));
vnullpts=upts;
plot(upts,unullpts,'black',upts,vnullpts,'black');
xlabel('u'); ylabel('v');
axis([-1 2 -1.5 5]);
plot(u,v,'b')
title('Nullcline Plot')
xlabel('u')
ylabel('v')

 Accepted Answer

EDITED
%Clear command window and workspace
clear
close all
clc
% Fitzhugh-Nagoma model parameters
e=0.01;
k=1:1:4; a=0.1;
i = 0.001;
figure(1);
hold on
u=zeros(500000,4);
v=zeros(500000,4);
t=zeros(100000,1);
% Initial conditions:
u(:)=0.6;
v(:)=0.0;
t(1)=0;
dt=0.001;
%==========================================================================
% Forvard Euler Method, for soluing the ODE
%==========================================================================
for i=1:1:500000
t(i+1)=t(i)+dt;
% u(i+1) = u(i)+ dt*((1/e)*((k(:)*u(i)*(u(i)-a)*(1-u(i)))-v(i)));
u(i+1,:) = u(i,:)+ dt.*((1/e).*((k.*(u(i,:).*(u(i,:)-a).*(1-u(i,:))))-v(i)));
v(i+1,:) = v(i,:)+ dt.*(u(i)-v(i));
end
% Getting the phase plot
figure(1);
upts=(-2:.05:2);
unullpts=(k(1).*upts.*(upts-a).*(1-upts));
vnullpts=upts;
plot(upts,unullpts,'black',upts,vnullpts,'black');
axis([-1 2 -1.5 5]);
hold on
plot(-u,-v,'b')
unullpts=(k(2).*upts.*(upts-a).*(1-upts));
vnullpts=upts;
plot(upts,unullpts,'m');
unullpts=(k(3).*upts.*(upts-a).*(1-upts));
vnullpts=upts;
plot(upts,unullpts,'r');
unullpts=(k(4).*upts.*(upts-a).*(1-upts));
vnullpts=upts;
plot(upts,unullpts,'g');
title('Nullcline Plot')
xlabel('u')
ylabel('v')

11 Comments

Thank you! And do you know how to get the different lines to show up on the graph? Because it's still only plotting one of the solutions.
How many graphs you expect and which one you want to plot against which??
I want to plot the u matrix against the v matrix like in line 39:
plot(u,v,'b')
plot(u(:,1),v(:,1))
hold on
plot(u(:,2),v(:,2))
plot(u(:,3),v(:,3))
plot(u(:,4),v(:,4))
The above comment plot u and v against each other resulting in 4 different plots
If your zoom in the arrowhead you will see 4 different unique colours which represents u and v
Thanks. Is there any way I can put that in some kind of loop? For example, if I wanted to do 20 different values of k I wouldn't have to write the plot line 20 times.
for i = 1:numel(k)
unullpts=(k(i).*upts.*(upts-a).*(1-upts));
vnullpts=upts;
plot(upts,unullpts,'m');
hold on
end
The above does the same work what you want

Sign in to comment.

More Answers (0)

Categories

Find more on Mathematics 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!