MATLAB Answers

Quiver with a system of ODEs.

133 views (last 30 days)
Johan Bergman
Johan Bergman on 6 Dec 2019
Commented: darova on 9 Dec 2019
Hello everyone.
I am trying to plot the solutions to a system of ODEs to see how it matches to the field that quiver would plot.
The system:
x' = cos(x-y) , x(0) = x0
y' = sin(x*y) , y(0) = y0
Unsure whether I managed to translate the system into Matlab, but here is the code:
f = @(x,y) [cos(y(1)-y(2)) sin(y(1).*y(2))]
The rest of the script:
x = linspace(0,3);
y = linspace(0,3);
grid on
[X,Y] = meshgrid(x,y);
u = ???; v = ???;
quiver(X, Y, u, v, 0.9)
hold on
y0 = 1;
x0 = 2;
[T,Y] = ode45(f,[0 3],[x0; y0]);
I don't understand how you're suppposed to use quiver. I don't quite understand what the help documentation is saying about "u" and "v". I want to see how the solutions follow the vector field produced by quiver but have no idea how to define u or v. The inital conditions y0 and x0 can be varied to see how the solutions would follow the vector field. Thanks a lot!


Show 5 older comments
Johan Bergman
Johan Bergman on 9 Dec 2019
Ah, yes I understand. Thanks a lot for the help!
Adam Danz
Adam Danz on 9 Dec 2019
@darova , perhaps your comment could be copied to the answers section so Johan Bergman can accept it.
darova on 9 Dec 2019
I agree, Adam. Thanks bro

Sign in to comment.

Answers (1)

darova on 9 Dec 2019
For vector field
u = x'; v = y';
To plot the curve
[T,Y] = ode45 ...
plot(Y(:,1),Y(:,2)) % (x,y)
I suppose x and y depends on t (time). As you assumed above
% f = @(x,y) [cos(y(1)-y(2)) sin(y(1).*y(2))]
f = @(t,u) [cos(u(1)-u(2)) sin(u(1).*u(2))]
[T,U] = ode45 ...
% u(1) == U(:,1) == x
% u(2) == U(:,2) == y


Sign in to comment.




Community Treasure Hunt

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

Start Hunting!