MATLAB: Solving 2nd order nonlinear ode Numeric solution by using ode45

2nd order nonlinear odenonlinear odeodeode45

the eqution
d^2u/dt -k(1-u^2)du/dt+au = 0
initial condition
u(0)=2 (dimensionless); du/dt (0)=0
question
(a) With ?? = 1.0 s-1, determine the value of ?? that would give a heart rate of 1.25 beats/second and Graphically display ??(t) for this value of ?? and 0 ≤ t≤ 5 ?? . (25 points).
(b) Graphically display ??(t) for your chosen values ?? and ?? and 0 ≤ t ≤ 5 ?? . Interpret the results.

Best Answer

This is the basic structure for solving the ode.
u0 = 2;
v0 = 0;
tspan = [0 5];
k = 1;
a = 25;
[t,U] = ode45(@odefn, tspan, [u0 v0],[],k,a);
u = U(:,1);
v = U(:,2);
plot(t,u),grid
xlabel('t'),ylabel('u')
function dUdt = odefn(~,U,k,a)
u = U(1);
v = U(2); % v = du/dt
dvdt = k*(1-u^2)*v - a*u;
dUdt = [v;
dvdt];
end
You could investigate fzero to get the value of k that gives 1.25 beats/sec, or adjust it manually (as I did here to get an approximate value).
Related Question