MATLAB: Using ode45 to plot

ode45

Equations:
df/dt= 4f(t) – 3f(t)p(t)
dp/dt= -2p(t) + f(t)p(t)
Question: Useode45to plot some representative examples of solution trajectories on the time scale[0;5], starting at the following points: (0.5,1), (1.0,5), (1,1), and (1.5,1.5).[Hint.When you define your differential equation,f is y(1)and p is y(2). This will stretch the axes of your graph; that's okay.]
Code:
syms f(t) p(t);
figure; hold on
for c = 0:0.1:5
g = @(f, p) 4*f - 3*f*p;
h = @(f,p) -2*p + f*p;
[f,p] = ode45(g,h, [0,5], c);
end
plot(f, p)
axis tight;
Error: Error using odearguments (line 21) When the first argument to ode45 is a function handle, the tspan argument must have at least two elements.
Error in ode45 (line 115) odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
Error in Project_5_2 (line 23) [f,p] = ode45(g,h, [0,5], c);

Best Answer

Your ‘g’ and ‘h’ functions are not correct. They have to be functions of time and a vector of functions. I tweaked your code a bit. See if this does what you want:
% MAPPING: x(1) = f, x(2) = p
gh = @(t,x) [4*x(1) - 3*x(1).*x(2); -2*x(2) + x(1).*x(2)];
tspan = linspace(0, 5, 250);
figure; hold on
for c = 0:0.1:5
[t,x] = ode45(gh, tspan, [c; c]);
plot(x(:,1), x(:,2))
end
axis tight