% A script to plot vector fields of 2 dim continuous systems % % The system is of the form x' = f(x) % % The function "f" is defined in a file called "rhs.m" % resolution = 10; % increase this for more arrows global RHSNAME; disp('Vector field generator'); setrhs; xrange = input('Please enter the x range [0 1] -> '); n = length(xrange); if (n > 2), xrange = xrange(1:2); end; if (n == 1), xrange(2) = xrange(1)+1; end; if (n == 0), xrange = [ 0 1]; end; yrange = input('Please enter the y range [0 1] -> '); n = length(yrange); if (n > 2), yrange = yrange(1:2); end; if (n == 1), yrange(2) = yrange(1)+1; end; if (n == 0), yrange = [ 0 1]; end; disp('Working.'); dx = xrange(2)-xrange(1); dy = yrange(2)-yrange(1); xlist = [xrange(1) : dx/10 : xrange(2) ]; ylist = [yrange(1) : dy/10 : yrange(2) ]; nx = length(xlist); ny = length(ylist); dx = zeros(nx,ny); dy = zeros(nx,ny); for ii=1:nx, for jj=1:ny xx = [xlist(ii);ylist(jj)]; yy = feval(RHSNAME,xx); dx(ii,jj) = yy(1); dy(ii,jj) = yy(2); end;end; disp('Done! Plotting graph.'); quiver(xlist,ylist,dx',dy'); axis([ xrange(1) , xrange(2), yrange(1), yrange(2)]); axis('normal');