Effacer les filtres
Effacer les filtres

How to plot nullclines with differential equations

48 vues (au cours des 30 derniers jours)
Zachary David
Zachary David le 4 Oct 2021
Im trying to plot nullclines on top of a mesh grid then use ode 45
i cant seem to get the nullclines on their though after googling for hours. This is my code:
x1min = -1; x1max = 6; x2min = -1; x2max = 6;
x1step = 0.3; x2step = 0.3;
[x1, x2] = meshgrid(x1min:x1step:x1max, x2min:x2step:x2max);
a = 1.5;
b=1.1;
g=2.5;
d=1.4;
dx1 = -a*x1+b*x1*x2;
dx2 = g*x2-d*x1*x2;
nullX1= -a + b.*x2;
nullX2= g - d.*x1;
quiver(x1, x2, dx1,dx2,'AutoScaleFactor',0.5)
axis([x1min x1max x2min x2max])
xlabel('$x1$','Interpreter','latex')
ylabel('$x2$','Interpreter','latex')
title('Vector field example','Interpreter','latex')
x=0:0.5:30;
plot(x,nullX1,'r-')
hold on
plot(x,nullX2,'k-')
hold on
*****It keeps telling my my vectors must be the same length, so not sure if im using the wrong parameters.
Thanks!

Réponse acceptée

Star Strider
Star Strider le 4 Oct 2021
Work-around —
x = linspace(0, 30, size(nullX1,1)); % Use 'linspace' To Create Correct Length 'x'
x1min = -1; x1max = 6; x2min = -1; x2max = 6;
x1step = 0.3; x2step = 0.3;
[x1, x2] = meshgrid(x1min:x1step:x1max, x2min:x2step:x2max);
a = 1.5;
b=1.1;
g=2.5;
d=1.4;
dx1 = -a*x1+b*x1*x2;
dx2 = g*x2-d*x1*x2;
nullX1= -a + b.*x2
nullX1 = 24×24
-2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.6000 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -2.2700 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.9400 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.6100 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -1.2800 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.9500 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.6200 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 -0.2900 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.0400 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700 0.3700
nullX2= g - d.*x1
nullX2 = 24×24
3.9000 3.4800 3.0600 2.6400 2.2200 1.8000 1.3800 0.9600 0.5400 0.1200 -0.3000 -0.7200 -1.1400 -1.5600 -1.9800 -2.4000 -2.8200 -3.2400 -3.6600 -4.0800 -4.5000 -4.9200 -5.3400 -5.7600 3.9000 3.4800 3.0600 2.6400 2.2200 1.8000 1.3800 0.9600 0.5400 0.1200 -0.3000 -0.7200 -1.1400 -1.5600 -1.9800 -2.4000 -2.8200 -3.2400 -3.6600 -4.0800 -4.5000 -4.9200 -5.3400 -5.7600 3.9000 3.4800 3.0600 2.6400 2.2200 1.8000 1.3800 0.9600 0.5400 0.1200 -0.3000 -0.7200 -1.1400 -1.5600 -1.9800 -2.4000 -2.8200 -3.2400 -3.6600 -4.0800 -4.5000 -4.9200 -5.3400 -5.7600 3.9000 3.4800 3.0600 2.6400 2.2200 1.8000 1.3800 0.9600 0.5400 0.1200 -0.3000 -0.7200 -1.1400 -1.5600 -1.9800 -2.4000 -2.8200 -3.2400 -3.6600 -4.0800 -4.5000 -4.9200 -5.3400 -5.7600 3.9000 3.4800 3.0600 2.6400 2.2200 1.8000 1.3800 0.9600 0.5400 0.1200 -0.3000 -0.7200 -1.1400 -1.5600 -1.9800 -2.4000 -2.8200 -3.2400 -3.6600 -4.0800 -4.5000 -4.9200 -5.3400 -5.7600 3.9000 3.4800 3.0600 2.6400 2.2200 1.8000 1.3800 0.9600 0.5400 0.1200 -0.3000 -0.7200 -1.1400 -1.5600 -1.9800 -2.4000 -2.8200 -3.2400 -3.6600 -4.0800 -4.5000 -4.9200 -5.3400 -5.7600 3.9000 3.4800 3.0600 2.6400 2.2200 1.8000 1.3800 0.9600 0.5400 0.1200 -0.3000 -0.7200 -1.1400 -1.5600 -1.9800 -2.4000 -2.8200 -3.2400 -3.6600 -4.0800 -4.5000 -4.9200 -5.3400 -5.7600 3.9000 3.4800 3.0600 2.6400 2.2200 1.8000 1.3800 0.9600 0.5400 0.1200 -0.3000 -0.7200 -1.1400 -1.5600 -1.9800 -2.4000 -2.8200 -3.2400 -3.6600 -4.0800 -4.5000 -4.9200 -5.3400 -5.7600 3.9000 3.4800 3.0600 2.6400 2.2200 1.8000 1.3800 0.9600 0.5400 0.1200 -0.3000 -0.7200 -1.1400 -1.5600 -1.9800 -2.4000 -2.8200 -3.2400 -3.6600 -4.0800 -4.5000 -4.9200 -5.3400 -5.7600 3.9000 3.4800 3.0600 2.6400 2.2200 1.8000 1.3800 0.9600 0.5400 0.1200 -0.3000 -0.7200 -1.1400 -1.5600 -1.9800 -2.4000 -2.8200 -3.2400 -3.6600 -4.0800 -4.5000 -4.9200 -5.3400 -5.7600
quiver(x1, x2, dx1,dx2,'AutoScaleFactor',0.5)
axis([x1min x1max x2min x2max])
xlabel('$x1$','Interpreter','latex')
ylabel('$x2$','Interpreter','latex')
title('Vector field example','Interpreter','latex')
% x=0:0.5:30;
x = linspace(0, 30, size(nullX1,1)); % Use 'linspace' To Create Correct Length 'x'
plot(x,nullX1,'r-')
hold on
plot(x,nullX2,'k-')
hold on
Experiment to get different results.
.

Plus de réponses (0)

Catégories

En savoir plus sur Numerical Integration and Differential Equations dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by