Asked by Billy Bob
on 16 Oct 2019 at 6:56

Hi,

I would like to plot the following functions using Matlab:

dx/dt v. time and ds/dt v. time (with dx/dt on the y axis and time on the x axis)

The expression for dx/dt is given as the following:

---- where S and X are unknown

there is an expression for S in this case:

--- where S and X are unknown.

I know how to plot the above system by converting the differentials to first order and then solving them using 'ode45'. However, this gives me the plots for X v. t and S v. t.

What I would like instead are plot of the differential equations themselves against time. Any help in this regard would be much appreciated!

Answer by Star Strider
on 16 Oct 2019 at 11:41

Edited by Star Strider
on 16 Oct 2019 at 18:02

Accepted Answer

I believe Monod kinetics and curve fitting can help. You are not fitting data, so just use the ODE and ode45 call syntax.

EDIT — (16 Oct 2019 at 17:30)

If you want to plot the differential equations themselves, substitute ‘t’ and ‘y’ back into ‘M’ to get the derivatives:

% Change to First Order%

[V,Sbs] = odeToVectorField([ode1,ode2,ode3])

M = matlabFunction(V,'vars',{'t','Y'})

% Setting Intervals%

interval = [0 1000];

% Initial Conditions%

y0 = [X0 S0 P0];

ysol = ode45(M,interval,y0)

% Graph Plots%

fplot(@(x)deval(ysol,x,1), [0, 35]);

hold on

fplot(@(x)deval(ysol,x,2), [0, 35]);

fplot(@(x)deval(ysol,x,3), [0, 35]);

hold off

legend(string(Sbs))

t = ysol.x;

ys = ysol.y;

for k = 1:numel(t)

dy(:,k) = M(t(k),ys(:,k));

end

figure

plot(t, dy)

grid

legend(string(Sbs))

xlim([0 35])

title('Derivatives')

Alternatively, you can use the gradient function on the solved values of ‘y’, although you would need to specify ‘interval’ as a vector of more than two elements using the linspace function for best results, since gradient prefers regularly-sampled vectors. It all depends on what you want to do.

EDIT — (16 Oct 2019 at 17:59)

The plot image is not appearing when I paste it in, so I attached it as well.

Billy Bob
on 21 Oct 2019 at 0:20

Star Strider
on 21 Oct 2019 at 0:31

As always, my pleasure.

You can take the absolute value of if you like (or the absolute values of all of the derivatives), however I strongly advise against that. The integrated value of decreases for the entire time, then evenutally levels off at 0. The derivative reflects that.

I would not change anything.

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 1 Comment

## darova (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/485609-plotting-bacterial-growth-using-odes#comment_756860

Sign in to comment.