I want to draw dual phase portraits in a 4x4 linear differential equation system. My codes contain 4 variables as below (x1, x2, y1, y2). For a given coefficients matrix, when

8 Ansichten (letzte 30 Tage)
p=0.1; q=15;
x1dom = linspace(-p,p,q);x2dom = linspace(-p,p,q);y1dom = linspace(-p,p,q);y2dom = linspace(-p,p,q);
[X1,X2,Y1,Y2] = ndgrid(x1dom,x2dom,y1dom,y2dom);
A=[1.1 0 0.8 0 ; 0 1.2 0 0 ; 0 0 -0.9 0 ; 0 0 0 -0.5];
X1dot= A(1,1)*X1 + A(1,2)*X2 + A(1,3)*Y1 + A(1,4)*Y2;
X2dot= A(2,1)*X1 + A(2,2)*X2 + A(2,3)*Y1 + A(2,4)*Y2;
Y1dot= A(3,1)*X1 + A(3,2)*X2 + A(3,3)*Y1 + A(3,4)*Y2;
Y2dot= A(4,1)*X1 + A(4,2)*X2 + A(4,3)*Y1 + A(4,4)*Y2;
quiver(X1,X2,X1dot,X2dot)
Error using matlab.graphics.chart.primitive.Quiver/set
Error setting property 'XData' of class 'Quiver':
Value must be an array of numeric type with 3 or fewer dimensions.

Error in quiver (line 81)
set(h,'Parent',parax,'Color_I',c,'LineStyle_I',ls,pvpairs{:});

Akzeptierte Antwort

Wan Ji
Wan Ji am 26 Aug. 2021
Looks like an ode function, so use matlab ode solver to solve it. Here I give an example of ode 45.
A = rand(4,4);
tspan = [0:0.01:1];
x30 = 1;
x40 = 2;
x0 = [0;0;x30;x40];
[t,x] = ode45(@(t,x)A*x,tspan,x0);
plot(x(:,1),x(:,2))
xlabel('x_1')
ylabel('x_2')
title(' phase portrait ')
  1 Kommentar
kadir can erbas
kadir can erbas am 29 Aug. 2021
This script gives a phase portrait for a single initial condition (x1=x2=0). Is there a more advanced script that displays directional trajectories for a few initial x1 and x2 conditions?
Thank You.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by